通过游戏编程学Python(1)— 猜数字

article/2025/4/7 18:48:46

通过游戏编程学Python

通过游戏编程学Python(1)— 猜数字


文章目录

  • 通过游戏编程学Python
  • 前言
  • 一、知识点
  • 二、第一个游戏 —— 猜数字
    • 1. 玩法简介
    • 2. 游戏流程
  • 三、程序代码
  • 三、代码详细分析
    • 1. import语句
    • 2.输入与输出
    • 3.While循环
    • 4.代码段
    • 5.变量类型转换
    • 6.判断语句与比较操作符
    • 7.输出结果
  • 总结与思考


前言

很多人使用Python来编写游戏,然而问哥作为一个非专业选手,却是为了编写游戏而从零开始学习了Python。在这个过程中,临摹与研习别人的代码必不可少。其中的收获不可谓不丰,但也走了不少弯路,有时候为了搞懂其中某个知识点,需要四处搜索相关资料。于是问哥想把一些学习的经验总结并分享出来,一方面,可以巩固自己薄弱的编程功底,另一方面,如果同时能够帮助到同样零基础的你,那就再好不过了。

本系列文章使用Al Sweigart编写的《Python游戏编程快速上手》为教程,所以也可以说是一系列学习笔记。同时,为了易懂易记,我将代码中的注释和变量都换成了中文。笔记重点在代码分析,自然也略过了前面较为简单且基础的环境安装部分。如果问哥以后能够坚持写完本系列的话,再考虑补全这部分(笑)。

兴趣是最好的老师,愿我们学有所成。


一、知识点

  1. 模块的导入
  2. 输入与输出
  3. 缩进与代码块
  4. 基本变量类型及类型转换
  5. 流程控制语句while, if, break

二、第一个游戏 —— 猜数字

1. 玩法简介

电脑随机“想”一个数字(1到20之间的整数),玩家共有6次机会进行猜测。如果猜的数字比电脑的数字小,电脑提示“低了哦”,反之则提示“高了哦”。如果在6次以内猜中,则祝贺玩家并显示实际猜了几次。如果6次机会用完,电脑公布正确数字。

2. 游戏流程

Created with Raphaël 2.2.0 游戏开始 提供姓名 猜数字 数字正确? 游戏结束 超过六次? yes no yes no

三、程序代码

全部代码如下:

# 这是一个猜数字的游戏
import random次数 = 0print('你好,你叫什么名字?')
姓名 = input()随机数 = random.randint(1, 20)
print('好的,' + 姓名 + ',猜猜看我想的数字是多少?提示:1到20之间的整数')while 次数 < 6:print('猜猜看')	# 注意前面有4个空格,同一列的代码都处于while代码块数字 = input()数字 = int(数字)次数 = 次数 + 1if 数字 < 随机数:print('低了哦')	# 注意前面有8个空格,同一列的代码都处于if代码块if 数字 > 随机数:print('高了哦')if 数字 == 随机数:breakif 数字 == 随机数:次数 = str(次数)print('干得好,' + 姓名 + '!你用了' + 次数 + '次就猜对了!')if 数字 != 随机数:随机数 = str(随机数)print('很遗憾,我想的数字是' + 随机数)

三、代码详细分析

1. import语句

# 这是一个猜数字的游戏
import random
随机数 = random.randint(1, 20)

Python有很多内置的函数可以直接调用,但是也有一些更为常用和强大的函数保存在某些外部模块文件中。当用到这些函数时,需要先使用import语句调用相应的模块。其实这些模块也是Python程序,系统自带的模块都可以在C:\Python安装目录\Lib\子文件夹下找到。

本例中需要随机生成一个整数,作为计算机“想”的数字。于是用到了random模块中的randint()函数。该函数接收两个参数(例子中为1和20),表示在1和20之间(包括1和20)随机得出一个数,然后赋值给一个名叫“随机数”的变量中。

有时候为了调用方便,我们也可以只导入某个模块中的特定函数,这样后面在使用函数的时候就不用指定模块名了。比如以下语句实现的效果与示例中相同,但不需要在函数randint前写出模块的名称random。

from random import randint
随机数 = randint(1, 20)

2.输入与输出

使用input()与print()函数可以向电脑输入信息,或将信息显示(打印)在屏幕上。这样就可以实现与电脑互动的效果。

print('你好,你叫什么名字?')
姓名 = input()

当运行这两条语句时,电脑会先在屏幕上显示字符串“你好,你叫什么名字?”,然后默认换行,再通过input()函数等待用户的键盘输入,并将用户输入的文本以字符串的形式赋值给变量“姓名”。

然后电脑使用“姓名”这个变量,打印出欢迎语句。

