練習 9.14:彩票 創建?個列表或元素,其中包含 10 個數和 5 個字
?。從這個列表或元組中隨機選擇 4 個數或字?,并打印?條消息,
指出只要彩票上是這 4 個數或字?,就中?獎了。
練習 9.15:彩票分析 可以使??個循環來理解中前述彩票?獎有多
難。為此,創建?個名為 my_ticket 的列表或元組,再編寫?個循
環,不斷地隨機選擇數或字?,直到中?獎為?。請打印?條消息,
報告執?多少次循環才中了?獎
from random import choicedef get_winning_ticket(possibilities):"""Return a winning ticket from a set of possibilities."""winning_ticket = []while len(winning_ticket) < 4:item = choice(possibilities)if item not in winning_ticket:winning_ticket.append(item)return winning_ticketdef check_ticket(player_ticket,winning_ticket):"""Check all elements in the played ticket. If any are not in the winning ticket, return False."""for item in player_ticket:if item not in winning_ticket:return Falsereturn Truedef make_random_ticket(possibilities):"""Make a random ticket from a set of possibilities"""ticket=[]while len(ticket)<4:item=choice(possibilities)if item not in ticket:ticket.append(item) return ticketpossibilities = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, "a", "b", "c", "d", "e"]
winning_ticket=get_winning_ticket(possibilities)plays=0
won=False
times=1_000_000while not won:new_ticket=make_random_ticket(possibilities)won=check_ticket(new_ticket,winning_ticket)plays+=1if plays>=times:break
if won:print("We have a winning ticket!")print(f"Your ticket: {new_ticket}")print(f"Winning ticket: {winning_ticket}")print(f"It only took {plays} tries to win!")
else:print(f"Tried {plays} times, without pulling a winner. :(")print(f"Your ticket: {new_ticket}")print(f"Winning ticket: {winning_ticket}")