《手把手陪您学Python》19——第一阶段小结

在上一篇《手把手陪您学Python》18——循环语句for中,我们学习了最后一种控制流语句,同时也结束了一个阶段的学习任务。

在这一篇中,我们将对之前18篇文章的内容进行个小结,方便大家了解其知识框架,掌握其中的重点内容。最后会再用一个较为复杂的实例,将我们之前学习的内容加以运用和实践。

1、Python的介绍

在第一篇文章中,我们通过Python的几个优势和特性,向大家介绍了Python这种语言。相信这些特点,在大家后面的学习中都或多或少有了一些体会。还没有学习的朋友们,可以通过点击下方链接直达。

《手把手陪您学Python》1——为什么要学Python?

2、软件的安装和配置

之后,我们用3篇文章,向大家介绍了Python、集成开发环境(IDE)——PyCharm,以及我们后面使用最多的Jupyter Notebook的安装、配置和使用方法。经过一段时间的学习,以及“石头剪刀布”游戏的编写,软件的使用应该已经不是大家学习的障碍了。但还请大家在后面的学习中,能够不断地去熟悉、挖掘软件的各类功能。

《手把手陪您学Python》2——Python的安装

《手把手陪您学Python》3——PyCharm的安装和配置

《手把手陪您学Python》5——Jupyter Notebook

3、开启Python之门

通过学习print()函数,我们打印出了学习Python的第一句话“Hello World!”。因为print()函数是Python的最基础的输出方式,包括灵活调整其中的参数,都会对我们日后实现多样化的输出有所帮助。

《手把手陪您学Python》4——Hello World!

4、字符串

在这个阶段中,占用篇幅最多的内容就是字符串的介绍了。从中大家不仅学到了字符串各种标识、检索、切片、运算、函数和格式化输出的方法,也感受到了Python的强大。仅仅一个小小的字符串,就能够衍生出这么强大的功能。可以说只有我们想不到的,没有Python做不到的!

《手把手陪您学Python》6——字符串的标识

《手把手陪您学Python》7——字符串的索引

《手把手陪您学Python》8——字符串的切片

《手把手陪您学Python》9——字符串的运算

《手把手陪您学Python》10——字符串的函数

《手把手陪您学Python》11——字符串的格式化输出

5、数字和运算

数字和字符串都属于Python的标量类型,是我们在编写程序中必不可少的应用对象。通过算数运算、赋值运算、比较运算、逻辑运算、成员运算、身份运算、位运算等运算方式的学习,也为我们后面学习控制流语句奠定了基础。

《手把手陪您学Python》12——数字

《手把手陪您学Python》13——运算

6、交互式输入

除了第四篇文章中学习的输出,我们应用最多也是最广泛的方法就是输入了,也只有通过输入、执行、输出这样一个完整的循环,才能够让我们实现与计算机的交互。

《手把手陪您学Python》14——交互式输入

7、控制流

在学习控制流语句之前,我们所有的程序都是按照从上到下的顺序执行的,而且每行语句也都只执行一遍,所以这不能称之为控制,只能叫做“流水”。而当我们学习了控制流语句之后,我们才能够真正对语句进行控制,通过条件去控制是否执行、循环或者终止。语言控制能力的提高,也必然会使我们的程序变得更加丰富、灵活和简化。

《手把手陪您学Python》15——判断语句if

《手把手陪您学Python》16——循环语句while

《手把手陪您学Python》17——循环的终止

《手把手陪您学Python》18——循环语句for

除了以上内容,我们还在控制流语句的几篇文章中,和大家一起利用PyCharm编写了一个好玩的Python游戏程序——石头剪刀布。目前游戏的版本已经更新到了V3.1,大家可以通过关注“亦说Python”公众号,回复关键词“手17”,就能够免费下载到这个游戏最新版本的PyCharm程序文件。

最后,我们用一个稍微复杂点的程序作为我们这一阶段的应用案例,帮助大家回顾过去所学的知识点,并将其应用到实践中。

