一听就懂:用Python做一个超简单的小游戏
写它会用到
while 循环
random 模块
if 语句
输入输出函数
源码先抛出来
import random #导入random模块,用来产生随机数
times = 10 #设置我们的答题次数
secret = random.randint(1,100) #随机给random一个1~9的数字,再给secret赋值
print('---------------Python要和你玩猜数字游戏---------------')
print('猜一个1-100之间的数')
guess = 0 #设定guess的值
while (guess != secret) and (times > 0): #结束条件,要么次数用完,要么答对。
guess = int(input("猜猜我想的是几:")) #用户输入,并转换为整数
times = times - 1 #用户每输入一次,猜数次数就-1
if guess == secret: #如果用户输入对了
print("恭喜你猜对了!")
print("哼,猜中了也没有奖励!")
break #跳出循环
else:
if guess > secret:
print("大了大了~~~")# 之所以不在这里设置重输,是因为在if times > 0: 中已经弄过了,这样避免输两次,也避免次数已用完还让重输
else:
print("小了小了-_-")
if times > 0: #判断次数是否用完
print("再试一次吧:", end=" ")
else:
print("机会用光咯T_T")
print("我想的是"+str(secret)+"!") #揭晓答案
print("游戏结束,不玩啦^_^")
知识讲解
random
#0## 介绍
Python中的随机数操作较简单,不像其他高级语言那样必须用特定的公式才能产生
语法
import random #导入模块
random.方法() #调用方法
方法参数表
| 方法 | 作用 |
|---|---|
| randint(一个整数,另一整数) | 产生从一个整数-另一整数的随机整数 |
| uniform(a,b) | 产生 a 到 b之间的随机浮点数 |
| … | … |
目前我们用到的是randint()方法。
举例
>>> import random
>>> random.randint(0,10)
5
>>> random.randint(0,10)
2
>>>
while

语法
while 循环条件:
语句
举例
num = 0
while num<3:#如果num小于3,就进入循环
num+=1 #等同num=num+1
print(num)
图:


