확인한 환경과 범위

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

이 글의 순서 4개 단락

방문객 수를 입력받아 숫자로 사용하려면 먼저 입력값의 자료형을 확인해야 합니다. 키보드에서 12를 입력해도 input이 돌려주는 값은 정수 12가 아니라 문자열 '12'입니다. 이 강의는 Python 3.12를 기준으로, 입력을 정수로 바꾸고 변환에 실패했을 때 안내하는 방법을 살펴봅니다.

입력과 자료형 변환

input()은 사용자가 한 줄을 입력하고 Enter를 누르면 그 내용을 문자열로 돌려줍니다. 괄호 안에 안내 문구를 넣으면 입력을 기다리기 전에 그 문구가 표시됩니다.

숫자 형태의 문자열은 int나 float으로 변환할 수 있습니다. int('12')는 정수 12, float('12.5')는 실수 12.5가 됩니다. 반대로 str(12)는 정수를 문자열 '12'로 바꿉니다. 변환 결과는 새 값이므로 변수에 저장해야 나중에 사용할 수 있습니다.

방문객 수 입력받기

다음 코드는 방문객 수를 한 번 입력받습니다. 정수로 변환할 수 있으면 그 값을 출력하고, 변환할 수 없으면 안내 문구를 출력합니다.

text = input('방문객 수를 입력하세요: ')

try:
    visitors = int(text)
    print('방문객 수:', visitors)
except ValueError:
    print('정수를 입력해 주세요.')

입력받고 숫자로 바꾸기 — 첫 예제의 실제 실행 결과

입력:

12

예상 출력:

방문객 수를 입력하세요: 방문객 수: 12

입력 안내 문구에는 줄바꿈이 없으므로 프로그램이 출력하는 문구만 나타내면 위와 같습니다. 대화형 화면에서는 입력한 12가 안내 문구 뒤에 보이고, Enter를 누른 다음 줄에 결과가 보일 수 있습니다.

text에는 문자열 '12'가 저장됩니다. int(text)가 이를 정수 12로 바꾸고 visitors에 저장하므로 print는 방문객 수를 출력합니다. 실행 중 발생하는 오류를 예외라고 합니다. try 아래의 문장을 실행하다가 int가 변환할 수 없는 문자열을 만나 ValueError가 발생하면, 나머지 try 부분을 건너뛰고 except ValueError 아래의 안내 문장을 실행합니다. 변환에 성공하면 except 부분은 실행하지 않습니다.

예를 들어 입력이 열두 명이면 예상 출력은 다음과 같습니다.

방문객 수를 입력하세요: 정수를 입력해 주세요.

흔한 실수와 입력의 경계

input의 결과를 숫자로 생각하고 바로 계산에 사용하지 않도록 주의하세요. 예를 들어 문자열 '12'와 정수 12는 서로 다른 자료형입니다. 계산에 쓸 값은 먼저 적절한 숫자 자료형으로 변환합니다.

int('12.5')처럼 소수점이 포함된 문자열이나 int('')처럼 빈 문자열을 정수로 바꾸려 하면 ValueError가 발생합니다. 입력 없이 Enter만 눌렀을 때도 빈 문자열이 전달되므로 이 예제에서는 안내 문구가 나옵니다. 반면 int(' 12 ')처럼 숫자 앞뒤에 공백이 있는 경우에는 정수로 변환할 수 있습니다.

이 코드는 정수 변환 여부만 확인합니다. 0이나 -3도 정수이므로 그대로 출력합니다. 방문객 수를 0 이상으로 제한하는 조건은 이후 조건문 강의에서 다룹니다. 또한 try:와 except ValueError:는 같은 들여쓰기 위치에 두고, 각 아래의 문장은 들여쓰기해야 합니다.

연습: 실수 입력받기

온도를 한 번 입력받아 실수로 변환하고 온도:와 함께 출력해 보세요. 변환할 수 없다면 숫자를 입력해 주세요.를 출력합니다. 입력이 21.5일 때 결과에 온도: 21.5가 표시되도록 작성해 보세요.

풀이

text = input('온도를 입력하세요: ')

try:
    temperature = float(text)
    print('온도:', temperature)
except ValueError:
    print('숫자를 입력해 주세요.')

float(text)는 '21.5'를 실수 21.5로 바꿉니다. 예를 들어 따뜻함을 입력하면 변환할 수 없어 except의 안내 문구가 출력됩니다. float은 nan이나 inf 같은 특수한 문자열도 실수로 받아들이므로, 일반적인 온도 범위만 허용하려면 별도의 검사가 필요합니다.

CHECK THE SOURCE

참고한 공식 문서

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

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