通过游戏编程学Python

通过游戏编程学Python(2)— 脑筋急转弯
通过游戏编程学Python(1)— 猜数字


文章目录

  • 通过游戏编程学Python
  • 前言
  • 一、知识点
  • 二、第二个游戏 —— 脑筋急转弯
    • 1. 玩法简介
    • 2. 游戏流程
  • 三、程序代码
  • 四、代码详细分析
    • 1. 空的input()函数
    • 2.字符串转义
    • 3.多行字符串
    • 4.print()函数的end参数
  • 总结与思考

前言

大家好,上节课我们囫囵吞枣般地完成了第一个小游戏的创作,不知道大家有没有亲自动手把代码抄写一遍试试呢?虽然游戏很简单,甚至可以说是有点无聊,但其中涉及到的编程知识点并不少。然而,我们却并没有对每个知识点进行旁征博引般地讲解。问哥这样做的原因有二:1,这套学习笔记的目标读者是初学者,而很多人在入门的时候还是以兴趣为主,如果能够实际动手敲上几行代码,看到效果在自己眼前实现,已经是进步了,需要及时地自我鼓励,而过深的讲解反而会劝退很多人;2,很多时候我们实现某些功能,也并不需要知道多么深的计算机科学知识,只要了解必要的功能就足够了,这也是Python所提倡的“简洁、优雅”,就好像制作冰激凌并不需要知道冰箱是怎么工作的,抓住个别知识点耗费过多精力去了解许多并不常用的功能,在现阶段有点吃力不讨好。归根究底,问哥是想让更多人,更多非计算机专业的人(比如.问哥自己),了解到编程并不是什么神秘的事情。而一旦了解了编程、实际动手做几个小程序以后,大家在生活或工作中遇到类似的功能自然会想到,用程序来实现会不会更加便捷。这对提高自己的生活或工作质量的确是很有帮助的。

在该系列后面的笔记里,问哥也会尽量以初学者的角度,去思考每一个项目如何实现,再同时添加进新的知识点,与大家共同进步!


一、知识点

  1. 空的input()函数
  2. 字符串转义
  3. print()函数的end可选参数

二、第二个游戏 —— 脑筋急转弯

1. 玩法简介

《Python游戏编程快速上手》里这一章叫做“Jokes”,问哥这里将它本地化,于是变成了“脑筋急转弯”,但核心内容是没有变化的,甚至是一样无聊的:通过按回车键,由电脑依次读出每个脑筋急转弯,再回车,显示答案,如此反复。

2. 游戏流程

Created with Raphaël 2.3.0 游戏开始 问题 答案

三、程序代码

全部代码如下:

print('有一个老太太上了公交汽车。为什么没有人让座?')
input()
print('因为车上还有空座。')
input()
print('一天,有两人在马路上走着,一人说“你看前面有辆车”,另一个人却说“没车”。为什么?')
input()
print("因为那是一辆'煤'车。")
input()
print('小狗怎么才能一下子变大呢?')
input()
print('把"犬"上的点去掉。')
input()
print("有一只小白猫掉进河里了,一只小黑猫把它救了上来,请问:小白猫上岸后的第一句话是什么?")
input()
print("小白猫说:\"喵。\"")
input()
print('''一个聋哑人到五金商店买钉子,他把左手的食指和中指分开做成夹着钉子的样子,
然后伸出右手作锤子状。服务员给他拿出锤子,他摇了摇头,给他拿来钉子,他满意地买了。
接着来了一个盲人,请问,他怎样才能买到剪子?''')
input()
print("盲人会说话,直接告诉服务员。")
print('''树有心眼,西下美女,手扶下巴,人在尔边,心死相依,言及自己,
十件家具,白色勺子,儿女双全,又住一起''', end='')
input()
print('这是哪句歌词?')
input()
print('想要把你忘记真的好难。')

四、代码详细分析

1. 空的input()函数

大家还记得上节课里说过input()是一个玩家向计算机输入指令的函数,而print()是电脑向玩家输出/打印/显示信息的函数。在上节课的例子里我们用一个变量,将用户从键盘输入的任何信息以字符串的形式保存在其中。

# 用户键盘输入任意字符,保存在变量“姓名”中
姓名 = input()
# 用户键盘输入任意字符(游戏中先通过print暗示用户输入一个整数)
print('猜猜看')
数字 = input()

这里电脑将input()获得的信息保存在变量之中,是为了在后面的程序里根据该信息作进一步的处理和判断,根据不同的信息显示不同的结果,从而实现一定的人机交互。

而input()这个函数实际上并不要求一定要有变量接收,比如:

print('小狗怎么才能一下子变大呢?')
input()

本例中程序运行到input()时光标会停在那里等待用户输入,而当用户输入任何信息按下回车,甚至什么也不输入,只是按下回车后,程序将不做任何处理,继续执行后面的语句。实际上,在这里,input()实现的仅仅类似一个“大喘气”的效果。让程序暂停一下,等待用户按下回车后继续。

