【发布时间】:2014-03-26 01:16:59
【问题描述】:
我定义了以下函数来测试输入是否为正整数。我计划使用 eval(raw_input("...")) 所以这就是 try-except 部分存在的原因:
def is_ok(x): # checks if x is a positive integer
is_int = False
is_pos = False
try:
if type(eval(x)) == int:
is_int = True
if x > 0:
is_pos = True
else:
pass
else:
pass
except NameError:
is_int = False
print "not even a number!"
return is_int, is_pos
如果我尝试传递一个正整数,它将按预期返回 True, True。 它返回 False、False 和非数字的错误消息。
但是,对于负数,它仍然返回 True 以检查它是否为正数。 比如在函数后面加上这个:
is_int, is_pos = is_ok("-9")
print is_int, is_pos
运行打印: 真真
不明白为什么会这样,很想得到你的帮助。 即使有更有效的方法来实现这一点,我仍然想了解它为什么会产生 True True。 谢谢!
【问题讨论】:
-
你知道eval is evil,不是吗?
标签: python function exception-handling return