입력을 숫자로 어떻게 읽을 수 있습니까?
아래 코드에서 int 대신 x
및 y
문자열 이 왜 있습니까?
(참고 : Python 2.x에서는 raw_input()
. Python 3.x에서는 input()
. raw_input()
가 input()
Python 3.x에서 로 이름이 변경되었습니다 . )
play = True
while play:
x = input("Enter a number: ")
y = input("Enter a number: ")
print(x + y)
print(x - y)
print(x * y)
print(x / y)
print(x % y)
if input("Play again? ") == "no":
play = False
답변
TLDR
- Python 3은
input
함수로 수신 된 데이터를 평가하지 않지만 Python 2의input
함수는 평가합니다 (의미를 이해하려면 다음 섹션을 참조하십시오). - Python 2의 Python 3과 동일한 기능
input
은raw_input
함수입니다.
Python 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'>)
Python 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'>)
해결책
질문에 답하려면 Python 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
한 줄에 여러 정수의 map
경우 더 좋을 수 있습니다.
arr = map(int, raw_input().split())
숫자가 이미 알려진 경우 (예 : 정수 2 개) 다음을 사용할 수 있습니다.
num1, num2 = map(int, raw_input().split())
input()
(Python 3) 및 raw_input()
(Python 2)는 항상 문자열을 반환합니다. 를 사용하여 결과를 정수로 명시 적으로 변환합니다 int()
.
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
여러 질문은 한 줄에 여러 정수를 입력해야합니다. 가장 좋은 방법은 숫자의 전체 문자열을 한 줄에 입력 한 다음 정수로 분할하는 것입니다. 다음은 Python 3 버전입니다.
a = []
p = input()
p = p.split()
for i in p:
a.append(int(i))
또한 목록 이해력을 사용할 수 있습니다.
p = input().split("whatever the seperator is")
그리고 모든 입력을 string에서 int로 변환하려면 다음을 수행합니다.
x = [int(i) for i in p]
print(x, end=' ')
목록 요소를 직선으로 인쇄합니다.
정수로 변환 :
my_number = int(input("enter the number"))
부동 소수점 숫자의 경우 :
my_decimalnumber = float(input("enter the number"))
n=int(input())
for i in range(n):
n=input()
n=int(n)
arr1=list(map(int,input().split()))
for 루프는 'n'번 실행됩니다. 두 번째 'n'은 배열의 길이입니다. 마지막 문은 정수를 목록에 매핑하고 공백으로 구분 된 형식으로 입력합니다. for 루프의 끝에 배열을 반환 할 수도 있습니다.
CodeChef 에서 문제를 해결하는 동안 정수 입력을받는 문제가 발생했습니다 . 여기서 공백으로 구분 된 두 개의 정수를 한 줄에서 읽어야합니다.
int(input())
단일 정수로는 충분 하지만 두 정수를 입력하는 직접적인 방법을 찾지 못했습니다. 나는 이것을 시도했다 :
num = input()
num1 = 0
num2 = 0
for i in range(len(num)):
if num[i] == ' ':
break
num1 = int(num[:i])
num2 = int(num[i+1:])
이제 num1과 num2를 정수로 사용합니다. 도움이 되었기를 바랍니다.
def dbz():
try:
r = raw_input("Enter number:")
if r.isdigit():
i = int(raw_input("Enter divident:"))
d = int(r)/i
print "O/p is -:",d
else:
print "Not a number"
except Exception ,e:
print "Program halted incorrect data entered",type(e)
dbz()
Or
num = input("Enter Number:")#"input" will accept only numbers
귀하의 예제에서,하지만 int(input(...))
어떤 경우에 트릭을 수행, python-future
의는 builtins.input
그 수 있기 때문에 가치가 고려 사항은 모두 파이썬 2와 3에 대한 확인 코드 작품 과 의 비활성화 Python2의 기본 동작 input
입력 데이터 유형에 대해 "영리"가 되려고 노력 ( builtins.input
기본적으로 단지를 )처럼 작동합니다 raw_input
.