错误代码:
tips='请输入披萨配料: '
tips+='\n(若输入quit可退出)'
active=True
while active==True:
message=input(tips)
if message=='quit':
active=False
else:
print(message)
用户输入值chicken后运行结果:
请输入披萨配料: (若输入quit可推出)chicken
Traceback (most recent call last):
File "lesson7_while.py", line 13, in <module>
message=input(tips)
File "<string>", line 1, in <module>
NameError: name 'chicken' is not defined
错误原因:
如果使用的是Python 2.7,应使用函数raw_input() 来提示用户输入。这个函数与Python 3中的input() 一样,也将输入解读为字符串。
Python 2.7也包含函数input() ,但它将用户输入解读为Python代码,并尝试运行它们。因此,最好的结果是出现错误,指出Python不明白输入的代码;而最糟的结果是,将运行你原本无意运行的代码。如果你使用的是Python 2.7,请使用raw_input() 而不是input() 来获取输入。
raw_input和input差别:
输入字符串 | 输入数字 | 输入字符串表达式 | 输入特殊字符 | |
raw_input() | 读取输入,返回类型为字符串 | 读取输入,返回类型为字符串 | 读取输入,返回类型为字符串 | 读取输入,返回类型为字符串 |
input() | 读取输入,但是输入的必须用‘ ’括起来 ,返回引号内的内容 | 读取输入,返回数值类型(int,float) | 读取输入,尝试运算表达式,返回运算结果 | 读取输入,但是输入的必须用‘ ’括起来 ,返回字符代表饿内容 |
以下两种方案的代码后运行正确:
方案1:使用raw_input(),因为tips的内容是字符串,所以用raw_input返回字符串
tips='请输入披萨配料: '
tips+='\n(若输入quit可退出)'
active=True
while active==True:
message=raw_input(tips)
if message=='quit':
active=False
else:
print(message)
方案2:使用input(),但是在控制台输入时将字符串用' '括起来。