print('好的,' + 姓名 + ',猜猜看我的数字是多少?提示:1到20之间的整数')

这里的加号“+”用来拼接字符串,表示将前后的字符串(变量“姓名”的值也是字符串)连接在一起,形成一个新的字符串。

Python既可以使用双引号" ",也可以使用单引号’ '表示一串字符串,之所以如此,是为了方便在字符串中正常使用单双引号。如果字符串中既含有单引号,也含有双引号,则需要使用符号“\”将字符串中的引号转义。参考以下示例。
在这里插入图片描述

3.While循环

增加一个变量“次数”,用来计算玩家猜了多少次。然后使用While循环使玩家不停地猜。在游戏开始之前,“次数”为0。

次数 = 0
while 次数 < 6:# 省略部分代码次数 = 次数 + 1

上面语句中当(While)次数小于6的时候,冒号(:)后面同一代码块的语句会反复执行。注意:必须在代码块中改变变量“次数”的值,不然“次数”永远为0,程序也将会陷入死循环。该代码中,每循环一次(用户猜一次数字),“次数”变量的值加1。

变量自身进行数学运算,再赋值给自身的操作可以使用简化写法。比如上面的赋值语句可以简写如下:

	次数 += 1

其他数学运算符号同理。

4.代码段

Python使用缩进来标记代码所在的段落。连续、同一缩进的语句为一个代码段。默认使用4个空格,或Tab来缩进。

while 次数 < 6:print('猜猜看')数字 = input()数字 = int(数字)次数 = 次数 + 1if 数字 < 随机数:print('低了哦')if 数字 > 随机数:print('高了哦')if 数字 == 随机数:break

本例中while语句后面所有循环体的语句均缩进4个空格,表示包括if语句在内的所有语句均属于while代码段。而if语句后面缩进了8个空格,以表示这些语句属于if代码段。

在IDE以及各种编程环境(Pycharm,VSCode等)中,电脑会在循环、判断、函数、类等语句后面自动缩进代码段,所以大部分情况下无须担心。但仍需小心检查某些语句属于哪个代码段,以免造成逻辑错误。

5.变量类型转换

游戏开始后,电脑在屏幕中显示“猜猜看”,然后使用input()等待用户输入一个整数,以字符串的形式赋值给变量“数字”。但是后面要用该整数与电脑得到的随机数进行比较大小,而字符串是不能直接与数字比较大小的,于是使用int()函数将用户输入的字符串整数转换为整数类型。

while 次数 < 6:print('猜猜看')数字 = input()数字 = int(数字)次数 = 次数 + 1

在程序的后半部分,需要进行拼接字符串操作的时候,同样又使用了另一个类型转换函数str()将整数转换成了字符串。

    次数 = str(次数)随机数 = str(随机数)

这里也可以发现,Python中同一变量的类型可以自由变化,在某些时候保存的是整数,在需要的时候,又可以改变类型,保存字符串。原因是Python的变量中保存的其实是实际数值的内存地址,至于那个地址里保存的是整数还是字符串还是其他类型,变量自身不做限制。可以随时通过赋值语句“=”改变变量中保存的内存地址,从而指向不同的数据类型。

6.判断语句与比较操作符

为了判断用户猜的数字(储存在变量“数字”中)是否就是电脑产生的“随机数”,使用了三条if判断语句,依次判断数字是否小于、大于、等于随机数:

    if 数字 < 随机数:print('低了哦')if 数字 > 随机数:print('高了哦')if 数字 == 随机数:break

但是上面语句即使满足了第一个条件,还是会继续比下去,显然没有意义。所以其实可以转换为以下if…elif…else的格式,在本例中实现的功能相同。

    if 数字 < 随机数:print('低了哦')elif 数字 > 随机数:print('高了哦')else:break

当猜中正确的数字(“数字”等于“随机数”)时,程序使用了break语句跳出while循环,即不用再循环到“次数”为0,即可继续执行while后面的语句。

在while和if关键字后面使用了比较运算符连接的表达式。比较运算符共有6种。

比较符意义
>大于
<小于
==等于
>=大于等于
<=小于等于
!=不等于

如果等式成立,则返回一个布尔(Bool)类型的True,反之返回False。

换句话说,while和if其实是判断后面的比较运算式返回的结果是True还是False。如果是True,则继续向下运行,反之则跳过。

7.输出结果

当玩家猜中数字、或猜错次数达到6次后,程序自动跳出循环,继续执行后面的语句。并通过比较“数字”与“随机数”(运算符==或!=),判断玩家是否猜对,再执行相应的代码,拼接字符串以显示不同的结果。

