我有字符串变量测试,在Python 2.7中这很好用。
test = raw_input("enter the test")
print test
但是在Python 3.3中。我用
test = input("enter the test")
print test
使用输入字符串sdas
,我收到一条错误消息
Traceback(最近一次调用最后一次):
文件“/home/ananiev/PycharmProjects/PigLatin/main.py”,
第5行,在test = input(“输入测试”)
NameError中的文件“”,第1行:名称'sdas'未定义
您正在使用Python 2解释器运行Python 3代码。如果你不是,你的print
声明会在它提示你输入之前抛出一个SyntaxError
。
结果是你正在使用Python 2的input
,它试图eval
你的输入(大概是sdas
),发现它是无效的Python,并且死了。
我要说你需要的代码是:
test = input("enter the test")
print(test)
否则,由于语法错误,它根本不应该运行。 print
函数需要在python 3中使用括号。但是我无法重现您的错误。你确定是那些导致错误的行吗?
sdas被读作变量。要输入字符串,您需要“”
我得到了同样的错误。在我键入“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)
好问题很简单,我不知道为什么人们会这么回答。
解:
如果使用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")
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)) ) )