[D-350]Python 7/100天_综合案例1

==今天的课题
课本: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()

有种「虽然内容都看得懂,但要我模仿还是写不出来」的感觉,不知道该怎么办,不然就先继续学吧(?


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章