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
。
我如何更改它,使它可以进入代码,为他们提供他们需要输入一个数字的print语句?
7条答案
按热度按时间j8ag8udp1#
删除eval,您代码就是正确的:
只需检查浮动即可:
ct2axkht2#
声明一个全局值比传递一个参数容易吗,在我的例子中,它也会给出一个错误。
无法评论:)
dly7yett3#
您可以简单地cae到
float
或int
并捕获异常(如果有的话)。您使用的eval被认为是不好的,并且您添加了许多冗余语句。“为什么不使用eval?”您会问,那么...请尝试用户的以下输入:
[1 for i in range (100000000)]
vcirk6k64#
你可以使用一个名为isnumeric的String对象方法。它比try-except方法更有效。请看下面的代码。
a6b3iqyw5#
qlvxas9a6#
可能有点太晚了,但要做到这一点,你可以这样做:
但要使其在某个数字范围内,可以执行以下操作:
xwbd5t1u7#
实际上,如果你要使用 eval(),你必须定义更多的东西。
它是 eval() 的基本控制机制。