==今天的课题
课本:https://reurl.cc/ROvEv6
综合案例1:双色球选号
起手式餵狗:https://zh.wikipedia.org/wiki/%E5%8F%8C%E8%89%B2%E7%90%83
由此可知
1.奖号由6红1蓝组成,红範围1-33、蓝範围1-16
import randomfor blue in range (1,7): print('blue%d=%d'%(blue,random.randint(1,33)))print('red=%d'%(random.randint(1,16)))
结果会重複,但乐透好像不能重複
这让我想到之前的验证码练习
既然都有直接随机字串了,或许random里会有随机数字又不重複的方法可以用?
===
结果找到了sample这个方法,他跟randint不同的地方在于一次可以取出一定数量的内容
不过只能输出字串..也就是说只能输出个位数字
这时我又想到之前的验证码,老师的解答是直接在一个变数里打上所有的材料
所以我也来试试看
import randomred=[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,30,31,32,33]blue=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]print('red=%s \nblue=%s'%(random.sample(red,5),random.sample(blue,1)))
搞定
看答案
from random import randrange, randint, sampledef display(balls): """ 输出列表中的双色球号码 """ for index, ball in enumerate(balls):#enumerate=枚举 if index == len(balls) - 1: print('|', end=' ') print('%02d' % ball, end=' ')#%02d=两位数佔位符,不够的用0填充 print()def random_select(): """ 随机选择一组号码 """ red_balls = [x for x in range(1, 34)] selected_balls = [] selected_balls = sample(red_balls, 6) selected_balls.sort() selected_balls.append(randint(1, 16)) return selected_balls#採用的是6红+1蓝的模式,1蓝用append加上去的def main(): n = int(input('机选几注: ')) for _ in range(n):#_为循环此数的意思 display(random_select())#display(balls),然后随机出球if __name__ == '__main__': main()
有种「虽然内容都看得懂,但要我模仿还是写不出来」的感觉,不知道该怎么办,不然就先继续学吧(?