所以我刚刚完成了关于艰难地学习 Python 的练习 35 http://learnpythonthehardway.org/book/ex35.html
下面的函数来自那个练习。我意识到仅通过检查“下一个”是“0”还是“1”而不是任何数字(通过使用 .isdigit() 或类似方法)是有缺陷的,这会导致任何大于 1 但小于 1 的输入出错超过 10 个。
然而,10 或更大的输入似乎工作正常。例如,如果我输入显然不是“0”或“1”的“13”,则此语句“如果下一个是“0”或下一个是“1”:”返回真,这怎么可能?
def gold_room(): 打印“这个房间里满是金子。你拿了多少?”
next = raw_input("> ")
if "0" in next or "1" in next:
how_much = int(next)
else:
dead("Man, learn to type a number.")
if how_much < 50:
print "Nice, you're not greedy, you win!"
exit(0)
else:
dead("You greedy bastard!")
最佳答案
raw_input()
返回一个字符串。表达式 '0' in string or '1' in string
执行两个子字符串搜索。 '1' in '9999'
将评估为 False
因此数字 >= 10 也可能无法通过该测试。
这个练习试图告诉你,你需要检查 raw_input()
返回的字符串是合法的数字符号,并从中获取一个 int
值:
try: how_much = int(next) except ValueError: dead("Man, learn to type a number.")
注意:记住哪种操作可能引发哪些异常是学习 Python 时的一个重要主题。大多数教程都没有足够强调这一点。初学者会想记住:
int('x')
会引发ValueError
{}['KEY']
会引发KeyError
[][0]
会引发IndexError
编写任何将字符串转换为数字或使用列表或字典的 Python 代码时。
关于python - 艰难地学习 Python,EX35。为什么大于 10 的数字返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22418588/