问候程序

6 投票
3 回答
14291 浏览
提问于 2025-04-17 04:12

我一直在通过《Python绝对初学者指南》这本书学习Python编程。现在我遇到一个问题,就是在使用eclipse-pydev的时候,它不让我使用if语句。我写的代码是……

name = input("What is your name? ")
print(name)
print("Hello" name )

结果是

What is your name? caleb
Traceback (most recent call last):
  File "/Users/calebmatthias/Document/workspace/de.vogella.python.first/simpprogram.py", line 6, in <module>
    name = input("What is your name? ")
  File "/Users/calebmatthias/Desktop/eclipse 2/plugins/org.python.pydev_2.2.3.2011100616/PySrc/pydev_sitecustomize/sitecustomize.py", line 210, in input
    return eval(raw_input(prompt))
  File "<string>", line 1, in <module>
NameError: name 'caleb' is not defined

当我写if语句时,我输入了

name = input("What is your name? ")
if name == ("Caleb"):
    print(" Hello Bud!")

结果是

  What is your name? Caleb
Traceback (most recent call last):
  File "/Users/calebmatthias/Document/workspace/de.vogella.python.first/simpprogram.py", line 6, in <module>
    name = input("What is your name? ")
  File "/Users/calebmatthias/Desktop/eclipse 2/plugins/org.python.pydev_2.2.3.2011100616/PySrc/pydev_sitecustomize/sitecustomize.py", line 210, in input
    return eval(raw_input(prompt))
  File "<string>", line 1, in <module>
NameError: name 'Caleb' is not defined    

3 个回答

3
>>> help(input)

input([prompt]) -> value

Equivalent to eval(raw_input(prompt)).

使用 raw_input

4

原因是你使用了 input 函数,这个函数会期待用户输入一个可以被 Python 解释的字符串。你可以试试把它改成 raw_input,这样就不会去评估输入的内容,而是直接给你一个原始的字符串。
另外,你可以把打印语句改成这样:print "Hello", name。你在第一个例子中漏掉了一个逗号。

9

使用 raw_input 而不是 input

Python的开发者们其实应该把这两个函数改个名字,这样初学者就不容易搞混了。

当你在提示符下输入 caleb 并使用 input 时,程序会试图把 caleb 当作一个变量来处理。可是这个变量 caleb 并没有被定义,所以就会出现错误。

撰写回答