8.2 숫자 입력받기

문자열 입력 방법을 알아보았으니 이번에는 입력받은 두 숫자를 더하는 프로그램을 만들어보겠습니다. 다음 내용을 IDLE의 소스 코드 편집 창에 입력하세요.

input_integer.py

a = input('첫 번째 숫자를 입력하세요: ')
b = input('두 번째 숫자를 입력하세요: ')
 
print(a + b)

소스 코드를 실행하면 '첫 번째 숫자를 입력하세요: '가 출력됩니다. 여기서 1을 입력하고 엔터 키를 누르세요. 그리고 '두 번째 숫자를 입력하세요: '가 출력되면 2를 입력하고 엔터 키를 누르세요.

실행 결과

첫 번째 숫자를 입력하세요: 1 (입력)
두 번째 숫자를 입력하세요: 2 (입력)
12

1 + 2의 결과는 3이 나와야 하는데 12가 나왔습니다. 왜 이런 결과가 나왔을까요? input에서 입력받은 값은 항상 문자열 형태이기 때문입니다. 즉, 1과 2는 겉보기에는 숫자이지만 실제로는 문자열이므로 1과 2를 +로 연결하여 12가 나오게 됩니다.

1 + 2의 결과가 3이 나오게 하려면 input에서 입력받은 문자열을 숫자(정수)로 변환해주어야 합니다.

  • 변수 = int(input())
  • 변수 = int(input(문자열))

input_integer.py

a = int(input('첫 번째 숫자를 입력하세요: '))    # int를 사용하여 입력 값을 정수로 변환
b = int(input('두 번째 숫자를 입력하세요: '))    # int를 사용하여 입력 값을 정수로 변환
 
print(a + b)

실행 결과

첫 번째 숫자를 입력하세요: 1 (입력)
두 번째 숫자를 입력하세요: 2 (입력)
3

이제 1 + 2의 결과로 3이 나왔죠? 입력받은 값을 숫자(정수)로 변환하려면 inputint로 묶어줍니다.

a = int(input('첫 번째 숫자를 입력하세요: '))

여기서 int는 괄호 안에 있는 값을 정수로 변환하며 문자열이든 실수든 상관없이 정수로 변환합니다.

  • int(값)
>>> int('10')
10
>>> int(3.5)
3
>>> int('hello')
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    int('hello')
ValueError: invalid literal for int() with base 10: 'hello'

물론 문자열의 내용이 숫자(10진 정수)가 아니라면 변환이 되지 않고 에러가 발생합니다. 이점 주의해주세요.

그럼 실수의 덧셈도 계산할 수 있겠죠? input으로 입력받은 값을 실수로 변환하려면 float로 묶어줍니다.

  • 변수 = float(input())
  • 변수 = float(input(문자열))

input_float.py

a = float(input('첫 번째 숫자를 입력하세요: '))    # float를 사용하여 입력 값을 실수로 변환
b = float(input('두 번째 숫자를 입력하세요: '))    # float를 사용하여 입력 값을 실수로 변환
 
print(a + b)

실행 결과

첫 번째 숫자를 입력하세요: 1.2 (입력)
두 번째 숫자를 입력하세요: 1.5 (입력)
2.7

1.2 + 1.5의 결과로 2.7이 나왔습니다. 만약 float를 사용하지 않으면 문자열 '1.2''1.5'가 연결되어 '1.21.5'가 됩니다.

float는 괄호 안에 있는 값을 실수로 변환하며 문자열이든 정수든 상관없이 실수로 변환합니다.

  • float(값)
>>> float('3.5')
3.5
>>> float(10)
10.0
>>> float('hello')
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    float('hello')
ValueError: could not convert string to float: 'hello'

물론 문자열의 내용이 숫자(10진 정수, 실수)가 아니라면 변환이 되지 않고 에러가 발생하니 주의하세요.