我有一个字符串变量
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 2 解释器运行 Python 3 代码。如果不是,您的
print
语句会在提示您输入之前抛出 SyntaxError
。
input
,它试图 eval
你的输入(大概是 sdas
),发现它是无效的 Python,然后死掉。
我想说你需要的代码是:
test = input("enter the test")
print(test)
否则,由于语法错误,它根本不应该运行。
print
函数在 python 3 中需要括号。不过,我无法重现您的错误。您确定是这些行导致了该错误吗?
我遇到了同样的错误。当我在终端中输入“python filename.py”时,使用此命令,python2 会尝试运行 python3 代码,因为它是用 python3 编写的。当我在终端中输入“python3 filename.py”时,它运行正确。我希望这也适合你。
在 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)
sdas 被作为变量读取。要输入字符串,您需要“”
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)) ) )
如果我们抛开 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")