산술 연산자 : +, -, *, /, %, //, **
할당 연산자 : =, +=, -=, *=, /=, %=, //=
비교 연산자 : >, >=, <, <=, ==, !=
논리 연산자 : and, or, not
result = num1 + num2 print(f'result : {result}')
result = fnum1 + fnum2 print(f'result : {result}')
result = num1 + fnum2 print(f'result : {result}')
str1 = 'Good' str2 = ' ' str3 = 'morning result = str1 + str2 + str3 print(f'result : {result}')
result = num1 + str1 print(f'result : {result}')
result = num1 - num2 print(f'result : {result}')
result = fnum1 - fnum2 print(f'result : {result}')
result = num1 - fnum2 print(f'result : {result}')
str1 = 'Good' str2 = ' ' str3 = 'morning result = str1 - str2 - str3 print(f'result : {result}') -> TypeError
result = num1 * fnum2 print('result : {}' .format(result)) print('result : %.2f' % result)
str1 = 'Hi ' result = str1 * 7 print('result : {}' .format(result))
result = num1 / fnum2 print('result : {}' .format(result)) print('result : %.2f' % result)
0을 나눗셈 하는 경우
결과는 항상 0
0으로 나누는 경우
0으로 나눌수 없다
나눗셈 결과는 항상 float이다
result = num1 % num2 print('num1: {}, num2: {}, result: {}' .format(num1, num2, result))
result = divmod(num1, num2) print('result : {}' .format(result))
result = num1 ** num2 print('result : {}' .format(result))
result = 2 ** (1/2) print('2의 제곱근 %f' % result) -> 2의 제곱근 1.414214
<math 모듈의 sqrt()와 pow()함수>
import math print('2의 제곱근 %f' % math.sqrt(2)) -> 2의 제곱근 1.414214
import math print('2의 3제곱 %f' % math.pow(2, 3)) -> 2의 3제곱근 8.000000
num1 > num2 : True num1 >= num2 : True num1 < num2 : False num1 <= num2 : False num1 == num2 : False num1 != num2 : True
아스키 코드를 이용한 비교연산
대문자와 소문자 값이 다름
[문자와 아스키 코드 변환]
ord -> 문자를 십진수(정수)로 표현
print('\'A\' -> {}' .format(ord('A'))) print('\'S\' -> {}' .format(ord('S'))) 'A' -> 65 'S' -> 65
chr -> 십진수(정수)를 문자로 표현
print('65 -> {}' .format(chr(65))) print('83 -> {}' .format(chr(83))) 'A' -> 65 'S' -> 65
Hello == hello : False Hello != hello : True
and 연산
A와 B 모두 True인 경우만 결과 값으로 True이다
or 연산
A와 B중 어느하나만 True이면 결과 값은 True이다
not 연산
A의 상태를 부정하는 결과를 나타낸다
import operator 후 사용
산술 연산자 관련 함수
비교 연산자 관련 함수
numResult = True if num1 > num2 else False print('num1 > num2 : {}' .format(numResualt)) -> num1 > num2 : False
[실습 문제]
import operator passScore1 = 60 passScore2 = 70 kor = int(input('국어 점수 : ')) eng = int(input('영어 점수 : ')) mat = int(input('수학 점수 : ')) totalScore = kor + eng + mat scoreAvg = totalScore / 3 print('국어 : PASS') if operator.ge(kor, passScore1) else print('국어 : FAIL') print('영어 : PASS') if operator.ge(eng, passScore1) else print('영어 : FAIL') print('국어 : PASS') if operator.ge(mat, passScore1) else print('수학 : FAIL') print('충점 : %d, 평균 : %.2f' % (totalScore, scoreAvg))
if문
if num1 <= num2: print('num1은 num2보다 작거나 같다')
if ~ else문
조건식 결과에 따라 둘 중 하나가 실행됨
if myScore >= passScore: print('PASS!!') else: print('FAIL!!')
- pass 키워드
비워둘때 사용- len
길이를 측정할때 사용
[조건식의 두가지 사용법]
print('포인트 사용 가능') if userPoint >= minAblePoint else print('포인트 사용 불가능')
result = '가능' if userPoint >= minAblePoint else '불가능' print('포인트 사용 가능 여부 : {}' .format(result))
모든 조건식은 if ~ else문으로 변경할수있다
모든 if ~ else문을 조건식으로 변경할 수 있는 것은 아니다
if ~ elif문
여러 가지 조건식 결과에 따라 실행문이 결정됨
if exampleScore >= 90: grades = 'A' elif exampleScore >= 80: grades = 'B' elif exampleScore >= 70: grades = 'c' elif exampleScore >= 60: grades = 'D' else: grades = 'F' print('성적: {} \t 학점: {}'.format(exampleScore, grades))
[주의할 점]
조건식 순서가 중요하다
조건식 위부터 순차적으로 내려감
조건 범위를 명시한다
selectNum = int(input('출퇴근 대상자 인가요? 1.Yes \t 2.No')) if selectNum == 1: print('교통수단을 선택하세요') trans = int(input('1.도보, 자전거 \t 2.버스, 지하철 \t 3.자가용')) if trans == 1: print('세금 감면 5%') elif trans == 2: print('세금 감면 3%') elif trans == 3: print('세금 감면 1%') elif selectNum == 2: print('세금 변동 없습니다') else: print('잘못 입력했습니다')
for i in range(1, 10): print('{} * {} = {}' .format(2, i, (2 * i)))
[반복문의 종류]
for i in range(100): print('i -> {}' .format(i))
num = 0 while (num < 10): print('num -> {}' .format(num)) num += 1
for i in range(1, 11, 1): -> 1부터 10까지 1씩 증가
for i in range(1, 11): -> 1부터 10까지 1씩 증가
for i in range(11): -> 1부터 10까지 1씩 증가
반복문을 빠져나올 수 없는 경우를 무한루프라고 한다
while문에서 조건식의 결과가 항상 True인 경우
n += 1을 사용하여 무한루프에서 빠져나올 수 있다
if문을 사용하여 중단시킬 수 있다
flag = True num = 0 sum = 0 while flag: num += 1 sum += num print('{}까지의 합은 {}입니다' .format(num, sum))
if sum >= 1000: flag = False
for i in range(100): if i % 7 != 0: continue print('{}는 7의 배수입니다' .format(i))
cnt = 0 for i in range(100): if i % 7 != 0: continue print('{}는 7의 배수입니다' .format(i)) cnt += 1
else: print('99까지의 정수 중 7의 배수는 {}개입니다' .format(cnt))
num = 0 while True: print('Hello~') num += 1 if (num >= 5): break
sum = 0 searchNum = 0 for i in range(100): sum += i if sum > 100: searchNum = i break
for i in range(1, 10): for j in range(i): print('*', end='') -> end=''(개행을 하지 않게 해줌) print() -> (개행을 하게 해줌)
무한루프에 빠진 코드를 무한루프에서 나오게하는 것과 중첩 반복문으로 *을 나열하여 모양을 만들었던것이 가장 신선했고 기억에 남는다
for문을 while문으로 바꾸거나 while문을 for문으로 바꾸는 과정이 아직 완벽하지 않은 것 같다
파이썬은 다시봐도 가끔 까먹었거나 잘 몰랐던 부분이 나오는 것 같다
기초부터 차근차근히 쌓아가야겠다
내일은 문제풀이 41 ~ 58번까지 학습 할 예정이다