programing

input() error - NameError: 이름 '...'이 정의되지 않았습니다.

firstcheck 2022. 11. 7. 21:58
반응형

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

inputPython 2.7은 Python을 사용합니다. 문자열을는, 「읽다」를합니다.raw_inputPython 2.7은 Python 2.7을 사용합니다.

3. Python 3.x 를 하는 raw_input.inputPython 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입력으로서, 그것은 그것을 발견한다.dudethefourtheye 결과 결과가 '평가의 결과'가 됩니다.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_input7.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 스크립트를 실행한 후 입력 입력 입력 시 유의하십시오.

    1. 들어가려면string그런 다음 "input goes with double-time"을 입력하기만 하면 python2.7에서 동작합니다.
    2. 문자를 입력하려면 'input goes here'와 같이 작은 따옴표로 입력을 사용하십시오.
    3. 문제가 아닌 번호를 입력하려면 번호를 입력하기만 하면 됩니다.
  • 두 번째 방법은 코드 변경입니다.
    아래 Import를 사용하여 임의의 버전의 python을 실행합니다.

    1. from six.moves import input
    2. 사용하다raw_input()대신 기능하다input()임의의 Import와 함께 코드로 기능합니다.
    3. 코드를 삭제하다str()와 같은 기능을 하다str(input())임의의 변수에 할당합니다.

에러가 시사하는 와 같이:
이름 'filename'이 정의되지 않았습니다. 즉, python 'filename'이 여기서 변수가 되고 python 정의 유형의 값이 할당되지 않았습니다.
아기처럼 울기만 하기 때문에 변수를 정의하고 값을 할당하여 전달하면 작동하지만 사용자가 어떤 값을 입력할지 알 수 없고 사용자 입력을 캡처하고 사용자 입력을 캡처하고 싶습니다.

다음 방법에 관한 사실:
input()기능:이 함수는 입력의 유형과 값을 변경하지 않고 그대로 가져옵니다.
raw_input()기능:이 함수는 사용자가 입력한 내용을 유형 문자열로 명시적으로 변환합니다.

주의:
input() 메서드의 취약성은 입력 값에 액세스하는 변수는 변수 또는 메서드의 이름만으로 누구나 액세스할 수 있다는 점에 있습니다.

사용해보십시오.raw_input보다는input현악기를 읽고 싶다면요.

print("Enter your name: ")
x = raw_input()
print("Hello, "+x)

Image contains the output screen

이 문제에 직면할 가능성이 있는 다른 사람의 경우, 알고 보니#!/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', &ltype '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

반응형