2.字符串转义

上节课我们提到过Python既可以使用双引号" ",也可以使用单引号’ '表示一串字符串,但是如果字符串中需要使用双引号,则两边只能使用单引号,反之亦然。

print("因为那是一辆'煤'车。")
print('把"犬"上的点去掉。')

如果遇到必须同时表示单引号和双引号的字符串,就必须使用转义符了。参考以下示例。

Python定义的转义符有很多,常用的一些如下表所示。当在字符串中出现以下组合时("\"加上一个字母或符号),Python默认会执行它的特殊意义(这也是为什么其被称为“转义符”)。

转义字符 实际显示的内容
\n 回车或换行
\t 制表符,等同于Tab
\’ 单引号
\" 双引号
\\ 反斜杠

所以当我们需要在一对单(双)引号括起来的字符串里正确显示/打印出单(双)引号的时候,使用转义符是最简便的方法(当然还有其他方法,我们以后会介绍)。仔细观察一下本节课使用的例子:

print("小白猫说:\"喵。\"")

3.多行字符串

当我们需要一次性输入很多字符串,并不想使用多条print()语句,却想要它们在屏幕上分段显示的时候,我们可以使用刚刚介绍过的 \n 换行转义符。

print('一个聋哑人到五金商店买钉子,他把左手的食指和中指分开做成夹着钉子的样子,\n然后伸出右手作锤子状。服务员给他拿出锤子,他摇了摇头,给他拿来钉子,他满意地买了。\n接着来了一个盲人,请问,他怎样才能买到剪子?')

这样,当Python执行这条命令时,\n会被当做一个回车/换行,显示效果如下:

但是这样程序却写得很长(你也注意到,需要拉动滚动条才能看到右边写了什么),于是Python提供了另一种方法:使用左右三个单引号将一串字符串括起来。这样就可以在写程序的时候将字符串中任意换行了,如下的写法显示效果与上面的例子相同。

print('''一个聋哑人到五金商店买钉子,他把左手的食指和中指分开做成夹着钉子的样子,
然后伸出右手作锤子状。服务员给他拿出锤子,他摇了摇头,给他拿来钉子,他满意地买了。
接着来了一个盲人,请问,他怎样才能买到剪子?''')

这种三个单引号的使用方法也引申出了另一种用法:注释

上节课我们也介绍过,Python程序执行的时候,跟在"#“后面的字符将会被忽略,所以我们可以利用这个特点为程序添加注释,也可以在暂时不需要某条语句、却又不想删除的时候,在前面加个”#“将其注释掉,不再执行。但是”#"的作用范围仅仅一行,于是当我们需要注释掉很多语句的时候就会显得非常麻烦。

这个时候我们可以曲线救国,使用三个单引号,将不需要的一大段语句括起来。这样,这段内容将会被程序当成一个多行字符串,但是因为没有赋值(“=”)或打印(print())等操作,所以实际的效果就相当于“没有被执行”,如此一来,也就等同于注释了多行语句。

4.print()函数的end参数

不知大家有没有注意到倒数第三个print()语句,我们除了使用多行字符串以外,还在print()的括号里增加了一个值为空的end参数。

print('''树有心眼,西下美女,手扶下巴,人在尔边,心死相依,言及自己,
十件家具,白色勺子,儿女双全,又住一起''', end='')

print()函数会在屏幕上将括号里的内容显示出来,然后默认在最后一个字符的后面添加换行。但是如果指定了end=’ ‘,Python会在print()内容输出以后,跟上end=’ ‘引号里指定的内容,且不换行(实际上,如果没有指定end,相当于end=’\n’,请读者体会一下)。在需要某些特殊显示的时候,比如重复调用函数,将某些字符串连续地在同一行显示(而不是换行),就可以使用end参数,如下例:

这在后面的程序里也会用到,到时候我们再详细解释。


总结与思考

这节课的知识点相对比较少,也比较基础。同时问哥也在想,较少的内容也许更能够为初学者所接受,但同时却又舍弃了一些“完成了一个完整程序”的成就感。当后面介绍到稍微复杂一点的程序的时候,可能不得不将一个程序示例进行拆分,在多篇文章中连载。而问哥会尽可能在“冗长”与“成就感”之间做一个平衡,也欢迎各位朋友在评论区提出改进意见。

本章的内容十分简单,你也可以将输入的脑筋急转弯换成其他笑话、故事、歇后语等有趣的内容,也可以放入无限多的内容,程序会一直按顺序执行(伴随着用户的回车键),直到所有内容都被显示。那么可以进一步思考一下,如何在这样简单的代码中添加一些代码,把计算机变成一个故事大王,在我们需要的时候,随机抽取若干条笑话或故事,供我们消遣呢?感兴趣的朋友不妨思考一下。

我们下次再见咯~

通过游戏编程学Python(2)— 脑筋急转弯相关推荐

  1. 通过游戏编程学Python(4)— 猜成语(上)

    通过游戏编程学Python 通过游戏编程学Python(3)- 赌大小 通过游戏编程学Python(2)- 脑筋急转弯 通过游戏编程学Python(1)- 猜数字 文章目录 通过游戏编程学Python ...

  2. 通过游戏编程学Python(5)— 猜成语(下)

    通过游戏编程学Python 通过游戏编程学Python(4)- 猜成语(上) 通过游戏编程学Python(3)- 赌大小 通过游戏编程学Python(2)- 脑筋急转弯 通过游戏编程学Python(1 ...

  3. 通过游戏编程学Python(3)— 赌大小

    通过游戏编程学Python 通过游戏编程学Python(2)- 脑筋急转弯 通过游戏编程学Python(1)- 猜数字 文章目录 通过游戏编程学Python 前言 一.知识点 二.第三个游戏 -- 赌 ...

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

    通过游戏编程学Python 通过游戏编程学Python(1)- 猜数字 文章目录 通过游戏编程学Python 前言 一.知识点 二.第一个游戏 -- 猜数字 1. 玩法简介 2. 游戏流程 三.程序代 ...

  5. 游戏编程学Python(8)— 扫雷(文字版)

    通过游戏编程学Python(7)- 井字棋(下) 通过游戏编程学Python(7)- 井字棋(上) 通过游戏编程学Python(番外篇)- 单词小测验 前言 前一段时间扫雷游戏挺火的,可惜问哥没有赶上 ...

  6. 通过游戏编程学Python(6)— 英汉词典、背单词

    通过游戏编程学Python 通过游戏编程学Python(番外篇)- 乱序成语.猜单词 通过游戏编程学Python(5)- 猜成语(下) 通过游戏编程学Python(4)- 猜成语(上) 文章目录 通过 ...

  7. 通过游戏编程学Python(番外篇)— 单词小测验

    通过游戏编程学Python 通过游戏编程学Python(6)- 英汉词典.背单词 通过游戏编程学Python(番外篇)- 乱序成语.猜单词 通过游戏编程学Python(5)- 猜成语(下) 通过游戏编 ...

  8. 通过游戏编程学Python(7)— 井字棋(下)

    通过游戏编程学Python 通过游戏编程学Python(7)- 井字棋(上) 通过游戏编程学Python(番外篇)- 单词小测验 通过游戏编程学Python(6)- 英汉词典.背单词 文章目录 通过游 ...

  9. 小学生python编程写游戏_教你如何像玩游戏一样学Python

    原标题:教你如何像玩游戏一样学Python 在编程世界,关于哪个语言是最好的争论从未停止,虽然道理谁也不服谁,但是关于编程的热度,我们可以从TIOBE 编程语言排行榜中得到结果. ▲用Python进行 ...

最新文章

  1. 直接内存访问(DMA)
  2. ip route-static 命令的参数
  3. 全国计算机一级可以在手机上报名吗,全国计算机一级过的话能多次报名?
  4. Coding and Paper Letter(一)
  5. ActiveMQ(07):ActiveMQ结合Spring开发--建议
  6. 连连看外挂消去算法分析
  7. 巩固知识体系!mysql变量类型
  8. swiper.js插件的使用
  9. switch 是如何支持 String 的?为什么不支持 long?
  10. 怎么用虚拟机安装Windows XP?
  11. MySQL-运维工具 pt-archiver数据归档工具
  12. OWASP TOP 10 及防御
  13. iphone和iPad开发的区别
  14. 基于smart_rtmp直播,最简单的部署手册
  15. 面试角度分析:微信里面让你删掉一个功能,你选哪个?
  16. python求1到n的奇数和_编写程序。输入任意整数n,计算1到n的奇数和。C语言编写程序 输入整数N 显...
  17. Jim Keller:在指令集上辩论是一件悲哀的事情
  18. 计算机桌面下方标图,电脑下方怎么设置显示桌面图标
  19. 5.3 闪电网络的设计
  20. 鸿蒙os商用版,鸿蒙OS再次官宣最快今年9月商用,可以一夜之间代替安卓系统

热门文章

  1. 代码注入(web安全入门)
  2. 明星与品牌 | 张艺兴、刘亦菲亮相活动;王一博、赵露思、​时代少年团代言新品牌;白敬亭、范丞丞等新动向...
  3. Mysql binlog数据恢复(使用mysqlbinlog_flashback逆向生成SQL语句)
  4. AngularJS 学习笔记---AngularJS 表达式
  5. happens-before是什么?JMM最最核心的概念,看完你就懂了
  6. java happens before_简单易懂讲解happens-before原则
  7. SQL Server 管理系列课程-王进-专题视频课程
  8. 阿里巴巴将推自主独立搜索引擎?
  9. 知了汇智:坚持发展产教融合,做好高校、人才与企业之间的桥梁
  10. Python读取json文件