IFP 겨울방학 스터디 | 코드업 기초 100제 (10)

유재우·2022년 1월 29일
0

IFP-겨울방학 스터디

목록 보기
29/38

10. 기초-삼항연산


  • 입력된 두 정수 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)

강의 풀이)

a, b = map(int, input().split())
print( a>b and a or b )

  • 입력된 세 정수 a, b, c 중 가장 작은 값을 출력하는 프로그램을 작성해보자. (단, 삼항 연산자 이용)
    내 풀이)
a, b, c = map(int, input().split())
if a < b:
    print(a < c and a or c)
elif b < c:
    print(b < a and b or a)
elif c < a:
    print(c < b and c or b)

강의 풀이)

a, b, c = map(int, input().split())
num = a if a<b else b
print(  num if num < c else 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이 출력된 것이다.
if-else를 이용한 삼항 연산은 "(참일 때의 값) if (조건식) else (거짓일 때의 값)"으로 나타낼 수 있다.
삼항 연산자는 중첩하여 이용할 수 있다.


  • [우리밋이 알려주는 Bonus 문제 (3)]
    1개의 정수형 입력이 들어오면 삼항 연산을 이용하여 '홀수'와 '짝수'를 판별하여라
    Tip::
    입력이 2로 나눠지면 짝수이고, 그렇지 않으면 홀수임을 이용한다.
    파이썬에서의 논리연산인 AND와 OR의 특징(Chapter 8 참고)을 이용한다. => 파이썬에서는 이러한 연산을 "삼항 연산"으로 정의한다.
    Tip2::
    입력이 2로 나눠지면 짝수이고, 그렇지 않으면 홀수임을 이용한다.
    파이썬에서의 삼항 연산은 if-else로도 구현할 수 있다.
    내 풀이)
a = int(input())
print('짝수' if a % 2 == 0 else '홀수')

강의 풀이)

number = int(input())
print( '홀수' if number%2 else '짝수' )
profile
끝없이 탐구하는 iOS 개발자 유재우입니다!

0개의 댓글