2017-09-19 5 views
2

나는이 2 개의 짧은 코드에 대해 2 개의 질문을 가지고 있습니다.python input() EOF 오류 및 int 유형의 반환 값?

1.

name = input('what: ') 
print(name) 

출력

what: 641u 
Traceback (most recent call last): 
    File "/Users/vuthynun/PycharmProjects/untitled1/h/__init__.py", line 1, in <module> 
    name = input('what: ') 
    File "<string>", line 1 
    641u 
    ^
SyntaxError: unexpected EOF while parsing 

Process finished with exit code 1 

은 왜 나에게이 오류를 주는가?

2.

name = input('what: ') 

print(type(name)) 

출력 :

what: 23 
<type 'int'> 

Process finished with exit code 0 

왜 이름 int 타입은? 나는 모든 입력이 문자열로 변환되었다고 생각했다.

제발 이해 좀 도와주세요. 그것 때문에 죽겠다.

+2

변경'입력을()'raw_input을'에()'. 파이썬 2에서 '입력'에 무엇이든지'eval '을 호출하는 것처럼 보입니다 – roganjosh

+1

[공식 python2 문서] (https://docs.python.org/2/library/functions.html#input)) : "일반 입력에 raw_input() 함수를 사용하는 것을 고려하십시오." – zypro

답변

3

파이썬 2에서 input 대신 raw_input을 사용하십시오. 문자열을 얻는 방법입니다. 그렇지 않으면 파이썬은 당신이 당신에게 그것을주는 것을 평가할 것이고, 그것은 당신에게 당신의 예기치 않은 행동을 준다.

-1

이것은 Python 2.7의 동작입니다. input을 통해 수락 한 내용은 int 유형으로 변환되며 raw_input을 통해 수령 한 내용은 str으로 변환됩니다.

Python 3의 행동은이 사항을 확인하십시오 What's the difference between raw_input() and input() in python3.x?

+1

이것은 오해의 소지가있는 것 같습니다.'input'은 아무것도 변환하지 않고, 당신이주는 것을 평가합니다. 예를 들어'2 + 3'을 시도하십시오. – Shadow

+0

나중에, 편집 됨 ... – Gauranga

+0

나는 아직도 당신이 오해하고 있다고 생각합니다 -''test "'를'input' 호출로 타이핑 해보십시오. 정수가 아니라 문자열로 나옵니다. – Shadow