Try and except in Python, unexpected output
编辑:更改条件..谢谢
我正在尝试学习try / exception。 我没有得到我应该的输出。 它通常是一杯或没有。 理想情况下,它应该是9或10。
说明:
创建一个NoCoffee类,然后编写一个名为make_coffee的函数,执行以下操作:使用随机模块以95%的概率通过打印消息创建一壶咖啡并正常返回。 有5%的几率,提高NoCoffee错误。
接下来,编写一个函数attempt_make_ten_pots,它使用try块和for循环来尝试通过调用make_coffee来生成10个pot。 函数attempt_make_ten_pots必须使用try块处理NoCoffee异常,并且应该为实际生成的pot数返回一个整数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import random # First, a custom exception class NoCoffee(Exception): def __init__(self): super(NoCoffee, self).__init__() self.msg ="There is no coffee!" def make_coffee(): try: if random.random() <= .95: print"A pot of coffee has been made" except NoCoffee as e: print e.msg def attempt_make_ten_pots(): cupsMade = 0 try: for x in range(10): make_coffee() cupsMade += 1 except: return cupsMade print attempt_make_ten_pots() |
如果你想允许95%那么条件应该是
1 | if random.random() <= .95: |
现在,为了让你的程序抛出一个错误并返回所做的咖啡数量,你需要在随机值大于.95时引发一个异常,它应该在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import random # First, a custom exception class NoCoffee(Exception): def __init__(self): super(NoCoffee, self).__init__() self.msg ="There is no coffee!" def make_coffee(): if random.random() <= .95: print"A pot of coffee has been made" else: raise NoCoffee def attempt_make_ten_pots(): cupsMade = 0 try: for x in range(10): make_coffee() cupsMade += 1 except NoCoffee as e: print e.msg return cupsMade print attempt_make_ten_pots() |