input() error - NameError: 이름 '...'이 정의되지 않았습니다.
이 간단한 스크립트를 실행하려고 하면 오류가 발생합니다.
input_variable = input("Enter your name: ")
print("your name is" + input_variable)
예를 들어 "dude" 라고 입력하면 다음과 같은 오류가 나타납니다.
line 1, in <module>
input_variable = input("Enter your name: ")
File "<string>", line 1, in <module>
NameError: name 'dude' is not defined
저는 Mac OS X 10.9.1을 실행하고 있으며 Python 3.3 설치와 함께 제공된 Python Launcher 앱을 사용하여 스크립트를 실행하고 있습니다.
TL;DR
input
Python 2.7은 Python을 사용합니다. 문자열을는, 「읽다」를합니다.raw_input
Python 2.7은 Python 2.7을 사용합니다.
3. Python 3.x 를 하는 raw_input
.input
Python 3.0 릴리즈 노트를 인용하면
raw_input()
was was was was was was was was was was 。input()
,input()
가 함함 에서 행을sys.stdin
이치노키우다EOFError
입력이 조기에 종료된 경우.의input()
하다, 사용하다eval(input())
Python 2.7에서는 사용자 입력을 받아들이기 위해 사용할 수 있는 두 가지 기능이 있습니다.하나는 그렇다, 다른 하나는 그렇다.그들의 관계는 다음과 같이 생각할 수 있다.
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
.
컨텍스트에 하면 python은 합니다.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에 의해 함수 호출식으로 평가되어 실행됩니다.권한으로 Python은 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 에서는 사용자 입력을 받는 함수는 Python 2.7과 동등한 함수가 하나밖에 없습니다.raw_input
.
Python 3의 Python 2의 Python 2의 Python 3의 Python 2의 Python 2입니다.이 Python하려면 Python 2를 합니다.raw_input
.
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 입니다.#! (셰방)으로 시작하는 것이 없다면, 이것들은 대본의 첫 번째 줄에 들어갑니다.
스크립트가 다음 문자로 시작하는 경우:
#! python
다음으로 변경할 수 있습니다.
#! python3
이 짧은 포맷은 런처와 같은 일부 프로그램에서만 인식되므로 최적의 선택은 아닙니다.
처음 두 예는 훨씬 더 널리 사용되며 Python이 설치된 모든 기계에서 코드가 작동하도록 보장합니다.
python 2.7과 3.7에 대응하기로 되어 있던 모듈에서도 이 문제가 발생했습니다.
이 문제를 해결하기 위해 찾은 것은 Import입니다.
from six.moves import input
이것은 양쪽 통역사에게 유용성을 고정시켰다
당신은 여기서 6개의 라이브러리에 대해 더 많이 읽을 수 있다.
하면 됩니다.raw_input
7.14-2.7을 사용하고 입니다.「 」를 사용하는 input()
: (예:s = input('Name: ')
에 쓴 내용을 Python s
그리고, 기입한 내용이 정의되어 있지 않은 경우는, 에러를 작성합니다.
raw_input()
는 변수에 쓴 내용을 올바르게 저장합니다(예:f = raw_input('Name : ')
Python 환경에서는 에러가 발생하지 않는 한 실행하지 않습니다.
input_variable = raw_input('Enter Your Name : ')
print("Your Name Is : " + (input_variable))
input_variable = input ("Enter your name: ")
print ("your name is" + input_variable)
입력은 작은따옴표 또는 큰따옴표로 입력해야 합니다.
Ex:'dude' -> correct
dude -> not correct
python 3 이상의 경우
s = raw_input()
온라인 사이트에서 정확히 해커랭크를 풀면 pycharm IDE에서 문제를 해결할 수 있습니다.그 후 다음을 사용합니다.
s = input()
python 2와 python 3을 모두 사용할 수 있는 것을 사용하고 있습니다.
#Works in Python 2 and 3:
try: input = raw_input
except NameError: pass
print(input("Enter your name: "))
다음 중 하나를 수행할 수 있습니다.
x = raw_input("enter your name")
print "your name is %s " % x
또는 다음과 같이 입력합니다.
x = str(input("enter your name"))
print "your name is %s" % x
이러한 문제를 해결하려면 두 가지 방법이 있습니다.
첫 번째는 코드 변경 없이 간단합니다.
Python3에서 스크립트를 실행합니다.
python2에서 계속 실행하고 싶다면 python 스크립트를 실행한 후 입력 입력 입력 시 유의하십시오.- 들어가려면
string
그런 다음 "input goes with double-time"을 입력하기만 하면 python2.7에서 동작합니다. - 문자를 입력하려면 'input goes here'와 같이 작은 따옴표로 입력을 사용하십시오.
- 문제가 아닌 번호를 입력하려면 번호를 입력하기만 하면 됩니다.
- 들어가려면
두 번째 방법은 코드 변경입니다.
아래 Import를 사용하여 임의의 버전의 python을 실행합니다.from six.moves import input
- 사용하다
raw_input()
대신 기능하다input()
임의의 Import와 함께 코드로 기능합니다. - 코드를 삭제하다
str()
와 같은 기능을 하다str(input())
임의의 변수에 할당합니다.
에러가 시사하는 바와 같이:
이름 'filename'이 정의되지 않았습니다. 즉, python 'filename'이 여기서 변수가 되고 python 정의 유형의 값이 할당되지 않았습니다.
아기처럼 울기만 하기 때문에 변수를 정의하고 값을 할당하여 전달하면 작동하지만 사용자가 어떤 값을 입력할지 알 수 없고 사용자 입력을 캡처하고 사용자 입력을 캡처하고 싶습니다.
다음 방법에 관한 사실:
input()
기능:이 함수는 입력의 유형과 값을 변경하지 않고 그대로 가져옵니다.
raw_input()
기능:이 함수는 사용자가 입력한 내용을 유형 문자열로 명시적으로 변환합니다.주의:
input() 메서드의 취약성은 입력 값에 액세스하는 변수는 변수 또는 메서드의 이름만으로 누구나 액세스할 수 있다는 점에 있습니다.
사용해보십시오.raw_input
보다는input
현악기를 읽고 싶다면요.
print("Enter your name: ")
x = raw_input()
print("Hello, "+x)
이 문제에 직면할 가능성이 있는 다른 사람의 경우, 알고 보니#!/usr/bin/env python3
스크립트가 시작될 때 파일을 실행할 수 없는 경우 shebang은 무시됩니다.
파일의 실행 가능 여부를 확인하려면 다음 절차를 따릅니다.
- 달려.
./filename.py
명령줄에서 - 얻으면
-bash: ./filename.py: Permission denied
,달려.chmod a+x filename.py
- 달려.
./filename.py
다시.
다음을 포함하면import sys; print(sys.version)
Kevin의 제안대로 스크립트가 python3에 의해 해석되고 있는 것을 알 수 있습니다.
이전 기고문은 훌륭했다.
import sys; print(sys.version)
def ingreso(nombre):
print('Hi ', nombre, type(nombre))
def bienvenida(nombre):
print("Hi "+nombre+", bye ")
nombre = raw_input("Enter your name: ")
ingreso(nombre)
bienvenida(nombre)
#Works in Python 2 and 3:
try: input = raw_input
except NameError: pass
print(input("Your name: "))
이름 입력:조.('안녕', 'Joe', <ype 'str')안녕 조, 안녕 이름:조.조.
감사합니다.
IDE에서 사용하는 파이썬을 변경할 수 있습니다.이미 python 3.x를 다운로드하셨다면 전환이 어렵지 않을 것입니다.하지만 당신의 스크립트는 python 3.x에서 정상적으로 동작하고 있기 때문에 변경만 하면 됩니다.
print ("your name is" + input_variable)
로.
print ("your name is", input_variable)
콤마를 사용하면 공백으로 인쇄됩니다.your name is
및 사용자가 입력한 내용이 무엇이든 상관없습니다.AND: 2.7을 사용하는 경우raw_input
입력이 아닌
다음은 Python 2.7과 Python 3+ 모두와 호환되는 입력 함수입니다. (@Hardian에 의해 약간 수정된 답변)UnboundLocalError: local variable 'input' referenced before assignment
에러
def input_compatible(prompt=None):
try:
input_func = raw_input
except NameError:
input_func = input
return input_func(prompt)
또한 여기 다른 대안이 있습니다.try
블록:
def input_compatible(prompt=None):
input_func = raw_input if "raw_input" in __builtins__.__dict__ else input
return input_func(prompt)
언급URL : https://stackoverflow.com/questions/21122540/input-error-nameerror-name-is-not-defined
'programing' 카테고리의 다른 글
MyISAM의 모든 테이블을 InnoDB로 변환하려면 어떻게 해야 합니까? (0) | 2022.11.07 |
---|---|
키를 모르는 상태에서 JavaScript 객체의 모든 속성 값을 가져오려면 어떻게 해야 합니까? (0) | 2022.11.07 |
Cent에서 MariaDB 또는 MySQL을 완전히 삭제합니다.OS 7 또는 RHEL 7 (0) | 2022.11.07 |
숫자를 NaN이나 무한대로 설정할 수 있나요? (0) | 2022.11.07 |
tsv 파일을 Panda DataFrame에 로드하려면 어떻게 해야 합니까? (0) | 2022.11.07 |