if 数字 == 随机数:次数 = str(次数)print('干得好,' + 姓名 + '!你用了' + 次数 + '次就猜对了!')if 数字 != 随机数:随机数 = str(随机数)print('很遗憾,我的数字是' + 随机数)

总结与思考

通过一个简单的游戏,我们学习了Python编程的一些基本语句和规范,如代码块、字符串拼接、比较运算符、变量的类型转换等等。

Python本身的编程哲学也是追求简洁易懂,所以很多语句比如while循环、if判断都可以直接读出意思。而放在游戏中,我们更要考虑的是如何实现游戏的过程。当读到他人的代码时,借鉴别人如果简洁高效地实现我们想要的效果,这一点尤为重要。

当然,也许出于教学的目的,一些程序还留有很大的优化空间,以及潜在的bug。大家可以想一想,有没有更简洁的代码可以实现本例中的猜数字的游戏呢?

另外,示范代码并没有对用户猜的数字进行格式上的要求,而是默认用户会“听话”地输入1到20的整数。而如果用户输入的不是整数,而是其他类型的文本,比如小数、中文数字,甚至是任意的字符串,程序都是报错并退出。原因便是其中用到的int()函数无法应用到除了整数型之外的字符串类型上。我们怎样才能在输入的时候加上一个判断语句,来辨别出这些“非法”字符,并要求用户重新输入呢?

这些都是值得思考的,我们可以带着问题继续学习,相信有一天,我们一定可以写出更加完美、好玩的游戏。

下次再见!


http://chatgpt.dhexx.cn/article/qThe3cgs.shtml

相关文章

C语言实现猜数字游戏(超详解)

目录 前言 一、游戏描述 二、代码实现 1.生成游戏菜单 2.构建主函数 3.构建游戏函数 三、二分法实现猜数 代码附上: 写在最后&#xff1a; 前言 猜数字小游戏是我们大多数人学习C语言时都会了解到的一个有趣的C语言小游戏&#xff0c;下面我将详细介绍该游戏的实现和…

都说要打造个人IP,那到底什么才是个人IP?

什么是个人IP&#xff0c;它由哪些组成&#xff1f; 它由多个方面组成&#xff0c;包括个人的网络行为、习惯、兴趣爱好、位置信息&#xff0c;以及其他可以用于识别个人的数据。 目录 什么是个人IP&#xff0c;它由哪些组成&#xff1f; 第一&#xff0c;性格方面 第二&am…

一键自动修改IP小工具分享

一键自动修改IP小工具分享 1.功能介绍2. 测试环境3. 背景4. 使用方法配置文件修改 5. 补充说明电脑上有多个网卡显示当前IP 6. 参考文档7. .exe程序下载链接 1.功能介绍 功能: 1. 可以一键修改电脑的IP(包括自动获取IP和手动配置固定IP); 2. 配置文件可根据需求修改; 3. 操作简…

普通网红如何打造个人IP?个人IP打造有哪些注意事项?

不管你是做哪个行业的,你一定要把自己个人IP打造成一个爆款,做窄做小,让你的用户去对号入座。 个人IP如何打造?把自己打造成爆款? 比如你是做保险的,你不能所有保险都去做,而是只做某一类保险,只针对某一类人群的保险。 比如只做美国保险,并且只做美国个人方面的报下,针对…

网络 IP

ip地址的分类 既然每个人的ip地址都不一样&#xff0c;那一台主机怎么通过ip地址找到另一台主机的呢&#xff0c;茫茫人海&#xff0c;不可能一个个查找把&#xff0c;所以就有专门的人来管理和分配这个ip地址&#xff0c;看看以前怎么分的地址(了解) 网络号由你所连的网决定&a…

如何打造ip,打造属于自己的护城河?

最近萃见一直在考虑打造个人ip的事情。人一思考起来&#xff0c;就容易魔怔。吃饭在想&#xff0c;走路在想&#xff0c;睡前躺在那也在想。信息瞬息万变的时代&#xff0c;普通人该何去何从&#xff1f; 我记得刚接触互联网这一块的时候流量还是很好获取的&#xff0c;你就往…

如何从零到一打造你的网络个人IP(时代赚钱利器)

大家好,我是夕颜,欢迎来到夕颜聊副业 这两年个人IP和私域运营这几个词异常火热。 我们该如何正确去理解个人IP这个词和打造你的IP ? 很多人对于个人IP存在一些误导 我卖个减肥药和护肤品是不是个人IP? 答案:不是,在我认为卖产品是以你个人的名义去帮别人做品牌IP,不…

[网络] 大话IP地址

本文说的IP是指IPv4,IPv6不在本文的讨论范围之内。 IP是由32位2进制组成,通常为了表示方便,用4组十进制数字表示, 如果两个IP地址,它的Net_ID相同,只有Host_ID不同,表示它们在同一个网段内,在局域网内,同一个网段的数据可以通过广播传递,而不同网段则必须通过路由器…

