如果是小数,下面的代码会显示错误(例如49.9)被发送到next
多变的。你能告诉我为什么吗?为什么int()
将其转换为整数?
next=raw_input("> ")
how_much = int(next)
if how_much < 50:
print"Nice, you're not greedy, you win"
exit(0)
else:
dead("You greedy bastard!")
如果我不使用int()
or float()
只需使用:
how_much=next
然后它会移动到“else”,即使我给出的输入为49.8
.
正如其他答案所提到的,int
如果字符串输入不可转换为 int(例如浮点数或字符),操作将崩溃。您可以做的是使用一个小辅助方法来尝试为您解释该字符串:
def interpret_string(s):
if not isinstance(s, basestring):
return str(s)
if s.isdigit():
return int(s)
try:
return float(s)
except ValueError:
return s
因此它将获取一个字符串并尝试将其转换为 int,然后转换为 float,否则返回字符串。这只是查看可转换类型的一般示例。如果您的值从该函数返回时仍然是字符串,那么您将需要将其报告给用户并要求新的输入,这将是一个错误。
也许是一个返回的变体None
如果它既不是 float 也不是 int:
def interpret_string(s):
if not isinstance(s, basestring):
return None
if s.isdigit():
return int(s)
try:
return float(s)
except ValueError:
return None
val=raw_input("> ")
how_much=interpret_string(val)
if how_much is None:
# ask for more input? Error?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)