今天来开发一个简单的数字逻辑游戏,猜数字(数字炸弹)

首先开发游戏第一件事,了解需求。

猜数字游戏规则:

计算机随机生成一个指定范围的数字,由玩家来猜测,

之后计算机会根据玩家提供数字来与自己生成的数字进行对比,并返回结果太大或者太小

例:计算机随机生成1-100的数字53,玩家猜测为50,计算机对比结果后返回结果:太小了

多次重复直到玩家猜中数字,游戏结束统计分数。

需求分析:

1.计算机随机生成数字;

2.与输入结果进行比较,返回太大太小结果;

3.判定是否回答正确,结束游戏;

3.记录分数并且输出;

开发环境:

python版本:IDLE 3.7

开 发  软 件:sublime_text

技术支持:

随机数在计算机应用中十分常见,在Python中,通过内置random库来实现产生各种分布的伪随机数序列。

random数据库通过采用梅森旋转算法,可用于除随机性要求更高的加密算法外的大多数工程应用。

简单理解,random库的作用就是生成随机数。主要使用函数如下:

1. random.random()

  random.random()方法返回一个随机数,其在[0.0,1.0)的范围之内的随机小数。

2. random.uniform(a,b)

  random.uniform()是在指定范围内生成随机小数,其有两个参数,一个是范围上限,一个是范围下限,范围为[a,b]。

3. random.randint(a,b)

  random.randint()是随机生成指定范围内的整数,其有两个参数,一个是范围上限,一个是范围下限制,范围为[a,b]。

4. random.randrange(start,stop[,step])

  random.randrange()是在指定范围内,按指定基数递增的集合中获得一个随机数,有三个参数,前两个参数代表范围上限和下限,第三个参数是递增增量,默认为1。

5. random.choice(sep)

  random.choice()是从序列中获取一个随机元素。

6. random.shuffle(sep)

  random.shuffle()函数是将一个列表中的元素打乱,随机排序。

7. random.sample(pop,k)

  random.sample()函数是从指定序列中随机获取指定长度的片段,原有序列不会改变,有两个参数,第一个参数代表指定序列,第二个参数是需获取的片段长度。

8. randm.getrandbits(k)

  getrandbits()函数生成一个k比特长度的随机整数

8. randm.seed(a=None)

  seed()函数主要作用为初始化随机数种子,默认值为当前系统时间

程序开发:

参照需求分析,开发步骤如下

1.创建一个指定范围内的整数,以1-100为例

首先生成随机数需要调用random函数,为方便通过关键词as改为r。

其次我们需要生成的数字为整数,且有着明确的范围,所有应当使用random.randint(a,b)来生成对应整数。

最后输出检测是否成功生成。

代码设计如下

import random as r
a = r.randint(1,100)
print(a)

注意:有的同学习惯将第二行、第三行写到一起,即:print(r.random(1,100))

这样写是没有任何问题的,但是由于后期判断玩家回答是否正确需要用到这一数字,所以还是创建一个变量来保存比较好。

2.接收玩家输入的数字,并且计较大小

首先创建一个变量来接收玩家输入的数字,刚刚使用的a来存储计算机所生成的随机数,所以这里用b来代表玩家输入的数字。

之后使用 if 判断语句来将玩家输入数字b与计算机生成数据a来作比较 。

当b>a时输出太大了;当b<a时输出太小了;当 b=a时输出猜中了。

代码如下:

import random as r
a = r.randint(1,100) # 方便调试程序、调试结束当将本句注释掉
print(a) b=int(input("输入数字"))
if b>a:
print("太大了")
elif b<a:
print("太小了")
else:
print("恭喜答对")

注意:由于b是通过input()函数接收到的数据,所以b默认的数据类型为string,所以会报错string类型的b不能与int类型的a做比较大小操作。情况如下

解决方法:

1.通过int(),改变b的数据类型,如上文所写b=int(input("输入数字"))

2.通过eval(),自动识别接收数据类型

3.创建循环,重复第二部分,直到玩家答对数字

两种循环,for循环和 while循环哪一个更好一点呢?

for循环的特点为先判断条件,再执行语句。

