题目内容:这两题需要大家从10个数和5个字母中取出4位作为中奖号码,再执行一个循环,得出循环多少次才能中奖。
题目看起来平平无奇,可问题是前面书中只讲了random库中的choice()
和 randint()
函数,如果用现有知识做肯定需要判定取出数字位数,以及是否取出了重复的值,非常麻烦。
不过如果先知难而退做了9-16,其实可以random库的介绍中发现还有个sample()
函数,它直接能随机返回一组不重复的值 (generates samples without repeating values and without modifying the input sequence),这个时候咱再回头看9-14、9-15就巴适得很。
"""4位数彩票"""
from random import sample
numbers_15 = [
1, 2, 3, 4, 5,
6, 7, 8, 9, 10,
'a', 'b', 'c', 'd', 'e'
]
luck_number = sample(numbers_15, 4) #随机从numbers_15返回含有4个值的list
your_ticket = sample(numbers_15, 4)
n = 0 #循环次数
while luck_number != your_ticket:
n += 1
your_ticket = sample(numbers_15, 4)
print(f"You buy {n} ticket to win the lottery")
print(f"Your luck number is {your_ticket}")
运行结果:
You buy 38431 ticket to win the lottery
Your luck number is [9, 10, 2, 'e']
当然出题者应该更希望我们通过choice()
函数完成题目来锻炼编程逻辑,所以关于正道的光推荐大家参考这位大神的作业。