完整版下载 超详细Python算法案例讲解100例.zip-Python文档类资源-CSDN下载

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所示。

100个python算法超详细讲解:双色球相关推荐

  1. 100个python算法超详细讲解:搬山游戏

    [100个python算法超详细讲解]@谷歌学术 1.问题描述 设有n座山,计算机与人作为比赛的双方,轮流搬山.规定每次搬 山数不能超过k座,谁搬最后一座谁输.游戏开始时,计算机请人输入 山的总数n和 ...

  2. 100个python算法超详细讲解:平分7筐鱼

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 2.乙.丙三位渔夫出海打鱼,他们随船带了21只箩筐.当晚返航时, 他们发现有7筐装满了鱼,还有7筐装了半筐鱼,另外7筐是空的,由于他们 ...

  3. 100个python算法超详细讲解:邮票组合

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小 面值邮票中的一张或几张的组合,可以满足不同邮件的不同邮资.现 在,邮局有4种不 ...

  4. 100个python算法超详细讲解:递归解决年龄问题

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁.问 第4个人多少岁,他说比第3个人大2岁.问第3人多少岁,他说比第2个 人大2 ...

  5. 100个python算法超详细讲解:谁是窃贼

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 警察审问4名窃贼嫌疑犯.现在已知,这4人当中仅有一名是窃 贼,还知道这4个人中的每个人要么是诚实的,要么总是说谎. 下面是这4个人给警察 ...

  6. 100个python算法超详细讲解:抢30游戏

    [100个python算法超详细讲解]@谷歌学术 1.问题描述 由两个人玩"抢30"游戏,游戏规则是:第一个人先说"1"或"1,2",第 二 ...

  7. 100个python算法超详细讲解:卡布列克常数

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 对于任意一个4位数n,进行如下的运算: 1)将组成该4位数的4个数字由大到小排列,形成由这4个数字构 成的最大的4位数. 2)将组成该4 ...

  8. 100个python算法超详细讲解:孪生素数

    [100个python算法超详细讲解@谷哥技术] 1.问题描述 本节要研究孪生素数的问题,先来看看什么是孪生素数. 所谓孪生素数指的是间隔为2的两个相邻素数,因为它们之间的距离已经 近得不能再近了,如 ...

  9. 100个python算法超详细讲解:狼追兔子

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 一只兔子躲进了10个环形分布的洞中的某一个.狼在第一个洞中 没有找到兔子,就隔一个洞,到第三个洞中去找:如果没有找到,就 隔两个洞,到第 ...

  10. 100个python算法超详细讲解:猴子吃桃

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 一个猴子摘了一些桃子,它第一天吃掉了其中的一半然后再多吃了 一个,第二天照此方法又吃掉了剩下桃子的一半加一个,以后每天如 此,直到第十天 ...

最新文章

  1. 漫画 | 大数据风控从业者的一天
  2. hdu1287 破译密码
  3. Win10小技巧:如何将在此处打开命令改为CMD或Powershell?
  4. java实体类怎么写_Java中(entity)实体类的书写规范
  5. 关于SAP Fiori用户管理资料的一个问题
  6. linux date 天之前,linux date命令前后几天的推导
  7. Java基础入门笔记-Hello world
  8. postman电脑版无法安装_Postman 安装及使用入门教程
  9. SM3密码杂凑算法和SM2数字签名算法的PDF签名方法
  10. paraview视图vtkView
  11. JSP教程 JSP教程 JSP教程 JSP教程 JSP教程 JSP教程
  12. 计算机图形学2-Liang-Barsky直线裁剪算法
  13. LTE物理层概述(7)-- LTE之Turbo编码及其matlab仿真1
  14. 修改图片尺寸包括两种情况
  15. iOS真机不能运行,模拟器可以
  16. 【C#】未能添加对“*.dll”的引用。请确保此文件可访问并且是一个有效的程序集或 COM 组件。
  17. 知物由学 | AI网络安全实战:生成对抗网络
  18. 编译器之语法分析器(syntax analyzer)
  19. java并发编程中常用的工具类 Executor
  20. 【深度强化学习】6. Q-Learning技巧及其改进方案

热门文章

  1. Android 百度地图SDK 实现获取周边位置POI详解
  2. 排序-------简单选择实现(Java实现)
  3. docker基础:私库系列:再探Harbor:(5)集成clair
  4. 木工加工中心操作教程
  5. 将金额转换为中文大写
  6. java导出pdf文件并下载_java根据模板生成pdf文件并导出
  7. 入门PCB设计(杜洋工作室)——Altium Designer Winter 09
  8. matplotlib保存eps文件透明度失效解决办法
  9. 蓝牙模块:使用问题集锦
  10. Amesim(六):如何使用回放功能