100个python算法超详细讲解:双色球

1.问题描述
编写程序模拟福利彩票的双色球开奖过程,由程序产生出6个红色
球和1个蓝色球。
要求:
1)每期开出的红色球号码不能重复,但蓝色球可以是红色球中的
一个。
2)红色球的范围是1~33,蓝色球的范围是1~16。
3)输出格式为“红色球:x x x x x x 蓝色球:x”。
2.问题分析
由问题描述可知,该问题是编程来模拟福利彩票中双色球开奖过
程,因此需要随机生成6个红色球号码和1个蓝色球号码,显然需要使
用Python语言中的random模块来生成随机数。
由题目要求可知“每期开出的红色球号码不能重复”,而使用随机
函数并不能保证每次产生的随机数都不相同,因此在程序设计时需要
判断每次新生成的红色球号码是否和已生成的红色球号码相同,如果
有重复,则需要重新生成新的红色球号码。
3.算法设计
随机生成6个不同红色球号码的功能可使用循环结构来实现。我们
使用数组来保存生成的6个红色球号码。在循环体中需要判断每次新生
成的红色球号码是否与已生成的红色球号码重复。
由于蓝色球号码只有1个,而且可以与红色球的号码重复,因此可
以直接使用随机函数来生成蓝色球号码,并保存在变量中。
4.确定程序框架
(1)产生随机数
产生1~33范围内的随机整数,代码如下:
tmp = random.randint(1, 33)
(2)随机产生红色球号码
定义red数组来保存产生的红色球号码。由题意可知,需要随机产
生6个红色球号码,因此可以使用red数组中下标为0~5的6个元素来保
存红色球号码。
随机产生红色球号码的过程使用while循环结构,循环变量为i,i初
值为0,i<6,在循环体中随机生成不同的红色球号码。需要注意的是,
因为红色球号码是随机生成的,因此有可能两次while循环中产生的红
色球号码恰好相同,这就要求在循环体中必须有相应的代码来判断每
次新生成的红色球号码是否与已生成的红色球号码不相同。如果不相
同,则在red数组的相应位置保存该新生成的红色球号码,否则应该重
新生成新的红色球号码。代码如下:

red = [1] * 6 # 定义red数组,保存随机生成的6个红色球号码,号码范围为1~33
i = 0
# 随机生成6个红色球号码
while i < 6:
tmp = random.randint(1, 33)
j = 0
while j < i:
# 判断已生成的红色球号码是否与当前while循环中产生的随机红色球号码相同
# 如果相同,则重新生成新的红色球号码,否则在red[i]中保存新生成的红色球号码
if red[j] == tmp:
break
j += 1
if j == i:
red[i] = tmp # 将新生成的红色球号码保存在red数组中
i += 1

程序流程图如图12.9所示。

5.完整的程序
根据上面的分析,编写程序如下:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @author : liuhefei
# @desc: 双色球 红色球范围1~33,6个; 蓝色球范围1~16,1个
import random
if __name__ == "__main__":
red = [1] * 6 # 定义red数组,保存随机生成的6个红色球号码,号码范围为1~33
i = 0
# 随机生成6个红色球号码
while i < 6:
tmp = random.randint(1, 33)
j = 0
while j < i:
# 判断已生成的红色球号码是否与当前while循环中产生的随机红色球号码相同
# 如果相同,则重新生成新的红色球号码,否则在red[i]中保存新生成的红色球号码
if red[j] == tmp:
break
j += 1
if j == i:
red[i] = tmp # 将新生成的红色球号码保存在red数组中
i += 1
blue = random.randint(1, 16) # 随机生成蓝色球号码
print("本期的开奖号码是:")
print("红色球:", end=" ")
for i in range(6):
print("%d" % red[i], end=" ")
print(" 蓝色球:%d" % blue)

6.运行结果
在PyCharm下运行程序,运行三次,每次都生成了不同的红色球和
蓝色球序列,结果如图12.10所示。


读者福利:如果大家对Python感兴趣,这套python学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、Python量化交易等习教程。带你从零基础系统性的学好Python!

零基础Python学习资源介绍

① Python所有方向的学习路线图,清楚各个方向要学什么东西

② 600多节Python课程视频,涵盖必备基础、爬虫和数据分析

③ 100多个Python实战案例,含50个超大型项目详解,学习不再是只会理论

④ 20款主流手游迫解 爬虫手游逆行迫解教程包

⑤ 爬虫与反爬虫攻防教程包,含15个大型网站迫解

⑥ 爬虫APP逆向实战教程包,含45项绝密技术详解

⑦ 超300本Python电子好书,从入门到高阶应有尽有

⑧ 华为出品独家Python漫画教程,手机也能学习

⑨ 历年互联网企业Python面试真题,复习时非常方便

在这里插入图片描述

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
在这里插入图片描述

👉Python必备开发工具👈

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉100道Python练习题👈

检查学习结果。

👉面试刷题👈

在这里插入图片描述

在这里插入图片描述

资料领取

这份完整版的Python全套学习资料已经上传网盘,朋友们如果需要可以点击下方微信卡片免费领取 ↓↓↓【保证100%免费】

  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值