这次我们要编写的程序也是一个游戏程序,叫做“猜数字”。这个游戏是我在上学时使用的文曲星里面自带的一个功能,不知道大家有没有玩过(是不是暴露年龄了。。。)。因为它的规则简单、易于理解,同时又不需要特别复杂的函数、方法就能够实现,因此,特别适合做我们的阶段总结案例。

下面,先介绍一下这个游戏的规则。

电脑随机产生0~9中4位不重复数字,游戏者同样输入4位0~9中的不重复数字作为竞猜数字,并与电脑产生的数字逐位进行比较:

如果数字相同、位置也相同,则记录1个A;

如果数字相同但位置不同,则记录1个B;

如果数字不同,则不记录。

游戏者每局输入数字后,由电脑根据上述规则对每位数字进行判定,并输出形如1A0B,2A2B的结果。如果游戏者输入的数字和位置,与电脑产生的数字和位置都完全相同,输出4A0B的结果,并取得胜利。

根据这个游戏规则,我们在编写程序时有如下几个重点步骤:

1、电脑产生4位不重复数字,难点在于“不重复”。如果是可以重复的,我们可以直接生成一个四位数字就好了。如果不能重复,就要利用随机函数在一个集合中不重复选取了。这里会使用一个我们之前没有接触到的随机函数,但建议大家先利用网络搜索一下,看是否能够找到实现这个功能的函数。

2、游戏者输入4位不重复数字。如果不考虑游戏者输入错误的情况,这个步骤非常简单,只要input()提示输入内容就可以了。但为了游戏的完整,我们在程序中设计了对输入内容的三个检测条件,如果不符合输入规则,就要重复输入。重复输入使用什么语句对大家来说很容易,但可以先想一想这三个规则是什么,又应该如何实现?

3、逐位比较数字,并输出结果。要完成这个步骤,大家要考虑好如何对数字及其位置进行比较。最终的程序语句是很简洁的,可以提醒大家一下,要利用字符串的功能。字符串?比较的不是数字么,为什么要用字符串?因为要“逐位”比较,而不是整个数字进行比较,所以字符串才是更好的处理方法。所以,前面几步如果一直思考的是用数字做比较,可能要稍微调整一下了。

4、为了增加游戏性,也为了让我们多练习使用循环,在游戏中增加了计数功能,这个应该并不难。

以上就是编写这个游戏程序的一些思路和重点,希望大家能够根据这些重点,自己想一想、试一试这个程序应该如何编写。即使开始有错误也没有关系,多修改、调整几遍就好了。实在不行,再看下面的代码示例,并与自己的程序进行比较。

为便于大家的阅读和理解,在下面的示例中,每段代码都用注释的方式进行了解释。最终的PyCharm文件,也可以通过关注“亦说Python”公众号,回复关键词“手19”免费下载。

# 因为要使用随机函数,需要先导入随机函数库
import random
​
# 使用sample()函数,随机生成4位不重复数字字符串组成的列表
computer_lst = random.sample(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], 4)
​
# 使用join()函数,将列表元素连接成字符串
computer_num = str.join('', computer_lst)
​
# 为进入循环,设定的初始条件
result = '0A0B'
​
# 竞猜次数初始值
times = 0
​
# 如果答案不正确,通过循环连续竞猜
while result not in '4A0B':
​
    # 记录竞猜次数
    times += 1
​
    # 为进入循环,设定的初始条件
    user_input_isdigit, user_input_is4, user_input_isnotduplicate = False, False, False
​
    # 如果游戏者的输入不符合要求,提示重新输入
    while not (user_input_isdigit and user_input_is4 and user_input_isnotduplicate):
​
        # 游戏者输入四位数字,并将其转换成字符串
        user_input = str(input("请连续输入0~9中的4位不同数字:"))
​
        # 1、检测游戏者输入内容是否都是数字
        user_input_isdigit = user_input.isdigit()
​
        # 2、检测游戏者输入内容是否是4位
        user_input_is4 = len(user_input) == 4