拆分代码讲解
产生随机数
import random
random.randint(0,100)
运行结果:
>>> random.randint(0,100)
50
>>> random.randint(0,100)
28
>>> random.randint(0,100)
35
>>> random.randint(0,100)
15
>>> random.randint(0,100)
10
>>> random.randint(0,100)
27
>>> random.randint(0,100)
89
>>> random.randint(0,100)
43
>>> random.randint(0,100)
90
>>> random.randint(0,100)
16
>>> random.randint(0,100)
80
>>>
现在我们可以产生随机数了,但是只有调用一次方法才能产生一次随机数,怎么办呢?对了,可以用循环来反复做相同的事。
循环产生随机数
import random
while True:
random.randint(0,100)
运行结果:
68
25
51
44
75
21
70
2
4
25
95
34
19
59
63
98
93
15
0
60
69
33
2
84
38
54
30
64
69
94
94
8
24
95
80
69
83
20
48
92
24
48
51
77
25
23
68
70
84
34
56
86
30
39
12
90
0
36
31
23
34
51
60
26
81
63
88
74
40
55
69
47
44
8
38
6
63
3
72
76
8
100
88
20
99
49
47
35
80
7
49
6
78
42
20
44
49
49
71
53
55
67
51
55
39
87
98
19
61
70
76
58
94
47
73
10
22
29
89
95
33
98
44
15
29
4
78
16
13
71
78
43
18
43
29
64
87
8
66
91
55
12
81
8
48
20
23
5
6
Traceback (most recent call last):
File "<pyshell#3>", line 2, in <module>
random.randint(0,100)
KeyboardInterrupt
>>>
可以看到,它一直输出随机数,这并不是我们想要的,我们想要的是用户输入一个数,和这个随机数比对
增加循环条件和简单的判断
对上述采取的方法是:把产生的随机数存入变量,进行判断、比对
import random
secret = random.randint(0,100) #产生随机整数
guess = input('猜猜我想的是几:')#获取用户输入
while guess!=secret:#当用户输入不等于产生的数时,进入循环
if guess>secret:#当用户输入的数大于随机数时
print("大了大了@_@")#打印提示文字
else:#当用户输入的数小于随机数时
print("小了小了>_<")#打印提示文字
print("恭喜你答对了!")
print("哼,对了也没有奖励!")
print('游戏结束,不玩了~')
看似没有问题,我们来运行一下
运行后发现报错了:
猜猜我想的是几:12
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/aa.py", line 5, in <module>
if guess>secret:#当用户输入的数大于随机数时
TypeError: '>' not supported between instances of 'str' and 'int'
哦,原来是没有转换类型,input返回的是字符串,字符串不能和整数比较
改后:
import random
secret = random.randint(0,100) #产生随机整数
guess = int(input('猜猜我想的是几:'))#获取用户输入,并转化为整数
while guess!=secret:#当用户输入不等于产生的数时,进入循环
if guess>secret:#当用户输入的数大于随机数时
print("大了大了@_@")#打印提示文字
else:#当用户输入的数小于随机数时
print("小了小了>_<")#打印提示文字
print("恭喜你答对了!")
print("哼,对了也没有奖励!")
print('游戏结束,不玩了~')
运行:
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/aa.py", line 8, in <module>
print("小了小了>_<")#打印提示文字
KeyboardInterrupt
>>>
还是有问题!
解决报错&增加输错重输功能、限制用户输入次数功能
同学们想想,当打印提示语后,用户没有重输,会一直满足那个条件,就会循环打印。
那么我们可以增加重输功能,当输的不对时,就重输,就不会循环打印了;
添加限制用户输入功能,这样就避免用户一直猜
1.当然,因为又加了一个功能,答对了的提示就不能放在循环外面了,
2.之所以不在打印大了小了设置重输,是因为在if times > 0: 中已经弄过了,这样避免输两次,也避免次数已用完还让重输
import random #导入random模块,用来产生随机数
times = 10 #设置我们的答题次数
secret = random.randint(1,100) #随机给random一个1~9的数字,再给secret赋值
print('---------------Python要和你玩猜数字游戏---------------')
print('猜一个1-100之间的数')
guess = 0 #设定guess的值
while (guess != secret) and (times > 0): #结束条件,要么次数用完,要么答对。
guess = int(input("猜猜我想的是几:")) #用户输入,并转换为整数
times = times - 1 #用户每输入一次,猜数次数就-1
if guess == secret: #如果用户输入对了
print("恭喜你猜对了!")
print("哼,猜中了也没有奖励!")
break #跳出循环
else:
if guess > secret:
print("大了大了~~~")# 之所以不在这里设置重输,是因为在if times > 0: 中已经弄过了,这样避免输两次,也避免次数已用完还让重输
else:
print("小了小了-_-")
if times > 0: #判断次数是否用完
print("再试一次吧:", end=" ")
else:
print("机会用光咯T_T")
print("我想的是"+str(secret)+"!") #揭晓答案
print("游戏结束,不玩啦^_^")
效果

