【发布时间】:2015-10-03 01:54:32
【问题描述】:
我的问题是关于这个程序如何处理意外输入。除非输入字符串,否则它似乎工作正常。
当一个字符串输入到 coin 时,会出现消息“请输入有效的输入”并再次运行 main,这是预期的。然后,当正确输入硬币中的金额之一时,程序会吐出正确的输入,但每次之前输入的字符串不正确时,它似乎都会“记住”并打印“感谢您的惠顾,您支付:0 加元”。因此,例如,将发生以下终端会话:
请以便士为单位选择硬币价值(不允许使用硬币):asd
请输入有效的输入
请以便士为单位选择硬币价值(不允许使用 toonies):嗯
请输入有效的输入
请选择以便士为单位的硬币价值(不允许使用硬币):100
感谢您的惠顾,您已支付:100 加元
感谢您的惠顾,您已支付:0 c CAD
感谢您的惠顾,您已支付:0 c CAD
我只想显示关于 100c 的声明。 我不明白是什么导致代码“记住”字符串输入。代码如下,我真的很困惑为什么会这样。当coinamount() 中的else 语句运行时,程序是否应该像我刚刚运行代码一样有效地'restart',因为正在重新分配用户输入并使用新提示? p>
coins = [0, 5, 10, 25, 100]
def coinamount(total):
coin = (input("Please select a coin value in pennies (No toonies allowed): "))
if coin == "q":
print("Quitting...")
elif coin.isnumeric():
coin = int(coin)
total += coin
else:
print("Please enter a valid input")
main()
return total
def verification(coin):
if coin in coins:
print("Thank you for your patronage, you paid:", coin, "c CAD")
elif coin == 200:
print("I told you we don't accept toonies...")
main()
else:
print("Please enter a valid coin amount")
main()
def main():
tab = 0
tabplus = coinamount(tab)
verification(tabplus)
main()
【问题讨论】:
-
那是因为您(错误地)对任务使用了递归。请不要。
标签: python python-3.x while-loop