​
        # 3、检测游戏者输入内容是否不包含重复数字
        user_input_isnotduplicate = True
​
        # 如果存在任意一个重复的情况,user_input_isnotduplicate的值就为False
        for i in range(3):
            for j in range(i - 3, 0, 1):
                if user_input[i] == user_input[j]:
                    user_input_isnotduplicate = False
​
        # 如果存在输入不符合要求的情况,提示重新输入
        if not (user_input_isdigit and user_input_is4 and user_input_isnotduplicate):
            print("不符合输入规则,请重新输入。")
​
    # 将A、B个数归零
    A, B = 0, 0
​
    # 逐位进行对比
    for i in range(4):
​
        # 如果位置和数字都一致,A的数量加1
        if user_input[i] == computer_num[i]:
            A += 1
​
        # 如果输入的数字包括在内,B的数量加1
        if user_input[i] in computer_num:
            B += 1
​
    # B - A得到数字正确但位置错误的数量,同时组合成结果字符串
    result = str(A) + 'A' + str(B - A) + 'B'
​
    # 如果判断正确,输出结果,循环结束,否则提示继续竞猜,使用else可以避免最后还输出继续竞猜的提示
    if result == '4A0B':
        print("这是您第{}次竞猜。您竞猜的数字是:{},竞猜结果为:{}。恭喜您!猜对了。".format(times, user_input, result))
        print('\n', '*' * 65, '\n', sep='')
        break
    else:
        print("这是您第{}次竞猜。您竞猜的数字是:{},竞猜结果为:{}。很遗憾,请继续竞猜。".format(times, user_input, result))
        print('\n', '*' * 65, '\n', sep='')

怎么样,大家是否已经玩上这个游戏了?这个游戏和“石头剪刀布”的游戏可不一样,是需要考验智商的,有可能还会玩上瘾哦^^

玩的同时大家也不要忘了,我们的目标可是学Python啊,而且我们不是玩文曲星,我们可是程序的设计者!所以,在这里给大家再留一个思考题,如何才能够通过修改程序,让我们直接就能够看到答案,一次性猜对呢?答案同样会在下一篇文章中公布。

至此,我们已经完成了Python入门第一阶段的学习了,大家是否已经感觉到小有所成了?如果您觉得有所收获,希望能够多多转发分享,让更多朋友看到《手把手陪您学Python》这个系列的文章,让更多人加入到Python学习的队伍中,也算是对我一点点小小的支持吧。

在这里先谢谢大家啦!

从下一篇开始,我们将会学习Python的数据结构,包括列表、元组、字典和集合,敬请关注。


感谢阅读本文!如有任何问题,欢迎留言,一起交流讨论^_^

欢迎扫描下方二维码,关注“亦说Python”公众号,阅读《手把手陪您学Python》系列文章的其他篇目,或点击下方链接直达。

《手把手陪您学Python》1——为什么要学Python?

《手把手陪您学Python》2——Python的安装

《手把手陪您学Python》3——PyCharm的安装和配置

《手把手陪您学Python》4——Hello World!

《手把手陪您学Python》5——Jupyter Notebook

《手把手陪您学Python》6——字符串的标识

《手把手陪您学Python》7——字符串的索引

《手把手陪您学Python》8——字符串的切片

《手把手陪您学Python》9——字符串的运算

《手把手陪您学Python》10——字符串的函数

《手把手陪您学Python》11——字符串的格式化输出

《手把手陪您学Python》12——数字

《手把手陪您学Python》13——运算

《手把手陪您学Python》14——交互式输入

《手把手陪您学Python》15——判断语句if

《手把手陪您学Python》16——循环语句while

《手把手陪您学Python》17——循环的终止

《手把手陪您学Python》18——循环语句for

For Fans:关注“亦说Python”公众号,回复“手19”,即可免费下载本篇文章所用示例语句。

亦说Python——Python爱好者的学习分享园地

猜你喜欢

转载自blog.csdn.net/mnpy2019/article/details/98851911