이 간단한 스크립트를 실행하려고 할 때 오류가 발생합니다.
input_variable = input ("Enter your name: ")
print ("your name is" + input_variable)
“친구”를 입력한다고 가정하면 오류가 발생합니다.
line 1, in <module>
input_variable = input ("Enter your name: ")
File "<string>", line 1, in <module>
NameError: name 'dude' is not defined
이 스크립트를 Python 2.7에서 실행하고 있습니다.
답변
TL; DR
input
Python 2.7의 함수는 입력 한 내용을 Python 표현식으로 평가합니다. 단순히 문자열을 읽으려면 raw_input
Python 2.7에서 함수 를 사용하십시오.이 기능은 읽은 문자열을 평가하지 않습니다.
Python 3.x를 사용하는 경우 raw_input
이름이로 변경되었습니다 input
. 파이썬 3.0 릴리스 노트 인용 ,
raw_input()
로 이름이 변경되었습니다input()
. 즉, 새input()
함수는 줄을 읽고sys.stdin
후행 줄 바꿈을 제거한 상태로 반환합니다. 이 제기EOFError
입력이 조기 종료되는 경우. 의 이전 동작 얻으려면input()
, 사용eval(input())
Python 2.7 에는 사용자 입력을 받아들이는 데 사용할 수있는 두 가지 함수가 있습니다. 하나는 input
다른 하나는 raw_input
입니다. 당신은 다음과 같이 그들 사이의 관계를 생각할 수 있습니다
input = eval(raw_input)
이 코드를 더 잘 이해하려면 다음 코드를 고려하십시오.
>>> dude = "thefourtheye"
>>> input_variable = input("Enter your name: ")
Enter your name: dude
>>> input_variable
'thefourtheye'
input
사용자로부터 문자열을 받아 현재 Python 컨텍스트에서 문자열을 평가합니다. 입력 dude
으로 입력 dude
하면 값에 바인딩되어 thefourtheye
평가 결과가 thefourtheye
되고에 할당됩니다 input_variable
.
현재 파이썬 컨텍스트에없는 다른 것을 입력하면 실패합니다 NameError
.
>>> input("Enter your name: ")
Enter your name: dummy
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'dummy' is not defined
Python 2.7의 보안 고려 사항 input
:
모든 사용자 유형이 평가되므로 보안 문제도 부과됩니다. 예를 들어, os
프로그램을 사용하여 이미 모듈을 로드 import os
한 다음 사용자는
os.remove("/etc/hosts")
이것은 파이썬에 의해 함수 호출 표현식으로 평가되어 실행될 것입니다. 높은 권한으로 Python을 실행하면 /etc/hosts
파일이 삭제됩니다. 얼마나 위험한가요?
이를 설명하기 위해 input
함수를 다시 실행 해 봅시다 .
>>> dude = "thefourtheye"
>>> input("Enter your name: ")
Enter your name: input("Enter your name again: ")
Enter your name again: dude
이제 input("Enter your name: ")
실행되면 사용자 입력을 기다리며 사용자 입력은 유효한 Python 함수 호출이므로 호출됩니다. 그래서 우리는 Enter your name again:
다시 프롬프트를 보게 됩니다.
따라서 다음 raw_input
과 같은 기능 을 사용하는 것이 좋습니다.
input_variable = raw_input("Enter your name: ")
결과를 다른 유형으로 변환해야하는 경우 적절한 함수를 사용하여에서 반환 된 문자열을 변환 할 수 있습니다 raw_input
. 예를 들어 입력을 정수로 읽으려면 이 답변에int
표시된 대로 함수를 사용하십시오. .
python 3.x 에는 사용자 입력을 얻는 함수가 하나 뿐이며 input
, 이는 Python 2.7과 동일합니다 raw_input
.
답변
Python 3이 아닌 Python 2를 실행하고 있습니다 raw_input
. Python 2에서 작동하려면을 사용하십시오 .
input_variable = raw_input ("Enter your name: ")
print ("your name is" + input_variable)
답변
Python 3.x를 작성하고 있으므로 다음과 같이 스크립트를 시작해야합니다.
#!/usr/bin/env python3
사용하는 경우 :
#!/usr/bin/env python
기본적으로 Python 2.x로 설정됩니다. #으로 시작하는 것이 없으면 스크립트의 첫 번째 줄로 이동합니다 ! (일명 shebang).
스크립트가 다음으로 시작하는 경우 :
#! python
그런 다음 다음과 같이 변경할 수 있습니다.
#! python3
이 짧은 형식은 실행기와 같은 일부 프로그램에서만 인식되므로 최선의 선택은 아닙니다.
처음 두 예제는 훨씬 더 널리 사용되며 Python이 설치된 모든 컴퓨터에서 코드가 작동하도록 도와줍니다.
답변
raw_input
python-2.7을 사용하고 있으므로 사용해야합니다 . 당신이 사용하는 경우 input()
(예 : 변수에 s = input('Name: ')
), 그것은 (당신이 변수에 쓴 저장하지 않고 파이썬 환경에서 명령을 실행합니다s
)를 당신이 정의되어 있지 쓴 경우 오류를 생성합니다.
raw_input()
변수에 쓴 내용을 올바르게 저장하고 (예 f = raw_input('Name : ')
🙂 오류가 발생하지 않으면 Python 환경에서 변수를 실행하지 않습니다.
input_variable = raw_input('Enter Your Name : ')
print("Your Name Is : " + (input_variable))
답변
파이썬 3 이상
s = raw_input()
온라인 사이트에서 정확하게 hackerrank를 해결하고 다음을 사용하는 경우 pycharm IDE의 문제를 해결합니다.
s = input()
답변
당신은 할 수 있습니다 :
x = raw_input("enter your name")
print "your name is %s " % x
또는:
x = str(input("enter your name"))
print "your name is %s" % x
답변
input_variable = input ("Enter your name: ")
print ("your name is" + input_variable)
작은 따옴표 나 큰 따옴표로 입력을 입력해야합니다
Ex:'dude' -> correct
dude -> not correct