我是一个初学者,他正在学习用Python编程,而且我遇到了这个问题。我试着寻找答案,但我真的不知道该搜索什么。
为什么我的功能会继续执行'否则'即使我在被问到时输入的数字低于150?相反,它应该运行一个名为' wish_second()'的第二个函数,但由于某种原因它会忽略它。
最初我的计划是让第一个功能激活其他'否则'只有在写一个大数字时才会这样做,但是现在它似乎继续用小数字来做,甚至在编写像#as;'之类的东西时,它应该继续要求有效的数字。
def wish_first():
print "You decide that you will first wish for gold coins. "
print "How many coins will you wish for? "
while True:
next = raw_input("> ")
try:
how_much = int(next)
except ValueError:
print "Learn to write a number!"
if next < 150:
print "You fill your pockets and think of a second wish. "
wish_second()
else:
dead("A bunch of coins fall on your head and you die.")
def wish_second():
print "You can't decide what you want to wish for. "
print "You're debating wheter to get home or wish for a unicorn. "
答案 0 :(得分:2)
您正在转换为int,但从不使用该变量
how_much = int(next)
但您的比较是针对字符串的 - if next < 150:
将您的比较更改为使用how_much
。您也可以执行此操作:next = int(raw_input("> "))
答案 1 :(得分:0)
您需要将输入值转换为int
next = int(raw_input("> "))
否则,您要将string
与此处的int
进行比较
if next < 150:
正如@davidism指出的那样,您也可以使用变量how_much
,因为您已将其转换为int
how_much = int(next)
所以你可以说
if how_much < 150:
答案 2 :(得分:0)
输入无效字符串(例如'asd')后,它不会继续询问数字,因为except
块中没有任何内容可以使其跳过其余代码并返回到开头while True
循环。因此,它正确输入except
中的代码,打印出错误消息,然后继续进行下一行比较。
解决这个问题的一种方法是在try
块中添加其余代码,以便仅在输入为数字时执行。例如(注意,我也改变了比较,如其他答案中所述):
def wish_first():
print "You decide that you will first wish for gold coins. "
print "How many coins will you wish for? "
while True:
next = raw_input("> ")
try:
how_much = int(next)
if how_much < 150:
print "You fill your pockets and think of a second wish. "
wish_second()
else:
dead("A bunch of coins fall on your head and you die.")
except ValueError:
print "Learn to write a number!"