我是一个python新手。我熟悉循环并从书中试过这个例子
while True:
s = input('Enter something : ')
if s == 'quit':
break
print('Length of the string is', len(s))
print('Done')
但输出如下
Enter something : ljsdf
Traceback (most recent call last):
File "trial_2.py", line 2, in <module>
s = input('Enter something : ')
File "<string>", line 1, in <module>
NameError: name 'ljsdf' is not defined
答案 0 :(得分:7)
您必须使用raw_input()
(Python 2.x),因为input()
等同于eval(raw_input())
,因此它将您的输入解析并评估为有效的Python表达式。
while True:
s = raw_input('Enter something : ')
if s == 'quit':
break
print('Length of the string is', len(s))
print('Done')
注意:
input()
不会捕获用户错误(例如,如果用户输入了一些无效的Python表达式)。 raw_input()
可以执行此操作,因为它会将输入转换为string
。 For futher information, read Python docs
答案 1 :(得分:3)
你想在python2中找到raw_input()
while True:
s = raw_input('Enter something : ')
if s == 'quit':
break
print 'Length of the string is', len(s)
print 'Done'
input()
试图评估(危险地!)你给它的东西
答案 2 :(得分:2)
您的代码在python 3.x中运行良好
但是如果您使用的是python 2,则必须使用raw_input()
输入字符串while True: s = raw_input('Enter something : ') if s == 'quit': break print('Length of the string is', len(s)) print('Done')
答案 3 :(得分:1)
答案 4 :(得分:1)
在Python 2.x input()
中,根据用户的输入,返回数字,int或float,你也可以输入变量名。
你需要使用:
raw_input('Enter something: ')
引起错误是因为Python认为“ljsdf”是变量的名称,这就是它引发此异常的原因:
NameError: name 'ljsdf' is not defined
因为“ljsdf”未定义为变量。 :d
raw_input()
使用起来更安全,然后将输入转换为以下任何其他类型:D