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이 나왔죠? 입력받은 값을 숫자(정수)로 변환하려면 input을 int로 묶어줍니다.
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진 정수, 실수)가 아니라면 변환이 되지 않고 에러가 발생하니 주의하세요.