代码工作,直到添加更多 - 现在得到一个NameError

时间:2016-11-14 23:38:32

标签: python canopy

# -*- coding: utf-8 -*-
#displays title

print ("          H___________________________________________   ")
print ("/========/| █░█ █▀▀█ █▀▀█ █░░ █▀▀█ █▀▀▄ █▀▀▄ \ ")
print ("|||||||||||-█̶▀̶▄̶ ̶█̶░̶░̶█̶ ̶█̶░̶░̶█̶ ̶█̶░̶░̶ ̶█̶▄̶▄̶█̶ ̶█̶░̶░̶█̶ ̶█̶░̶░̶█̶ -\ ")
print ("\========\|_▀̲░̲▀̲ ̲▀̲▀̲▀̲▀̲ ̲▀̲▀̲▀̲▀̲ ̲▀̲▀̲▀̲ ̲▀̲░̲░̲▀̲ ̲▀̲░̲░̲▀̲ ̲▀̲▀̲▀̲░̲ __\ ")
print ("          H ")
print ("          = ")

#intro
print ("Welcom to the land of kool")

#asks your name
name = input ("Can you tell me your name!")

#says hello
print ("Well hello",name,"!")

显示错误:

NameError: name '______' is not defined

2 个答案:

答案 0 :(得分:3)

根据您使用的Python版本,您可能需要使用..

name = raw_input("Can you tell me your name!")

请查看此内容以供参考。 What's the difference between raw_input() and input() in python3.x?

答案 1 :(得分:1)

TL; DR

在Python 2.x中使用raw_input()代替input(),因为input()eval(raw_input))的“简写”。

在Python 2.7中,您需要使用raw_input()而不是input()raw_input()允许您将用户输入作为字符串读入,而input()eval(raw_input())的“简写”,它试图将用户输入作为文字Python代码进行评估

这在python 2.x文档中有记载:

  

[input()是]等同于eval(raw_input(prompt))

     

此功能不会捕获用户错误。如果输入在语法上不合法,则会引发SyntaxError。如果在评估过程中出现错误,可能会引发其他异常。

     

如果加载了readline模块,则input()将使用它来提供精细的行编辑和历史记录功能。

     

考虑将raw_input()函数用于用户的一般输入。

但是后来在Python 3.x中进行了更改。在Python 3.x raw_input()成为input(),旧输入(eval(raw_input()))被删除。这在What's new in Python 3

中有记录
  

PEP 3111:raw_input() 已重命名为 input()。也就是说,新的input()函数从sys.stdin读取一行,并在删除尾随换行符的情况下返回该行。如果输入提前终止,它会引发EOFError。要获取input()的旧行为,请使用eval(input())

(强调我的)

因此在Python 2.x中使用raw_input()而不是input(),因为input()eval(raw_input))的“简写”。例如。变化:

name = input ("Can you tell me your name!")

name = raw_input ("Can you tell me your name!")