缺陷
没有设置输入限制,如果用户输入的是字母,那int转换就会报错;这个我就不写了,有兴趣的同学可以在评论区写一下。有什么不懂的地方,也欢迎在评论区提问
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理
想要获取更多Python学习资料可以加
QQ:2955637827私聊
或加Q群630390733
大家一起来学习讨论吧!
一听就懂:用Python做一个超简单的小游戏的更多相关文章
- gulp安装+一个超简单入门小demo
gulp安装參考.gulp安装參考2. 一.NPM npm是node.js的包管理工具.主要功能是管理.更新.搜索.公布node的包. Gulp是通过npm安装的. 所以首先,须要安装node.js. ...
- Python基础入门-实现猜数字小游戏
今天呢,我们来通过前面学过的一些知识点来完成一个猜数字大小的游戏程序设计.那么呢,一般人写代码直接上来就干,没有分析,这样的做法是没有产出的,除非你是大牛,今天呢,我会把我学习编程的思路分享给大家,我 ...
- 用Python做一个知乎沙雕问题总结
用Python做一个知乎沙雕问题总结 松鼠爱吃饼干2020-04-01 13:40 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以 ...
- 使用python做一个IRC在线下载器
使用python做一个IRC在线下载器 1.开发流程 2.软件流程 3.开始 3.0 准备工作 3.1寻找API接口 3.2 文件模块 3.2.1 选择文件弹窗 3.2.2 提取文件名 3.2.2.1 ...
- 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)
大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...
- 尝试做一个.NET简单、高效、避免OOM的Excel工具
Github : https://github.com/shps951023/MiniExcel 简介 我尝试做一个.NET简单.高效.避免OOM的Excel工具 目前主流框架大多将资料全载入到记忆体 ...
- 初学python写个自娱自乐的小游戏
一.摘要 当编写完后的代码执行第一次后达到了目标的预期效果,内心有些许满足,但是当突发情况产生后,程序便不能正常运行,于是准备从简单的版本开始出发,综合考虑使用者的需求,和使用过程中会遇到的问题,一步 ...
- 在树莓派上用 python 做一个炫酷的天气预报
教大家如何在树莓派上自己动手做一个天气预报.此次教程需要大家有一定的python 基础,没有也没关系,文末我会放出我已写好的代码供大家下载. 首先在开始之前 需要申请高德地图API,去高德地图官网注册 ...
- 用python做一个搜索引擎(Pylucene)
什么是搜索引擎? 搜索引擎是“对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集.信息整理和用户查询三部分”.如图1是搜索引擎的一般结构,信息搜集模块从网络采集信息到网络信息库之中(一般 ...
随机推荐
- symfony框架学习
http://mozilla.com.cn/thread-52722-1-1.html安装网页翻译插件 symfony2是基于php的web框架 http://www.chrisyue.com/sym ...
- Jmeter(二十八) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy1(详解教程)
1.简介 在使用jmeter自动录制脚本时会产生很多无用的请求,所以推荐使用badboy录制脚本之后保存为jmx文件,在jmeter中打开使用.因此宏哥在这里介绍一下Badboy这款工具,本来打算不做 ...
- 【Golang】基础-操作 csv 文件
1. csv plugins,自带极简 1.1 写数据到csv文件 知识点:encoding/csv 库的 Write 方法使用[]string的切片格式追加方式写入数据 1.1.1 追加写入 pac ...
- 网络拓扑实例之交换机处于同一网络作为DHCP中继与服务器(八)
组网图形 DHCP中继简介 DHCP中继用于在DHCP服务器和客户端之间转发DHCP报文.当DHCP服务器与客户端不在同一个网段时,需要配置DHCP中继.对于DHCP客户端来说,DHCP中继就是DHC ...
- passwrod和shadow文件介绍
1./etc/passwd #cat /etc/passwdroot:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbi ...
- DataTable 将一列转为List
c# linq用起来特方便,因此我们习惯性的用list来操作. 这里我们将 DataTable 一列转为List: List<T> homeworkIdList = (from r in ...
- 泓格WINPAC主机与第三方模块rs 485 modbus rtu通信测试
开发语言:C# 开发环境:VS2008(支持WINCE开发的最后一个版本) 运行环境:Windows CE 5.0~7.0 项目说明:多台涨格winpac系列的主机,原来使用泓格SDK开发的程序,采集 ...
- PyQt(Python+Qt)学习随笔:QLineEdit行编辑器功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QLineEdit部件是一个单行文本编辑器,支持撤消和重做. ...
- 第一章、PyQt的简介、安装与配置
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 第一章.PyQt的简介.安装与配置 一.引言 当朋友向我推荐PyQt时,老猿才知道有这样一个在Pyt ...
- SLR(1)语法分析(JAVA实现)
要求 代码 import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util. ...