百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

一听就懂:用Python做一个超简单的小游戏

itomcoil 2025-02-08 11:21 27 浏览

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

写它会用到

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 "", line 2, in 
    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 
    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 
    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学习资料

相关推荐

《Queendom》宣布冠军!女团MAMAMOO四人激动落泪

网易娱乐11月1日报道据台湾媒体报道,南韩女团竞争回归的生死斗《Queendom》昨(10/31)晚播出大决赛,并以直播方式进行,6组女团、女歌手皆演唱新歌,并加总前三轮的赛前赛、音源成绩与直播现场投...

正确复制、重写别人的代码,不算抄袭

我最近在一篇文章提到,工程师应该怎样避免使用大量的库、包以及其他依赖关系。我建议的另一种方案是,如果你没有达到重用第三方代码的阈值时,那么你就可以自己编写代码。在本文中,我将讨论一个在重用和从头开始编...

HTML DOM tr 对象_html event对象

tr对象tr对象代表了HTML表格的行。HTML文档中出现一个<tr>标签,就会创建一个tr对象。tr对象集合W3C:W3C标签。集合描述W3Ccells返回...

JS 打造动态表格_js如何动态改变表格内容

后台列表页最常见的需求:点击表头排序+一键全选。本文用原生js代码实现零依赖方案,涵盖DOM查询、排序算法、事件代理三大核心技能。效果速览一、核心思路事件入口:为每个<th>绑...

连肝7个晚上,总结了66条计算机网络的知识点

作者|哪吒来源|程序员小灰(ID:chengxuyuanxiaohui)计算机网络知识是面试常考的内容,在实际工作中经常涉及。最近,我总结了66条计算机网络相关的知识点。1、比较http0....

Vue 中 强制组件重新渲染的正确方法

作者:MichaelThiessen译者:前端小智来源:hackernoon有时候,依赖Vue响应方式来更新数据是不够的,相反,我们需要手动重新渲染组件来更新数据。或者,我们可能只想抛开当前的...

为什么100个前端只有1人能说清?浏览器重排/重绘深度解析

面试现场的"致命拷问""你的项目里做过哪些性能优化?能具体讲讲重排和重绘的区别吗?"作为面试官,我在秋招季连续面试过100多位前端候选人,这句提问几乎成了必考题。但令...

HTML DOM 介绍_dom4j html

HTMLDOM(文档对象模型)是一种基于文档的编程接口,它是HTML和XML文档的编程接口。它可以让开发人员通过JavaScript或其他脚本语言来访问和操作HTML和XML文档...

JavaScript 事件——“事件流和事件处理程序”的注意要点

事件流事件流描述的是从页面中接收事件的顺序。IE的事件流是事件冒泡流,而NetscapeCommunicator的事件流是事件捕获流。事件冒泡即事件开始时由最具体的元素接收,然后逐级向上传播到较为不...

探秘 Web 水印技术_水印制作网页

作者:fransli,腾讯PCG前端开发工程师Web水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印)...

国外顶流网红为流量拍摄性侵女学生?仅被封杀三月,回归仍爆火

曾经的油管之王,顶流网红DavidDobrik复出了。一切似乎都跟他因和成员灌酒性侵女学生被骂到退网之前一样:住在950万美元的豪宅,开着20万美元的阿斯顿马丁,每条视频都有数百万观看...人们仿佛...

JavaScript 内存泄漏排查方法_js内存泄漏及解决方法

一、概述本文主要介绍了如何通过Devtools的Memory内存工具排查JavaScript内存泄漏问题。先介绍了一些相关概念,说明了Memory内存工具的使用方式,然后介绍了堆快照的...

外贸独立站,网站优化的具体内容_外贸独立站,网站优化的具体内容有哪些

Wordpress网站优化,是通过优化代码、数据库、缓存、CSS/JS等内容,提升网站加载速度、交互性和稳定性。网站加载速度,是Google搜索引擎的第一权重,也是SEO优化的前提。1.优化渲染阻塞。...

这8个CSS工具可以提升编程速度_css用什么编译器

下面为大家推荐的这8个CSS工具,有提供函数的,有提供类的,有提取代码的,还有收集CSS的统计数据的……请花费两分钟的时间看完这篇文章,或许你会找到意外的惊喜,并且为你的编程之路打开了一扇新的大门。1...

vue的理解-vue源码 历史 简介 核心特性 和jquery区别 和 react对比

一、从历史说起Web是WorldWideWeb的简称,中文译为万维网我们可以将它规划成如下的几个时代来进行理解石器时代文明时代工业革命时代百花齐放时代石器时代石器时代指的就是我们的静态网页,可以欣...