在Python中的用户输入后,“NameError:name‘未定义”

在Python中的用户输入后,“NameError:name‘未定义”

我完全不明白为什么这不管用。应该准确地工作,对吧?

UserName = input("Please enter your name: ")
print ("Hello Mr. " + UserName)
raw_input("<Press Enter to quit.>")

我明白这个例外:

Traceback (most recent call last):  
  File "Test1.py", line 1, in <module>
    UserName = input("Please enter your name: ")
  File "<string>", line 1, in <module>
NameError: name 'k' is not defined

上面写着NameError 'k',因为我写了'k'作为我测试中的输入。我读过打印语句曾经没有括号,但这已经被废弃了,对吗?


PIPIONE
浏览 2866回答 3
3回答

HUH函数

不使用input()在2.x。使用raw_input()相反。一直都是。

慕的地8271018

在Python2.x中,input()“计算”键入的内容。(见help(input))。因此,当您输入k,&nbsp;input()想找出什么k是。因为没有定义它,所以它会引发NameError例外。使用raw_input()在Python2.x中。在3.0x,input()是固定的。如果你真的想用input()(这确实是不可取的),然后引用k变量如下:>>>&nbsp;UserName&nbsp;=&nbsp;input("Please&nbsp;enter&nbsp;your&nbsp;name:&nbsp;") Please&nbsp;enter&nbsp;your&nbsp;name:&nbsp;"k" >>>&nbsp;print&nbsp;UserName k

Qyouu

可接受的答案提供了正确的解决方案,@ghstdog74给出了异常的原因。我想,一步地了解为什么这会引发一个NameError(而不是其他东西,比如ValueError):根据Python2.7文档,input()评价您输入的内容,所以本质上是您的程序变成如下:username&nbsp;=&nbsp;input('...') #&nbsp;=>&nbsp;translates&nbsp;to username&nbsp;=&nbsp;eval(raw_input('...'))假设输入是bob,这就变成了:username&nbsp;=&nbsp;eval('bob')自eval()执行‘bob’就好像它是Python表达式一样,您的程序变成如下:username&nbsp;=&nbsp;bob&nbsp; =>&nbsp;NameError print&nbsp;("Hello&nbsp;Mr.&nbsp;"&nbsp;+&nbsp;username)你,你们能让它工作,我输入“bob”(带有引号),因为程序是有效的:username&nbsp;=&nbsp;"bob"&nbsp; print&nbsp;("Hello&nbsp;Mr.&nbsp;"&nbsp;+&nbsp;username) =>&nbsp;Hello&nbsp;Mr.&nbsp;bob您可以通过在PythonREPL你自己。请注意,异常已在第一行引发,而不是在print语句中引发。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python