본문 바로가기
프로그래밍 언어/python

240209. 정올 파이썬 연산자 문제

by 피스타0204 2024. 2. 9.

 

 

JUNGOL

code_blocks 코드 보기

jungol.co.kr

 

1) 연산자

'//'로 몫을 구하거나 '%'로 나머지를 구하는 등 수의 연산을 할 수 있습니다.

input을 받을 때는 반드시 정수형이나 실수형으로 바꾸어주어야 합니다.

a=int(input("수를 입력하시오. "))
b=int(input("수를 입력하시오. "))
print(a,'+',b,'=',a+b)
print(a,'-',b,'=',a-b)
print(a,'*',b,'=',a*b)
print(a,'//',b,'=',a//b)
print(a,'%',b,'=',a%b)
print(a,'**',b,'=',a**b)

'''입력
수를 입력하시오. 5
수를 입력하시오. 2
'''
"""출력
5 + 2 = 7
5 - 2 = 3
5 * 2 = 10
5 // 2 = 2
5 % 2 = 1
5 ** 2 = 25
"""

 

2) 삼항 연산자

print(참값 if 조건 else 거짓값)

print(참값) if 조건 else print(거짓값)

a = int(input())
b= int(input())
c= int(input())
print('True' if a==b else 'False','True' if b==c else 'False',
 'True' if a!=b else 'False','True' if b!=c else 'False')
 
'''입력
10
20
20
'''
"""출력
False True True False
"""

참값으로 변수할당을 할 수도 있습니다.

# 년도와 월을 입력받아 월을 마지막 날짜 구하기

while True:
    year = int(input('년도을 입력하시오(0은 종료)'))
    if not year:
        break
    month = int(input('월을 입력하시오(0은종료)'))
    if not month:
        break

    last_day = (29 if year % 400 == 0 or year % 4 == 0 and year % 100 else 28) \ 
              if (month==2) else (30 if month%2 else 31) \
              if (month>=8) else (31 if month%2 else 30)

    print('{0}년 {1}월의 마지막 날짜는 {2}일 입니다.'.format(year,month,last_day))

 

삼항연산자도 중첩이 가능합니다.

# arr[index] 이 2의 배수인지, 3의 배수인지 아니면 다른 수의 배수인지
arr = [15, 16, 17]

# 일반적인 if ~ elif ~ else
print("1. 일반")
for val in arr:        
    if val % 2 == 0:
        print(f"{val}은 2의 배수")
    elif val % 3 == 0:
        print(f"{val}은 3의 배수")
    else:
        print(f"{val}은 2, 3 배수 둘다 아님")


# 삼항 연산자 if ~ elif ~ else 표현
print("\n2. 삼항")
for val in arr:
    print(f"{val}은 2의 배수") if val % 2 == 0 else print(f"{val}은 3의 배수")if val % 3 == 0 else print(f"{val}은 2, 3배수 둘다 아님")

출처: https://blockdmask.tistory.com/551 [개발자 지망생:티스토리]

 

3) 비교연산자

많은 사람들이 if문의 조건에는 할당기호 '='가 아닌 비교 연산자 '=='가 들어가는 것을 놓치는 실수를 많이 합니다. 비교연산자는 boolean값을 return하기 때문에 조건문에서 사용됩니다.

a=int(input())
b=int(input())
print(a,'>',b,'---', a>b)
print(a,'<',b,'---', a<b)
print(a,'>=',b,'---', a>=b)
print(a,'<=',b,'---', a<=b)

 

4) 논리 연산자

조건 연산을 할때 논리 연산자를 사용합니다.

a =True
b= True
c= False
print(not a)
print(a and b)
print(a or b)
print(a and (b or c))
print(a or (b and c))
print(not a or (b and not c))

"""출력
a =True
b= True
c= False
print(not a)
print(a and b)
print(a or b)
print(a and (b or c))
print(a or (b and c))
print(not a or (b and not c))
"""

 

5) 비트 연산자

c++에서는 &&를 논리 연산을 하는 데도 사용했지만 파이썬에서는 &같은 비트 연산자를 논리 연산에서 사용할 수 없습니다. 조건문에서 비트 연산자를 쓰게 되면 오류가 납니다. 

연산자 기능 문법 설명
& 비트 AND a & b a b의 비트를 AND 연산
| 비트 OR a | b a b의 비트를 OR 연산
^ 비트 XOR a ^ b a b의 비트를 XOR 연산(배타적 OR, Exclusive OR)
~ 비트 NOT ~x x의 비트를 뒤집음
<<  비트 왼쪽 시프트 a << b a의 비트를 b번 왼쪽으로 이동시킴
>>  비트 오른쪽 시프트 a >> b a의 비트를 b번 오른쪽으로 이동시킴
&= 비트 AND 연산 후 할당 a &= b a b의 비트를 AND 연산한 후 결과를 a에 할당
|= 비트 OR 연산 후 할당 a |= b a b의 비트를 OR 연산한 후 결과를 a에 할당
^= 비트 XOR 연산 후 할당 a ^= b a b의 비트를 XOR 연산한 후 결과를 a에 할당
<<= 비트 왼쪽 시프트 후 할당 a <<= b a의 비트를 b번 왼쪽으로 이동시킨 후 결과를 a에 할당
>>= 비트 오른쪽 시프트 후 할당 a >>= b a의 비트를 b번 오른쪽으로 이동시킨 후 결과를 a에 할당

출처 : https://dojang.io/mod/page/view.php?id=2460

 

6) 연산자 우선 순위

  1. 지수 연산자 (**)
  2. 단항 플러스와 마이너스 (+x, -x)
  3. 곱셈, 나눗셈, 몫, 나머지 (*, /, //, %)
  4. 덧셈, 뺄셈 (+, -)
  5. 비트 시프트 (>>, <<)
  6. 비트 AND (&)
  7. 비트 XOR (^)
  8. 비트 OR (|)
  9. 비교 연산자 (<, <=, >, >=, ==, !=)
  10. 논리 NOT (not)
  11. 논리 AND (and)
  12. 논리 OR (or)
  13. 조건식 (삼항 연산자) (x if c else y)
  14. 할당 (=, +=, -=, *=, /=, //=, %=, **=, &=, |=, ^=, >>=, <<=)
  15. 식별자 (is, is not)
  16. 멤버십 테스트 (in, not in)
  17. 논리 연산자 (and, or)
  18. Lambda 표현식 (lambda)
a=int(input())
b=int(input())
c=int(input())
print((a>b) & (a>c),a==b &a==c)
'''입력
10
9
9
'''
"""
True False
"""