12

我有一个字符串变量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
4

7 回答 7

14

您正在使用 Python 2 解释器运行 Python 3 代码。如果你不是,你的陈述会在它提示你输入之前print抛出一个。SyntaxError

结果是您使用的是 Python 2 input,它尝试eval输入(大概sdas),发现它是无效的 Python,然后死掉。

于 2013-05-18T20:14:30.473 回答
6

我会说你需要的代码是:

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

否则,由于语法错误,它根本不应该运行。该print函数在 python 3 中需要括号。不过,我无法重现您的错误。你确定是那些行导致了那个错误吗?

于 2013-05-18T15:10:32.323 回答
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 版本python -V

如果 python 版本 3.xx 一个,那么错误就在你的语法中,比如使用带括号的print 。将其更改为

test = input("enter the test")
print(test)
于 2018-09-16T18:17:23.723 回答
1

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

于 2018-05-26T04:57:36.880 回答
0

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

于 2014-09-26T10:33:50.007 回答
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))  )  )
于 2019-03-03T15:03:24.347 回答
-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")
于 2019-01-27T14:44:23.270 回答