while循环的特点为先执行语句,再循环。

猜数字游戏自然是先执行语句再判断的好所以本处使用while循环

跳出循环的条件为玩家回答正确,跳出的方式也多种多样

第一种:判断条件为False

我们可以创建变量 flag,while条件为flag为真

此时只需要在玩家回答正确之后,更改falg值为假即可。

import random as r
a = r.randint(1,100) # 方便调试程序、调试结束当将本句注释掉
print(a)
flag = 1
while flag == 1:
b=int(input("输入数字"))
if b>a:
print("太大了")
elif b<a:
print("太小了")
else:
print("恭喜答对")
flag = 0

第二种:break跳出

关键字break 功能为跳出本循环体,所以这时候可以设定while循环条件恒为真

import random as r
a = r.randint(1,100) # 方便调试程序、调试结束当将本句注释掉
print(a) while True:
b=int(input("输入数字"))
if b>a:
print("太大了")
elif b<a:
print("太小了")
else:
print("恭喜答对")
break

4.添加分数、游戏输出

分数的统计方法十分简单,只需要统计循环体的循环次数即可。

设定一个变量来统计循环次数,变量初量为“0”,在每次循环前变量+1即可。

当然个人喜好也可以赋初值为100,每次循环-1,最后统计输出数值即可。

所以最终代码如下:

import random as r
a = r.randint(1,100) # 方便调试程序、调试结束当将本句注释掉
#print(a)
score = 0
while True:
b=int(input("输入数字"))
score+=1
if b>a:
print("太大了")
elif b<a:
print("太小了")
else:
print("恭喜答对")
break
print("score=%d"%score)

程序优化:

1.手动输入上下限制

上述程序中,以1-100为例,而我们平常所使用中,可以自主设定上下限。

所以第一步将原来的限制更改为自主输入。

上述设定a为计算机生成数,b为玩家输入数字,理所当然c、d承担起上下限制的重任

首先需要来接收玩家输入的数据,由于生成的随机数a需要上下限制的参数,所以接收应当在生成随机数前面。

之后将random传入参数改为 变量名c、d

如下代码所示

import random as r
c = int(input("请输入最小数"))
d = int(input("请输入最大数"))
a = r.randint(c,d)
# 方便调试程序、调试结束当将本句注释掉
#print(a)
score = 0
while True:
b=int(input("输入数字"))
score+=1
if b>a:
print("太大了")
elif b<a:
print("太小了")
else:
print("恭喜答对")
break
print("score=%d"%score)

2.显示数字范围

每一次都只回应请”输入数字”,如果可以将之前的数据更新迭代,也就是输出范围想来要比原计划好一些。

如果这样做,最先修改的便是输入b时候的语句,需要将上下限制加入。

之后上下限制的数据也要对应发生改变,以1-100为范围,随机数为60为例:

玩家输入50,计算机给出回应太小了,之后请求输入的是51-100的数据。

也就是说最初玩家输入c(1)~d(100)  当玩家输入新数据b(50)之后,cd将要根据b的情况来更新

当太小了时候,c=b+1

当太大了时候,d=b-1

代码以及结果如下:

import random as r
c = int(input("请输入最小数"))
d = int(input("请输入最大数"))
a = r.randint(c,d)
# 方便调试程序、调试结束当将本句注释掉
print(a)
score = 0
while True:
b=int(input("输入%d到%d数字:"%(c,d)))
score+=1
if b>a:
print("太大了")
d=b-1
elif b<a:
print("太小了")
c=b+1
else:
print("恭喜答对")
break
print("score=%d"%score)

 

