확인한 환경과 범위

Windows · Python 3.12.4. 본문의 첫 예제를 실행하여 표준 출력과 예상 결과가 일치함을 확인했습니다. 연습문제의 모든 입력을 검증한 것은 아닙니다.

이 글의 순서 5개 단락

점수에 따라 서로 다른 안내를 보여 주려면 입력값을 비교하고, 그 결과에 맞는 코드를 선택해야 합니다. Python 3.12의 조건문으로 0부터 100까지의 정수 점수를 세 구간으로 나누어 보겠습니다.

비교와 논리 연산으로 조건 만들기

비교 연산의 결과는 참을 뜻하는 True 또는 거짓을 뜻하는 False입니다. score >= 90은 점수가 90 이상인지 확인합니다. >와 <는 각각 초과와 미만을, >=와 <=는 이상과 이하를 뜻합니다. ==는 두 값이 같은지, !=는 다른지 비교합니다.

조건을 조합할 수도 있습니다. score >= 0 and score <= 100은 두 비교가 모두 참일 때 참입니다. score < 0 or score > 100은 두 비교 중 하나라도 참이면 참입니다. not (score == 100)은 괄호 안의 참과 거짓을 반대로 바꿉니다. 이 글에서는 비교 결과를 조합하므로 and와 or의 결과도 True 또는 False입니다.

점수에 맞는 안내 출력하기

정수 점수를 한 번 입력받아 90100은 우수, 6089는 보통, 0~59는 더 연습해요로 안내합니다. 범위 밖의 정수나 정수로 변환할 수 없는 입력에는 별도로 안내합니다.

try:
    score = int(input())
except ValueError:
    print("정수를 입력해 주세요.")
else:
    if score < 0 or score > 100:
        print("점수는 0부터 100까지 입력해 주세요.")
    elif score >= 90:
        print("우수")
    elif score >= 60:
        print("보통")
    else:
        print("더 연습해요")

조건에 따라 다른 결과 만들기 — 첫 예제의 실제 실행 결과

예제 입력:

75

예상 출력:

보통

input()이 받은 문자열을 int()로 정수로 바꿉니다. 변환에 실패하면 except ValueError의 안내를 출력합니다. 변환에 성공하면 try와 연결된 else 안에서 점수를 분류합니다. 이 else는 아래에 있는 조건문의 else와 역할이 다릅니다.

점수가 75이면 먼저 범위 밖인지 검사하는 조건은 거짓이고, 90 이상인지도 거짓입니다. 다음 조건인 score >= 60이 참이므로 보통을 출력합니다. if와 이어진 elif들은 위에서부터 확인하며, 처음 참인 분기 하나를 실행한 뒤 나머지는 건너뜁니다. 모두 거짓이면 마지막 else를 실행합니다. 조건 뒤의 콜론과 그 아래 들여쓰기는 어느 코드가 해당 분기에 속하는지 나타냅니다.

경계값과 흔한 실수

입력예상 결과이유
0, 59더 연습해요유효 범위이고 60 미만입니다.
60, 89보통60 이상이고 90 미만입니다.
90, 100우수90 이상이고 100 이하입니다.
-1, 101범위 안내0 미만이거나 100 초과입니다.
빈 입력, 75.5, 가정수 입력 안내int()로 정수 변환을 할 수 없습니다.

조건의 순서가 중요합니다. 범위 검사를 먼저 하지 않으면 101도 score >= 90에 해당해 우수로 분류됩니다. 또한 score >= 60을 score >= 90보다 먼저 검사하면 90도 앞 조건에 걸려 보통이 됩니다.

=는 값을 변수에 저장할 때 쓰고, ==는 같은지 비교할 때 씁니다. 조건에 score = 90을 쓰면 문법 오류가 납니다. 각 조건 뒤의 콜론을 빠뜨리거나 같은 분기에 속한 줄의 들여쓰기를 다르게 해도 오류가 날 수 있습니다. 들여쓰기에는 공백 네 칸을 일관되게 사용하세요.

연습: 온도 구간 분류하기

정수 온도를 한 번 입력받아 25 이상이면 더워요, 10 이상 25 미만이면 적당해요, 10 미만이면 추워요를 출력해 보세요. 정수로 바꿀 수 없는 입력에는 정수를 입력해 주세요.를 출력합니다. 온도의 유효 범위는 따로 제한하지 않습니다.

풀이

try:
    temperature = int(input())
except ValueError:
    print("정수를 입력해 주세요.")
else:
    if temperature >= 25:
        print("더워요")
    elif temperature >= 10:
        print("적당해요")
    else:
        print("추워요")

25를 입력하면 첫 조건이 참이어서 더워요가 예상됩니다. 10은 첫 조건이 거짓이고 두 번째 조건이 참이므로 적당해요, 9는 두 조건이 모두 거짓이므로 추워요가 예상됩니다. 25 이상을 먼저 처리했기 때문에 두 번째 조건에는 25 미만인지 다시 적지 않아도 됩니다.

출처

CHECK THE SOURCE

참고한 공식 문서

기능 설명은 위 문서를 참고했으며, 예제의 입력·결과와 한계는 본문에 따로 기록했습니다.

한 줄씩 이해하고, 차곡차곡 기록합니다.이 글의 오류 제보하기 ↗