두 수 비교하기
args = input().split()
a = int(args[0])
b = int(args[1])
if a > b:
print('>')
elif a < b:
print('<')
else:
print('==')
실행 흐름 바꾸기 1
Python은 일반적으로 코드를 위에서 아래로 한 줄씩 실행합니다.
하지만 이 문제에서 print('>')는 a가 b보다 클 때만 실행되어야 하는 것처럼, 일반적인 실행 흐름을 바꾸어야 할 때가 있습니다.
a가b보다 큰지 비교한다.- 그 결과가 참이면
print('>')를 실행한다. - 그 결과가 거짓이라면 실행하지 않고 넘어간다.
- 그 결과가 참이면
이 과정들은 참 또는 거짓을 표현하는 논리값, 크기를 비교하는 비교연산자, 간단한 흐름제어문인 if문을 사용하여 구현할 수 있습니다.
논리값
다음과 같은 값을 논리값이라고 합니다.
False
True
두 값은 각각 거짓과 참을 나타내며, 논리값은 이 둘이 전부입니다.
논리값은 bool형입니다.
bool은 논리에 대한 대수 체계를 정의한 조지 불(George Boole)의 이름에서 따온 것입니다.
비교연산자
어떤 두 값 a와 b의 크기를 비교할 때는 다음과 같은 연산자를 사용합니다.
| 연산 | 의미 |
|---|---|
a == b |
a와 b가 같은가? |
a != b |
a와 b가 다른가? |
a < b |
a가 b보다 작은가? |
a > b |
a가 b보다 큰가? |
a <= b |
a가 b보다 작거나 같은가? |
a >= b |
a가 b보다 크거나 같은가? |
위 연산자들을 비교연산자라고 합니다. 비교연산자는 식을 평가하고, 그 결과를 논리값으로 반환합니다. 값의 크기는 정수들과 실수들 사이에서 잘 정의됩니다. 즉, 다음과 같은 비교연산을 수행할 수 있습니다.
1 <= 2 # True
3.14 > 2.71 # True
1.0 == 1 # True
그러나 수와 문자열 사이의 비교는 정의되지 않습니다.
예를 들어, 3 > "0.5"는 TypeError 오류를 발생시킵니다.
같은 식에 비교연산자와 사칙연산(+, -, *, / 등)이 함께 사용되면, 사칙연산이 끝난 후 비교연산이 수행됩니다.
즉, 우리에게 익숙하게 2 * 2 > 3은 4 > 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$이었다면, 첫 if의 apple == 0이 거짓이므로 다음 elif로 넘어갑니다.
여기 apple == 1은 참이므로 "사과가 하나밖에 없습니다"를 출력한 후, 아래의 다른 조건들은 검사하지 않고 바로 "완료"를 출력합니다.
즉, 코드 흐름은 그 아래의 elif apple > 0:을 지나지도 않습니다.
실행할 문장은 여러 줄로 이루어질 수 있습니다. 이때, 같은 표현식에 속한 문장들은 모두 같은 들여쓰기를 해야 합니다. 관례에 따라 들여쓰기는 공백 4칸을 사용합니다. IDE가 자동으로 이렇게 들여쓰기를 해 줄 것입니다.
if 다음에는 0개 이상의 elif가 있을 수 있고, 가장 마지막에 else가 없거나 1개 있을 수 있습니다.
즉 다음과 같은 조합들이 가능합니다.
ifif-elseif-elifif-elif-elseif-elif-elifif-elif-elif-elifif-elif-elif-else- ...
댓글