【发布时间】:2016-06-07 17:32:49
【问题描述】:
我下面有这个功能,我在某处做错了。
def quantityFunction(product):
valid = False
while True:
if product is not None:
quantity = input("Please enter the amount of this item you would like to purchase: ")
for i in quantity:
try:
int(i)
return int(quantity)
valid = True
except ValueError:
print("We didn't recognise that number. Please try again.")
#If I get here, I want to loop back to the start of this function
return True
return False
为了运行,从程序的主要部分调用该函数,如下所示:quantity = quantityFunction(product)
代码底部的return False与if product为None有关,这是在另一个函数中的一些代码之后需要的,但必须进入这个函数。
如果用户输入的数量是一个数字,一切正常。如果是其他内容,则会打印值错误,您可以输入另一个输入。如果你输入另一个字母等,它会再次重复,如果你输入一个数字,它会接受它。
但是,它不会返回您在字母后面输入的数字。它只返回 0。
我怀疑这与我重复代码的方式有关,即如果遇到值错误,代码应该循环回到函数的开头。
有什么想法吗?
【问题讨论】:
-
你在 except 块中有一个 return 语句。只需打印错误消息,它应该可以正常工作。
-
为什么要定义
valid?它从未使用过。为什么是for循环?为什么不尝试立即将数量转换为 int? -
现在我已经从 except 块中取出了 return,函数没有循环,我怎样才能让它这样做? @SilentMonk