网站首页 > 精选文章 正文
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理
写它会用到
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()方法。
举例
>>> 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转换就会报错;这个我就不写了,有兴趣的同学可以在评论区写一下。
私信小编01即可获取大量Python学习资料
- 上一篇: 基于深度学习OpenCV与python进行字符识别
- 下一篇: PHP运行时性能基准测试
猜你喜欢
- 2025-05-26 基于深度学习OpenCV与python进行字符识别
- 2025-05-26 仅需 15 行 Python 代码,即可将视频文件转录为文本稿件
- 2025-05-26 老外最喜欢的美食圣地 是不是你家?python 分析20w数据 「附代码」
- 2025-05-26 Python 中的可变和不可变:面向初学者的完整指南
- 2025-05-26 这一篇就够了!带你全面了解Python的异常处理机制
- 2025-05-26 python3 matplotlib下增加新字体并使用
- 2025-05-26 Python,pyttsx3,实现语音合成,实现语音朗读,文字转语音
- 2025-05-26 python应用:如何用python提取pdf文件中的文字
- 2025-05-26 Markdown + 文档管理 + 静态网页生成,集大成的 Markdown 应用:MWeb
- 2025-05-26 Python提取图片中的文字信息,腾讯内部技术,一行代码搞定
- 05-27vue3安装在线构建ckeditor5教程
- 05-27使用vue3和go搭建网站(附源码)
- 05-27「干货」Vue+Element前端导入导出Excel
- 05-27好的项目,万物皆可打包,我将Vue项目打包成客户端(模拟钉钉)
- 05-27vue下载excel文件方法
- 05-27vue组件的注册
- 05-27我常用的几个 VueUse 最佳组合,推荐给你们
- 05-27Vue开发环境搭建
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)