【发布时间】:2014-12-16 23:51:20
【问题描述】:
mark= eval(raw_input("What is your mark?"))
try:
int(mark)
except ValueError:
try:
float(mark)
except ValueError:
print "This is not a number"
所以我需要制作一个 Python 程序来查看您的标记,并根据标记的内容为您提供不同的响应。
但是,我还需要添加一种方法来阻止将不是数字的随机文本输入到程序中。
我以为我已经找到了解决这个问题的方法,但它不会让它超过故障安全代码的第一条语句,如果它不是数字的话,它意味着捕获它。
如果我输入 hello 而不是数字,那么几乎会发生什么,它会在第一行失败并返回一个错误,上面写着 exceptions:NameError: name 'happy' is not defined。
我怎样才能改变它,以便它可以使它成为为他们提供他们需要输入数字的打印语句的代码?
【问题讨论】:
-
不要使用评估
-
为什么在这段代码中还需要
eval?没有它,它应该可以正常工作。 -
尝试使用 assert 或 isInstance
-
@Bogdan 因为用户可以输入命令,例如rm -rf / 在python中使用系统命令,如果python以root权限运行,问题就大了。
-
@Marcin:如果他使用
eval,这是一个问题,我的评论说他不需要使用它。
标签: python python-2.x