두 수 비교하기

args = input().split()
a = int(args[0])
b = int(args[1])

if a > b:
    print('>')
elif a < b:
    print('<')
else:
    print('==')

실행 흐름 바꾸기 1

Python은 일반적으로 코드를 위에서 아래로 한 줄씩 실행합니다. 하지만 이 문제에서 print('>')ab보다 클 때만 실행되어야 하는 것처럼, 일반적인 실행 흐름을 바꾸어야 할 때가 있습니다.

  1. ab보다 큰지 비교한다.
    1. 그 결과가 참이면 print('>')를 실행한다.
    2. 그 결과가 거짓이라면 실행하지 않고 넘어간다.

이 과정들은 참 또는 거짓을 표현하는 논리값, 크기를 비교하는 비교연산자, 간단한 흐름제어문인 if문을 사용하여 구현할 수 있습니다.

논리값

다음과 같은 값을 논리값이라고 합니다.

False
True

두 값은 각각 거짓을 나타내며, 논리값은 이 둘이 전부입니다. 논리값은 bool형입니다. bool은 논리에 대한 대수 체계를 정의한 조지 불(George Boole)의 이름에서 따온 것입니다.

비교연산자

어떤 두 값 ab의 크기를 비교할 때는 다음과 같은 연산자를 사용합니다.

연산 의미
a == b ab가 같은가?
a != b ab가 다른가?
a < b ab보다 작은가?
a > b ab보다 큰가?
a <= b ab보다 작거나 같은가?
a >= b ab보다 크거나 같은가?

위 연산자들을 비교연산자라고 합니다. 비교연산자는 식을 평가하고, 그 결과를 논리값으로 반환합니다. 값의 크기는 정수들과 실수들 사이에서 잘 정의됩니다. 즉, 다음과 같은 비교연산을 수행할 수 있습니다.

1 <= 2       # True
3.14 > 2.71  # True
1.0 == 1     # True

그러나 수와 문자열 사이의 비교는 정의되지 않습니다. 예를 들어, 3 > "0.5"TypeError 오류를 발생시킵니다.

같은 식에 비교연산자와 사칙연산(+, -, *, / 등)이 함께 사용되면, 사칙연산이 끝난 후 비교연산이 수행됩니다. 즉, 우리에게 익숙하게 2 * 2 > 34 > 3이 되어 True를 반환합니다.

if

if으로 조건에 따라 특정 문장들의 실행 여부를 결정할 수 있습니다. 다음과 같이 작성합니다.

apple = int(input())

if apple == 0:
    print("사과가 없습니다.")
elif apple == 1:
    print("사과가 하나밖에 없습니다.")
elif apple > 0:
    print("사과가 많이 있습니다.")
else:
    apple = 0
    print("오류를 수정했습니다.")

print("완료")

우선 if 옆에 평가할 표현식을 적은 후 :을 붙입니다. 그리고 다음 줄에 실행할 문장들을 한 줄씩 적습니다.

만약 if 옆의 표현식이 참이면 if문 아래에 있는 문장들을 실행한 다음, 바로 if문을 빠져나갑니다. 즉, 위 코드에서 apple이 $0$이었다면 "사과가 없습니다"를 출력한 후, 아래의 다른 조건들은 검사하지 않고 바로 "완료"를 출력합니다. 표현식이 거짓이라면 바로 다음에 있는 elif 또는 else로 넘어갑니다.

apple이 $1$이었다면, 첫 ifapple == 0이 거짓이므로 다음 elif로 넘어갑니다. 여기 apple == 1은 참이므로 "사과가 하나밖에 없습니다"를 출력한 후, 아래의 다른 조건들은 검사하지 않고 바로 "완료"를 출력합니다. 즉, 코드 흐름은 그 아래의 elif apple > 0:을 지나지도 않습니다.

실행할 문장은 여러 줄로 이루어질 수 있습니다. 이때, 같은 표현식에 속한 문장들은 모두 같은 들여쓰기를 해야 합니다. 관례에 따라 들여쓰기는 공백 4칸을 사용합니다. IDE가 자동으로 이렇게 들여쓰기를 해 줄 것입니다.

if 다음에는 0개 이상의 elif가 있을 수 있고, 가장 마지막에 else가 없거나 1개 있을 수 있습니다. 즉 다음과 같은 조합들이 가능합니다.

  • if
  • if - else
  • if - elif
  • if - elif - else
  • if - elif - elif
  • if - elif - elif - elif
  • if - elif - elif - else
  • ...
댓글