为什么 Python 3 中的 `input` 抛出 NameError: name... is not Define [重复]

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

我有一个字符串变量

test
,在Python 2.x中这工作正常。

test = raw_input("enter the test") 
print test

但在 Python 3.x 中,我这样做:

test = input("enter the test") 
print test

输入字符串

sdas
,我收到一条错误消息

Traceback (most recent call last):
 File "/home/ananiev/PycharmProjects/PigLatin/main.py", line 5, in <module>
    test = input("enter the test")
 File "<string>", line 1, in <module> 
NameError: name 'sdas' is not defined
python input python-2.x
7个回答
14
投票

您正在使用 Python 2 解释器运行 Python 3 代码。如果不是,您的

print
语句会在提示您输入之前抛出
SyntaxError

结果是你使用的是 Python 2 的

input
,它试图
eval
你的输入(大概是
sdas
),发现它是无效的 Python,然后死掉。


6
投票

我想说你需要的代码是:

test = input("enter the test")
print(test)

否则,由于语法错误,它根本不应该运行。

print
函数在 python 3 中需要括号。不过,我无法重现您的错误。您确定是这些行导致了该错误吗?


1
投票

我遇到了同样的错误。当我在终端中输入“python filename.py”时,使用此命令,python2 会尝试运行 python3 代码,因为它是用 python3 编写的。当我在终端中输入“python3 filename.py”时,它运行正确。我希望这也适合你。


1
投票

在 Ubuntu 等操作系统中预装了 python。因此默认版本是 python 2.7,您可以通过在终端中输入以下命令来确认版本

python -V

如果您安装了它但没有设置默认版本,您将看到

python 2.7

在终端。我将告诉你如何在 Ubuntu 中设置默认的 python 版本。

一个简单安全的方法是使用别名。将其放入 ~/.bashrc~/.bash_aliases 文件:

alias python=python3

在文件中添加上述内容后,运行以下命令:

source ~/.bash_aliases
source ~/.bashrc

现在再次使用

python -V

检查 python 版本

如果 python 版本 3.x.x 之一,则错误出在您的语法中,例如使用带有括号的 print 。将其更改为

test = input("enter the test")
print(test)

0
投票

sdas 被作为变量读取。要输入字符串,您需要“”


0
投票
temperature = input("What's the current temperature in your city? (please use the format ??C or ???F) >>> ")

### warning... the result from input will <str> on Python 3.x only
### in the case of Python 2.x, the result from input is the variable type <int>
### for the <str> type as the result for Python 2.x it's neccessary to use the another: raw_input()

temp_int = int(temperature[:-1])     # 25 <int> (as example)
temp_str = temperature[-1:]          # "C" <str> (as example)

if temp_str.lower() == 'c':
    print("Your temperature in Fahrenheit is: {}".format(  (9/5 * temp_int) + 32      )  )
elif temp_str.lower() == 'f':
    print("Your temperature in Celsius is: {}".format(     ((5/9) * (temp_int - 32))  )  )

-1
投票

如果我们抛开 print 的语法错误,那么在多种场景下使用 input 的方式是 -

如果使用 python 2.x :

then for evaluated input use "input"
example: number = input("enter a number")

and for string use "raw_input"
example: name = raw_input("enter your name")

如果使用 python 3.x :

then for evaluated result use "eval" and "input"
example: number = eval(input("enter a number"))

for string use "input"
example: name = input("enter your name")
© www.soinside.com 2019 - 2024. All rights reserved.