我有一个循环,直到用户按下Ctrl + C。
然后要求用户输入y / n。
如果用户按'y'
,那么我会eval('continue')
。
如果用户按'n'
,那么我会eval('break')
。
while True:
try:
...
except KeyboardInterrupt:
...
options = {'y':'continue','n':'break'}
while True:
decision = raw_input('continue (y/n)?')
if decision in options:
break
eval(options[decision])
当我按'y'
时,我得到:
continue
^
SyntaxError: unexpected EOF while parsing
当我按'n'
时,我得到:
break
^
SyntaxError: unexpected EOF while parsing
有人可以解释一下我在这里缺少什么吗?
答案 0 :(得分:4)
eval()
仅评估表达式。 break
和continue
不是表达式,而是(simple) statements。
你不能在这里从变量运行这样的语句;编译器需要知道预先将使用这些语句,因为字节码中涉及跳跃偏移。只需使用if
测试:
if decision == 'y':
continue
elif decision == 'n':
break