TLDR
- 파이썬 3은
input
함수로 받은 데이터를 평가하지 않지만 파이썬 2의 input
함수는 평가합니다 (다음 섹션을 읽고 의미를 이해하십시오).
- Python 2와 Python 3의 기능
input
이 동일 raw_input
합니다.
파이썬 2.x
사용자 입력을 얻는 두 가지 기능이 input
있으며 및 이라고 raw_input
합니다. 차이점 raw_input
은 데이터를 평가하지 않고 그대로 문자열 형식으로 반환한다는 것입니다. 그러나 input
입력 한 내용을 평가하고 평가 결과가 반환됩니다. 예를 들어
>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)
데이터 5 + 17
가 평가되고 결과는 22
입니다. 표현식을 평가할 때 5 + 17
두 개의 숫자를 더하고 있음을 감지하므로 결과도 같은 int
유형이됩니다. 따라서 유형 변환은 무료로 수행 22
되며 결과 input
로 data
변수에 저장됩니다 . 당신은 전화 로 구성된 input
것으로 생각할 수 있습니다 .raw_input
eval
>>> data = eval(raw_input("Enter a number: "))
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)
참고 :input
Python 2.x에서 사용할 때는주의해야합니다 . 나는 이 답변 에서 그것을 사용할 때 조심 해야하는 이유를 설명했다 .
그러나 raw_input
입력을 평가하지 않고 그대로 문자열로 반환합니다.
>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = raw_input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <type 'str'>)
파이썬 3.x
Python 3.x input
와 Python 2.x raw_input
는 비슷하며 raw_input
Python 3.x에서 사용할 수 없습니다.
>>> import sys
>>> sys.version
'3.4.0 (default, Apr 11 2014, 13:05:11) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <class 'str'>)
해결책
파이썬 3.x는 데이터 유형을 평가하고 변환하지 않으므로 질문에 대답하려면 다음과 같이 명시 적으로 int
s 로 변환해야 int
합니다.
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
다음과 같이 int
함수를 사용하여 모든 염기의 수를 수용하고 10을 밑으로 직접 변환 할 수 있습니다.
>>> data = int(input("Enter a number: "), 8)
Enter a number: 777
>>> data
511
>>> data = int(input("Enter a number: "), 16)
Enter a number: FFFF
>>> data
65535
>>> data = int(input("Enter a number: "), 2)
Enter a number: 10101010101
>>> data
1365
두 번째 매개 변수는 입력 된 숫자의 밑이 무엇인지를 알려주고 내부적으로 이해하고 변환합니다. 입력 한 데이터가 틀리면을 던집니다 ValueError
.
>>> data = int(input("Enter a number: "), 2)
Enter a number: 1234
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 2: '1234'
소수 구성 요소를 가질 수있는 값의 경우 유형은 다음 float
이 아닙니다 int
.
x = float(input("Enter a number:"))
그 외에도 프로그램을 다음과 같이 약간 변경할 수 있습니다.
while True:
...
...
if input("Play again? ") == "no":
break
당신은 제거 할 수 play
사용하여 변수 break
와 while True
.