Python输入错误[重复]

问题描述 投票:0回答:4

我在 Mac OSX 10.9.5m 上运行 python 2.7.10,但它不起作用。这是代码:

# YourName.py
name = input("What is your name?\n")
print("Hi, ", name)

错误如下:

Python 2.7.10 (v2.7.10:15c95b7d81dc, May 23 2015, 09:33:12) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
What is your name?
Ella
Traceback (most recent call last):
  File "/Users/CentCom/Downloads/code/ch01/YourName.py", line 2, in <module>
    name = input("What is your name?\n")
  File "<string>", line 1, in <module>
NameError: name 'Ella' is not defined
>>> 
python input
4个回答
5
投票

在Python 2.7.1中使用

raw_input

name = raw_input("What is your name?\n")

否则你必须依赖用户足够了解才能输入带引号的字符串。像

"David"
,或者输入尝试评估名称(变量/对象/等),如果范围内没有这样的名称,您将收到错误。

或者,使用异常处理:

name = input("What is your name?\n")
try:
    print("Hi, ", name)
except NameError, e:
    print("Please enclose your input with quotes")

3
投票

对于您使用的 Python 版本,您应该使用

raw_input
而不是
input

您可以更改这行代码:

name = input("What is your name?\n")

对此:

name = raw_input("What is your name?\n")

当您使用 Python 2 时,最好只使用

raw_input
。当您使用
input
时,Python 将始终尝试“评估”您输入的表达式。

这里解释了为什么使用

input
对于 Python 2 来说不是一个好的选择:

因此,如果您输入 5,它将返回数字 5(Python 中的

int
)。

但是如果你输入 bob,它会认为你给了 Python 一个名为 bob 的“变量”来求值,但 bob 在你的程序中并没有被定义为变量。这个例子实际上给出了您收到的错误:

NameError: name 'bob' is not defined

在Python中,如果你输入一个不存在的变量,那就是你得到的错误。看看我做的这个例子:

我尝试打印变量 d 而不为 d 分配任何内容:

>>> d
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'd' is not defined

因此,如果您想将 bob 作为字符串提供给您的输入,

input
希望您提供 bob 引号以使其成为有效字符串,如下所示:“bob”。为了避免这一切,raw_input 是正确的选择。

如果您决定使用 Python 3,Python 3 会将

raw_input
替换为
input
。但它的行为与 Python 2 的
raw_input
完全相同。

祝您编程顺利!


这是有关 raw_input 的文档:

https://docs.python.org/2/library/functions.html#raw_input


1
投票

Input
尝试评估给定字符串是否为程序。 对于单独的字符串,请使用
raw_input
。或者你必须引用输入的字符串,以允许 python 将其解释为字符串。 例如:

"Ella"

0
投票

用于获取用户输入的Python 3.X 语法

name = input("What is your name?\n")

用于获取用户输入的Python 2.X 语法

name = raw_input("What is your name?\n")

© www.soinside.com 2019 - 2024. All rights reserved.