《Python编程:从入门到实践(第2版)》课后题9-15求解

原题描述:

练习9-14:彩票  创建一个列表或元组,其中包含10个数和5个字母。从这个列表或元组中随机选择4个数或字母,并打印一条消息,指出只要彩票上是这4个数或字母,就中大奖了。

练习9-15:彩票分析  可以使用一个循环来明白前述彩票大奖有多难中奖。为此,创建一个名为my_ticket的列表或元组,再编写一个循环,不断地随机选择数或字母,直到中大奖为止。请打印一条消息,报告执行循环多少次才中了大奖。

个人问题:

已完成练习9-14,练习9-15陷入了无限循环,得不出结果来,求大神帮忙看看代码该如何修改,感谢!!

from random import randint, choice, sample

#练习9-14 &练习9-15
lottery = [1, 22, 43, 46, 55, 68, 72, 38, 99, 10,
           'A', 'L', 'G', 'S', 'Q']
my_lottery = choice(lottery)

my_ticket =[]
winning_num = sample(lottery, 4)
while True:
    ticket = choice(lottery)
    my_ticket.append(ticket)
    if my_ticket in winning_num:
        print('Congratulations!You got award!')
        break
    else:
        # print("Sorry!You lose!")
        continue
print(len(my_ticket))

敬请鞭挞!

from random import randint, choice, sample
#练习9-14 &练习9-15
lottery = [1, 22, 43, 46, 55, 68, 72, 38, 99, 10,
           'A', 'L', 'G', 'S', 'Q']
my_lottery = choice(lottery)
winning_num = sample(lottery, 4)
s = 0
while True:
    my_ticket = sample(lottery, 4)
    if my_ticket == winning_num:
        print('Congratulations!You got award!')
        print(f'循环{s}次才中了大奖')
        break
    else:
        s += 1
        # print("Sorry!You lose!")
        continue

 

9-14 这里的随机取四个,可以考虑使用random的随机打乱序列的方式,然后取前四个,就可以了

9-15 就是遍历所有的可能情况,与已有的列表比较

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632