728x90
1. 연산자 소개
수식을 구성하는 다양한 연산자
- 산술 연산자
- 복합 대입 연산자
- 관계 연산자
- 논리 연산자
- 비트 연산자
2. 산술 연산자
: 더하기, 빼기, 곱하기, 나누기, 몫, 나머지를 구하기 위해 사용되는 연산자
연산자 기호
덧셈 | + |
뺄셈 | - |
곱셈 | * |
나눗셈 | / |
몫 | // |
나머지 | % |
덧셈 연산자 : +
x = 300 + 800 + 200 + 700
print(x)
뺄셈 연산자 : -
x = 5000 - 900 - 1100 - 1200
print(x)
곱셈 연산자 : *
x = 1 * 2 * 3 * 4 * 5
print(x)
나눗셈 연산자 : /
x = 70 / 4
print(x)
몫 연산자 : //
x = 100 // 7
print(x)
나머지 연산자 : %
x = 100 % 7
print(x)
몫을 구하는 연산자(//)와 나머지를 구하는 연산자(%) 예제
input_minute = 601
hour = input_minute // 60
minute = input_minute % 60
print(hour, '시간', minute, '분')
3. 복합 대입 연산자
산술 연산자와 대입 연산자를 합친 연산자
복합 대입 연산자 사용 예 의미
+= | i += j | i = i + j |
-= | i -= j | i = i - j |
*= | i *= j | i = i * j |
/= | i /= j | i = i / j |
%= | i %= j | i = i % j |
복합 대입 연산자 예제 : +=
bread_price = 100
soda_price = 300
butter_price = 400
sum = bread_price
sum += soda_price
sum += butter_price
print("total price:", sum)
4. 관계 연산자
두 피연산자를 비교하는 연산자
관계 연산자는 True(참) 또는 False(거짓)으로 결과 표현
관계 연산자 사용 예 의미
> | i > j | i가 j보다 큰가? |
>= | i >= j | i가 j보다 크거나 같은가? |
< | i < j | i가 j보다 작은가? |
<= | i <= j | i가 j보다 작거나 같은가? |
== | i == j | i와 j가 같은가? |
!= | i != j | i와 j가 같지 않은가? |
정수 비교
x = 32
y = 78
print(x >= y)
실수 비교
x = 3.14
y = 7.89
print(x > y)
문자열 비교
x = 'good'
y = 'good'
print(x == y)
x = 'good'
y = 'morning'
print(x > y)
# 사전 상 순서
5. 논리 연산자
피연산자의 조건에 따라서 True(참) 또는 False(거짓)으로 결과 표현
논리 연산자 사용 예 의미
and | i and j | i와 j가 모두 True이면 True 반환 |
그렇지 않으면 False 반환 | ||
or | i or j | i와 j 중에서 하나라도 True이면 True 반환 |
i와 j가 모두 False이면 False 반환 | ||
not | not i | i가 True이면 False 반환 |
i가 False이면 True 반 |
and 연산자
w = 25
x = 72
y = 'good'
z = 'evening'
print(w < x and y == z)
or 연산자
w = 3.14
x = 7.89
y = 'good'
z = 'morning'
print(w > x or y == z)
not 연산자
y = 'good'
z = 'morning'
s = y != z
print(not s)
6. 비트 연산자
비트 연산자는 숫자(정수)의 각 비트에 대한 연산 수행
& 비트 연산자
비트가 1과 1이면 1을 반환, 그 외의 경우에는 0을 반환
op1 = 10
op2 = 12
print('binary notation of', op1, ':', bin(op1))
print('binary notation of', op2, ':', bin(op2))
result = op1 & op2
print('binary notaton of', result, ':', bin(result))
| 비트 연산자
비트가 0과 0이면 0을 반환, 그 외의 경우에는 1을 반환
op1 = 10
op2 = 12
print('binary notation of', op1, ':', bin(op1))
print('binary notation of', op2, ':', bin(op2))
result = op1 | op2
print('binary notaton of', result, ':', bin(result))
^ 비트 연산자
비트가 서로 다른 경우(1과 0 또는 0과 1)이면 1을 반환, 그 외의 경우에는 0을 반
op1 = 10
op2 = 12
print('binary notation of', op1, ':', bin(op1))
print('binary notation of', op2, ':', bin(op2))
result = op1 ^ op2
print('binary notaton of', result, ':', bin(result))
~ 비트 연산자
비트가 0이면 1을 반환, 비트가 1이면 0을 반
op1 = 0b0101
op2 = 0b1111
result = ~op1&op2
print('result:', bin(result), ', decimal notation:', result)
시프트 연산자
- 왼쪽 시프트 연산자(<<) : 한 비트를 왼쪽으로 이동하는 것은 2의 곱을 의미
- 오른쪽 시프트 연산자(>>) : 한 비트를 오른쪽으로 이동하는 것은 2로 나눔을 의미
op1 = 10
print('binary notation of ', op1, ':', bin(op1))
result = op1 << 1
print(op1, '<< 1 =>', result)
print('binary notation of ', result, ':', bin(result))
op2 = 12
print('binary notation of ', op2, ':', bin(op2))
result = op2 >> 1
print(op2, '>> 1 =>', result)
print('binary notation of ', result, ':', bin(result))
문자열 출력
f-string을 이용한 문자열에 값의 대입
num1 = 500
num2 = 900
sum = num1 + num2
unit = 'meters'
print(f'{num1} + {num2} = {sum}{unit}')
year = 2022
month = 8
day = 10
print(f'{year}년 {month}월 {day}일')
7. 실습예제
입력받은 초(second)를 시간, 분, 초로 환산하는 문제
- 문제 : ‘초 입력(second):’이라는 입력 안내 메시지를 출력하고 입력 받아서 정수형으로 변수 input_second에 저장한다. 입력 받은 초를 시간, 분, 초로 환산하여 변수 hour, minute, second에 각각 저장한다. print 함수를 이용하여 주어진 출력 형식으로 결과를 출력하는 코드를 작성한다.
- 힌트
- 시간 = 입력 받은 초(second) // 3600
- 초(나머지) = 입력 받은 초(second) % 3600
- 분 = 초(나머지) // 60
- 초 = 초(나머지) % 60
- 출력 형식 : ‘시간: 분: 초’
- 입력
- input 함수를 이용하여 ‘초 입력(second):’ 출력
- 입력된 초를 정수형으로 변환하여 변수 input_second에 저장
- 계산
- hour = input_second // 3600
- r_second = input_second % 3600
- minute = r_second // 60
- second = r_second % 60
- 출력
- 출력 형식에 맞게 print로 계산 결과 출력
input_second = int(input('초 입력(second):'))
hour = input_second // 3600
r_second = input_second % 3600
minute = r_second // 60
second = r_second % 60
print(f'{hour} 시간: {minute} 분: {second} 초')
구매물건의 지불가격을 계산하는 문제
- 문제 : 3개 구매물건의 가격 입력을 위해서, ‘음료수 가격 입력:’, ‘계란 가격 입력:’, ‘우유 가격 입력:’ 이라는 각각 입력 안내 메시지를 출력하고 입력 받아서 정수형으로 변수 drink_price, egg_price, milk_price에 각각 저장한다. 변수를 이용하여 입력 받은 3개 물건 가격의 합을 구한다. 구매물건에 대한 10% 할인이 적용되며 할인이 적용된 지불가격을 계산한다. print 함수를 이용하여 주어진 출력 형식으로 결과를 출력하는 코드를 작성하시오.
- 힌트 : 복합 대입 연산자를 이용하여 구매물건 가격의 합을 계산
- 출력 형식 : ‘물건 가격의 합:___ , 할인금액:___ , 지불가격:___’
drink_price = int(input('음료수 가격 입력:'))
egg_price = int(input('계란 가격 입력:'))
milk_price = int(input('우유 가격 입력:'))
sum = drink_price
sum += egg_price
sum += milk_price
total_sum = sum
discount = sum * 0.1
sum -= discount
print(f'물건 가격의 합:{total_sum}, 할인금액:{discount}, 지불가격:{sum}')
원리금 계산 문제 : 원금, 이율, 세율을 입력 받고 세후 이자 소득을 계산하여 최종 원리금을 계산하는 문제
- 문제 : ‘원금 입력(원):’ 이라는 입력 안내 메시지를 출력하고 입력 받아서 정수형으로 원금을 변수 won에 저장. ‘이율 입력:’이라는 입력 안내 메시지를 출력하고 입력 받아서 실수형으로 이율을 변수 interest_rate에 저장. ‘세율 입력:’이라는 입력 안내 메시지를 출력하고 입력 받아서 실수형으로 세율을 변수 tax_rate에 저장. 원금, 이율, 세율을 이용하여 최종 원리금을 계산하고 변수 total에 저장. Print 함수를 이용하여 주어진 출력 형식으로 결과를 출력하는 코드를 작성하시오.
- 힌트
- 원금과 이율로 이자 소득을 계산하고 계산된 이자 소득과 세율을 이용하여 이자 소득세를 계산한다. 이자 소득에서 이자 소득세를 빼서 세후 이자 소득을 계산하고 원금과 합산하여 최종 원리금을 구한다.
- 출력 형식 : 원금:원, 원리금:
won = int(input('원금 입력(원):'))
interest_rate = float(input('이율 입력:'))
tax_rate = float(input('세율 입력:'))
interest = won * interest_rate # 이자 소득
tax = interest * tax_rate #이자 소득세
interest_after_tax = interest - tax #세후 이자 소득
total = won + interest_after_tax #최종 원리금
print(f'원금:{won}원, 원리금:{total:.1f}원')
8. 마무리
- 산술 연산자 : 기본적으로 사용되는 산술 연산자 (+ - * / // % )
- 복합 대입 연산자 : 산술 연산자와 대입 연산자를 합친 연산자 ( += -= *= /= %/ )
- 관계 연산자 : 두 피연산자를 피교하는 연산자 ( > >= < <= == != )
- 논리 연산자 : 피연산자의 조건에 따라서 True 또는 False로 결과 표현
- 논리 연산자에는 and, or, not
- 비트 연산자 : 비트에 대한 연산 수행 ( & | ^ ~ << >> )
'Python 강의' 카테고리의 다른 글
[Python] 5. 반복문 (0) | 2023.08.20 |
---|---|
[Python] 4. 조건문 (0) | 2023.08.20 |
[Python] 2. 변수 및 자료형 (0) | 2023.08.20 |
[Python] 1. 파이썬 및 파이참 설치 (0) | 2023.08.20 |