python 3中的输入字符串

input string in python 3

我有字符串变量测试,在Python2.7中,这很好。

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

但在python 3.3中。我用

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

使用输入字符串sdas,我得到一条错误消息

Traceback (most recent call last):

File"/home/ananiev/PycharmProjects/PigLatin/main.py",

line 5, in
test = input("enter the test")

File"", line 1, in NameError: name 'sdas' is not defined


您正在使用python 2解释器运行python 3代码。如果没有,那么在提示输入之前,您的print语句将抛出一个SyntaxError

结果是,您使用的是python 2的input,它尝试eval您的输入(可能是sdas),发现它是无效的python,然后死亡。


我想你需要的代码是:

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

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


1
2
3
4
5
6
7
8
9
10
11
12
13
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))  )  )

这个问题很简单,我不知道为什么人们会回答得这么糟糕。

解决方案:

如果使用python 2.x:

1
2
3
4
5
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:

1
2
3
4
5
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")

在Ubuntu之类的操作系统中,python是预装的。所以默认版本是python 2.7,您可以通过在终端中键入下面的命令来确认版本。

1
python -V

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

1
python 2.7

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

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

1
alias python=python3

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

source ~/.bash_aliasessource ~/.bashrc

现在使用python -V再次检查python版本

如果python版本3.x.x 1,那么错误在您的语法中,就像使用带括号的print一样。把它改成

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

我也犯了同样的错误。在终端中,当我键入"python filename.py"时,使用此命令,python2将运行python3代码,因为它是写python3的。当我在终端中键入"python3 filename.py"时,它会正确运行。我希望这对你也有用。


sdas作为一个变量被读取。若要输入所需的字符串,""