Python小游戏——猜数字教程(random库教程)的更多相关文章

  1. 玩Python小游戏猜数字,在游戏中掌握基础,你还能学不会?

    学python怎么离得开案例呢? 今天再继续给大家分享一个Python教程里的猜数字游戏     我最近也是在学python,从事编程工作几年了,但是python还是今年才开始玩的,不得不说,这真是一 ...

  2. Python小游戏 -- 猜数字

    Python初学者小游戏:猜数字 游戏逻辑:电脑随机生成一个数字,然后玩家猜数字,电脑提示猜的数字大了还是小了,供玩家缩小数字范围,达到既定次数后,玩家失败.若在次数内猜对,玩家获胜. 涉及知识点:r ...

  3. Python小游戏——猜数字

    1 print("--------------我爱鱼-----------") 2 temp = input("不妨猜一下甲鱼现在心里想的是哪个数字:") 3 ...

  4. 弱智python小游戏猜数字

    from random import randintnum = randint(0,100)print("Guess what I think:?")bingo = Falsewh ...

  5. python写的第一个简单小游戏-猜数字

    #Filename:game1.py guess=10 running=True while running: try: answer=int(raw_input('Guess what i thin ...

  6. Python小游戏 -- 猜单词

    Python初学者小游戏:猜单词 游戏逻辑:就像我们曾经英语学习机上的小游戏一样,电脑会从事先预置的词库中抽取单词,然后给出单词的字母数量,给定猜解次数,然后让玩家进行猜测,并给出每次猜测的正确字母与 ...

  7. 利用while循环写的简单小游戏猜数字

    猜数字的大小游戏 C:\Users\Administrator>python Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 23 2018, 23:31:1 ...

  8. java小游戏——猜数字

    import java.util.ArrayList; import java.util.List; import java.util.Random; public class Num01 { sta ...

  9. CASIO 5800P计算器游戏--猜数字游戏

    CASIO 5800P 计算器游戏--猜数字游戏原代码 我编的计算器小游戏--猜数字游戏 LbI I↙ "xxGUESS NUMBERxx xPROGRAMMER:JCHx -------- ...

随机推荐

  1. Wireshark解密HTTPS流量的两种方法

    原理 我们先回顾一下SSL/TLS的整个握手过程: Clienthello:发送客户端的功能和首选项给服务器,在连接建立后,当希望重协商.或者响应服务器的重协商请求时会发送. version:客户端支 ...

  2. Could not delete D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/platform/WEB-INF/lib

    再把之前的maven工程删掉时,出现了如下错误: Could not delete D:/workspace/.metadata/.plugins/org.eclipse.wst.server.cor ...

  3. Net基础篇_学习笔记_第十天_方法_方法的练习

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. Flutter 中文文档网站 flutter.cn 正式发布!

    在通常的对 Flutter 介绍中,最耳熟能详的是下面四个特点: 精美 (Beautiful):充分的赋予和发挥设计师的创造力和想象力,让你真正掌控屏幕上的每一个像素. ** 极速 (Fast)**: ...

  5. Python Api接口自动化测试框架 excel篇

    工作原理: 测试用例在excel上编辑,使用第三方库xlrd,读取表格sheet和内容,sheetName对应模块名,Jenkins集成服务发现服务moduleName查找对应表单,运用第三方库req ...

  6. SVN更改地址

    因为服务器更改或其他某些原因导致svn地址改变,那么本地应该如何操作tortoiseSVN?如何成功的把项目进行迁移? 操作步骤 1.右击项目目录---TortoiseSVN----重新定位(英文版是 ...

  7. JIRA集成GitHub

    原因: 作为管理员, 为用户提高效率的角度,配置测试此服务.让用户从JIRA内看到代码分支,提交信息,pull requests等等, 让Github的代码提交记录和JIRA的任务管理系统集成在一起, ...

  8. Ubuntu 搭建Zookeeper服务

    1.下载安装包 官方下载地址http://apache.fayea.com/zookeeper/ 2.安装 安装前确保系统已安装过JDK,JDK安装过程可参照 2.1 解压下载好的tar.gz安装包到 ...

  9. 跟文档学习next.js

    前言:Next.js 是一个轻量级的 React 服务端渲染应用框架. Next.js中文点击这里 Next.js中文站Github点击这里 新建文件夹安装它: npm install --save ...

  10. GitHub项目徽标

    前言 GitHub徽标,GitHub Badge,你也可以叫它徽章.就是在项目README中经常看到的那些表明构建状态或者版本等信息的小图标.就像这样: 这些好看的小图标不仅简洁美观,而且包含了清晰易 ...