Q38 ▶ 입력된 두 정수 a, b 중 큰 값을 출력하는 프로그램을 작성해보자.
단, 조건문을 사용하지 않고 3항 연산자 'and or' 를 사용한다.
Tip
파이썬에서의 3항(세 개의 요소로 이루어지는) 연산자는 다른 언어와 사용 방식이 다소 다르다.
타 언어 : "조건식 ? (참일 때의 값) : (거짓일 때의 값)”
파이썬에서의 3항(ternary) 연산자는 "조건식 and (참일 때의 값) or (거짓일 때의 값)” 의 형태로 사용하는 연산자이다.
조건식의 계산 결과가 참인 경우에는 'and' 오른쪽의 값 또는 식으로 바뀌고,
거짓인 경우에는 'or' 오른쪽의 값 또는 식으로 바뀐다.
이것이 가능한 이유는 파이썬이 인터프리터 방식으로 동작하기 때문이다.
a, b = map(int, input().split())
print( a>b and a or b )
Q64 ▶ 입력된 세 정수 a, b, c 중 가장 작은 값을 출력하는 프로그램을 작성해보자. (단, 삼항 연산자 이용)
Tip
파이썬에서는 논리연산을 이용한 삼항 연산자 외에 if-else를 이용한 삼항 연산도 제공한다. 이러한 이유는 논리연산을 이용한 삼항연산 때 발생할 수 있는 오류가 있기 때문이다.
3항 논리 연산의 오류 : 5==5 and 5-5 or 5+5 >> 10
위 연산에서는 5==5가 참이기 때문에 5-5가 실행되어 0이 출력되는 것이 맞다. 그러나 10이 출력된다. 이유는 논리 연산의 특성 때문이다.
위 구문을 크게 따져보면 (True and false) or true 로 표현할 수 있다. 따라서 앞의 (True and false)가 false가 되므로 or 오른쪽에 true 값인 10이 출력된 것이다.
a, b, c = map(int, input().split())
num = a if a<b else b
print( num if num < c else c )
if-else를 이용한 삼항 연산은 "(참일 때의 값) if (조건식) else (거짓일 때의 값)"으로 나타낼 수 있다.
삼항 연산자는 중첩하여 이용할 수 있다.
Q64+ ▶ 1개의 정수형 입력이 들어오면 삼항 연산을 이용하여 '홀수'와 '짝수'를 판별하여라
Tip
입력이 2로 나눠지면 짝수이고, 그렇지 않으면 홀수임을 이용한다.
파이썬에서의 논리연산인 AND와 OR의 특징(Chapter 8 참고)을 이용한다. => 파이썬에서는 이러한 연산을 "삼항 연산"으로 정의한다.
Tip2
입력이 2로 나눠지면 짝수이고, 그렇지 않으면 홀수임을 이용한다.
파이썬에서의 삼항 연산은 if-else로도 구현할 수 있다.
number = int(input())
print( '홀수' if number%2 else '짝수' )
'python' 카테고리의 다른 글
12. 기초 - 반복실행구조 (코드업 기초 100제) (0) | 2022.02.09 |
---|---|
11. 기초 - 조건문/선택 실행 구조 (코드업 기초 100제) (0) | 2022.02.09 |
9. 기초 - 비트단위 논리연산 (코드업 기초 100제) (0) | 2022.01.30 |
8. 기초 - 논리연산 (코드업 기초 100제) (0) | 2022.01.30 |
7. 기초 - 비교연산 (코드업 기초 100제) (0) | 2022.01.30 |