世界上最百变的人不是女友,竟然是......

问&#xff1a;“这世上最百变的人是谁&#xff1f;” 答&#xff1a;“女友。” 不好意思你出局了。 正确答案是&#xff1a;“老妈&#xff01;” 老妈才是走在朋友圈前端的弄潮儿。 我的老妈造型百变&#xff0c; 丝巾、墨镜、高跟鞋&#xff0c; 可以几十套衣服不重样。 我…

个人 IP 打造方法

什么是个人ip&#xff1f; “个人ip&#xff0c;网络用语&#xff0c;指个人对某种成果的占有权&#xff0c;在互联网时代&#xff0c;它可以指一个符号、一种价值观、一个共同特征的群体、一部自带流量的内容。每个人都是产品&#xff0c;把自己当成这辈子最好的产品去打造。…

新手如何打造个人IP?

最近经常有人在抖音和微博上问我&#xff0c;对于不熟悉自媒体的互联网新手&#xff0c;是否有可能打造个人IP呢&#xff1f;对于准备打造个人IP的新手&#xff0c;需要做哪些准备&#xff1f;从何处开始着手呢&#xff1f; 目录 自媒体新手打造个人IP的三个重要步骤。 第一…

手把手教你打造个人IP

现在的职场环境对个人发展实在太不友好&#xff0c;尤其是互联网人&#xff0c;随着年级的增长&#xff0c;有很大概率遭遇职场中年危机&#xff0c;基于此&#xff0c;建议每个人都要开启自己的副业&#xff0c;从而分担风险。 对个人来说&#xff0c;最好的副业就是自媒体&am…

打造个人IP,利用IP知识变现的万能方法

打造个人IP&#xff0c;利用IP知识变现的万能方法 &#xff08;本文首发公号【跟海哥学知识变现】&#xff0c;移步公号和100万小伙伴一起学知识变现&#xff0c;立马领取【知识变现】电子书一本&#xff09; 个人IP可能是未来五年&#xff0c;甚至是未来10年里最大的风口之一…

个人ip如何打造

目录 一、起号的基础逻辑 二、为什么新开的账号在10天之内一定会推出畅销产品&#xff1f; 三、详细说明操作步骤 ​四、抖音玩法儿讲解 模仿 投放 ​创新 五、为什么新账户在10天内一定会发布畅销产品呢&#xff1f; 六、官方的基础技巧。 第一步&#xff0c;准备5到…

如何打造属于自己的个人IP?

在当今信息爆炸的时代&#xff0c;个人 IP 已经成为人们在网络世界中的独特标签。无论是在职场上、创业中&#xff0c;还是在社交生活中&#xff0c;拥有个人 IP 的人都能脱颖而出&#xff0c;吸引更多的关注和机会。那么&#xff0c;如何打造属于自己的个人 IP 呢&#xff1f;…

​互联网小白打造个人IP实操指南

怎样打造个人IP呢? 1&#xff1a;精准定位 先有定位&#xff0c;后有人设。你是面对的实体行业的粉丝&#xff0c;还是互联网的粉丝&#xff0c;是剖析项目&#xff0c;还是揭秘骗局&#xff0c;还是教人实操项目的&#xff0c;这些你都得提前为自己谋划好。领域不怕细分&am…

怎么打造个人IP?(打造超级赚钱的个人IP终极干货)

打造个人IP需要以下几个步骤&#xff1a; 定位自己&#xff1a;首先要明确自己的定位和目标&#xff0c;确定自己要成为什么样的人&#xff0c;以及如何让别人认识和了解自己。 建立专业形象&#xff1a;通过建立个人网站、博客、社交媒体账号等方式&#xff0c;打造自己的专业…

个人IP打造全过程:如何打造出属于自己的个人IP?

随着互联网的快速发展&#xff0c;个人IP已经逐渐成为一个热门话题。拥有自己的个人IP可以为你带来更多的机会和收益&#xff0c;让你在竞争激烈的市场中脱颖而出。但是&#xff0c;要想打造自己的个人IP并不是一件容易的事情。本文将为你介绍如何打造属于自己的个人IP。#IP# 一…

玩转IP地址

1.怎么获取自己的IP地址&#xff1f; 首先打开cmd命令 输入ipconfig&#xff0c;就可以获得自己的IPV4地址&#xff0c;但是是局域网地址 为什么同一台电脑有好多IP地址&#xff1f; 这个是因为你连接不同的局域网造成的不同的IP&#xff0c;有外网IP和局域网内的IP&#xff0…