父与子的编程之旅 python 3_Python!帮我做一下选择呗:父与子的编程之旅 学习笔记(5) 2018-07-10...
1. 第七章:判断,再判断
其实之前我也想过这个问题:要是每次都要我们告诉程序应该做什么,其实效率不高,并且解决问题的过程一定会变得枯燥。
程序,必须要知道自己接下来要做什么。
前提是,它要有基本的判断力,能决定下一步怎么走。这种技术我们称它为决策技术(decision-making)。
7.1 测试,测试
程序要根据一下情景进行设置:
(1)如果Tim给出正确答案,则加一份;
(2)如果价格满97元,则自动包邮;
(3)如果文件没找到,则显示错误信息……
这些我们都成为“决策”,而决策的第一步,便是测试:
(1)Tim的答案是否正确?是/否
(2)价格是否满97元?是/否
(3)文件是否找到?是/否
要让python理解我们的意思,要从两个方面入手:问题和回答。
后者很容易看出来,测试只能有两个正确的答案:是/否。
前者比较棘手:如何让python理解我们的意思呢?
我们可以换一种方式问:
如果 Tim 的答案 等于 正确答案
这句话存在两个“变量”,一个是Tim的答案,一个是正确答案。假如它们是相等的,条件(condition)为真(true);否则,不相等,则条件为假(false)。
这种判断,我们称之为分支(branching)。而前面的如果,我们在python中用if语句来表达。
7.2 缩进
不要以为缩进不重要!有时它能影响整个程序的运行,具体例子请参考小结(3)。
7.3 if ==语句:测试两个值是否相等
注意这条语句最后的冒号
7.4 其他类型的测试:比较操作符
(1)一些常用的比较大小符号:
!= 不等于
<> 这个也是不等于(没那么常用,且python3舍弃了)
(2)一些特殊用法,比如:
if 8 < age < 12
这里用了两个小于号,可以限定age的范围;再比如:
if 8 <= age <= 12
这样可以包含8和12两个岁数。
(3)练习:比较数字大小
比较两个数字大小
皮一下,用了科学记数法:)
7.5 如果测试为假会怎么样
在测试中,需要考虑到许多意外的情况,以免出现bug。其中需要重点考虑的是if语句有没有包含所有情况。以下是一些可以避免出bug的方法:
(1)做另一个测试:elif
一个不行,就另一个:elif语句想要多少都行
(2)注意else语句只能放最后
7.6 测试多个条件
用if跟else语句测试多个条件。注意这里if里面嵌套了另一个if函数。
测试结果
7.7 使用and
使用and,将嵌套的if函数连在一起:
if age >= 8 and grade >= 3
这样就不用多写一行了。在代码复杂的时候应该很有用。
另外,还有很多方法简化多个条件的判断:
7.8 使用or
如果使用or,假如有一个条件为真,整个代码块就可以执行:
相当于设置了“准入条件”
皮两下:)
7.9 使用not
可以用not把比较倒过来,表示相反的逻辑:
可以看到,if not (age < 8)与 if age >= 8 这句代码,两者含义是一样的。
练习题
(1)检查一个数是否大于30,并且小于或等于40:
后来我尝试写一个自动划分成绩等级的函数:
但发现不行,多次elif并不能出现我想要的结果。
暂时能实现的是判断是否得a
(4)判断输入的字母是否为特定字母:
需要注意:1,用两个等号,而不是一个;2,字母用单引号
(5)写一个自动计算折扣程序:账单没超过1000元的打九折,超过1000元的打八折:
一开始我就想当然地噼里啪啦一大堆码上去,结果提示float错误:
果然还是会忘记float啊。。
接下来,不仅加了float,还在第一个条件上加上了print,要不然显不出打九折的情况:
果然是细心使得万年船!
(6)一个足球队在寻找年龄在10到12岁之间的小女孩加入。要求写一个程序,询问年龄与性别,并且要求人性化,如果不是小女孩就不用再询问年龄:
下面是一开始写的,首先不能用gender != f 来表示,因为加入这样还是会显示后面“What's your age”的提问;另外还是漏了age应该用int函数来赋值,否则前面rawinput函数获得的字符型值,是不能够直接跟age这个数值进行比较的。(汗,这些细节好磨人啊!)
别抄这个,错的
把该改的改了
上面是错误的,下面是正确的
(7)我们正长途旅行中,现在差不多要到一个加油站,距下一个加油站还有200km。
编写一个程序,确定要不要在这儿加油,还是到下个站加油。提示:
1⃣️油箱有多大?(单位:升)
2⃣️油箱有多满?(百分比)
3⃣️汽车每升油可以走多远?(L/km)
以下是第一次的编程:
(1)没有将百分比处理好;(2)最后判断大小时错误了
结果完全是错的~
这是第二次的编程,分别处理了两个bug
第二次的结果,正确了~
值得注意的是,这道题还出了一个附加要求:因为油表容易出现误差,所以要求加上5km的缓冲区。一开始我不懂这什么意思,跟老公讨论后,明白了是在油表处减去5km,有点像是做最坏打算的意思。运行过程和结果如下:
啊,今天终于结束了~
小结
(1)比较测试,和关系操作符密不可分,像是重新认识了大于号、小于号和等于号~
(2)这次的练习都比较实用,而且应该说是太符合实际了,导致我一下子转不过弯来,不能很好的用程序思维去分析问题。今晚的练习异常艰苦,很多次出现bug都不能分析出所以然,——但既然选择了学习,那就要不断的去挑战自己的舒适区,能学到东西就是最好的状态。
(3)后来我自己尝试写了一个简单的根据密码判断能否进入的程序,
第一遍尝试解决密码模块,如下:
这里if后面没加冒号,然后也漏了else的情况
第二遍,修正了bug:
这是第二遍,改正了前面的bug,但还没实现核心功能
接下来,要实现的是中间的模块,先加了注释,然后将代码直接粘贴进去:
当时觉得万无一失了
然而,运行结果是:
出现了即使密码错了,也能进入程序的bug
百思不得其解,最后在python编译器的帮助下,将新插入的程序,用制表符重新编辑好缩进,结果——正确了!
所以说,缩进不对,程序崩溃!
正确的运行结果
缩进是一个非常小的问题,但它能够影响整个程序。同样,一些小细节假如不注意,在编写大程序时就会有非常多的漏洞。魔鬼在细节!
父与子的编程之旅 python 3_Python!帮我做一下选择呗:父与子的编程之旅 学习笔记(5) 2018-07-10...相关推荐
- python图片表格提取算法_python识别并提取表格中的文字--Apple的学习笔记
此文为的后记.读者可以参考https://www.jianshu.com/p/b85667a4ef76 用到的python文字提取库pytesseract.用pip install pytessera ...
- B站python教程“清华大佬终于把Python讲的如此清新脱俗!保姆级教程从入门到精通”视频学习笔记p1-p85
1.python脚本的格式:hello.py 其中hello为脚本名,py为脚本格式,在终端可以用python hello.py进行脚本的执行 2.什么是头注释:不是为代码而服务,更多是被系统或解释器 ...
- Python学习笔记(40)~10个随机分布的坐标点
10个随机分布的坐标点 Demo #!/usr/bin/python3 from random import uniform''' uniform(a,b)生成[a,b)内的一个随机数 '''r=[( ...
- python能帮我们实现什么用_你都用 Python 来做什么?
「除了生孩子,Python 啥都能做!!!」这句话最近实在是有些火啊,难道 Python 就真的这么强吗?当然,不信咱们可以看一下数据 这是近期 TIOBE 公布的 2019 年 10 月编程语言排行 ...
- Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)
Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...
- Java 3D编程实践_Java 3D编程实践——网络上的三维动画[学习笔记]
评论 # re: Java 3D编程实践--网络上的三维动画[学习笔记] 2006-08-24 23:41 gy # re: Java 3D编程实践--网络上的三维动画[学习笔记] 2007-03-2 ...
- python 可以用excel做词云图嘛_word_cloud-用Python之作个性化词云图
原标题:word_cloud-用Python之作个性化词云图 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业 ...
- 学习笔记-使用python进行数据分析
最近在学习利用python进行数据分析,这些博客算是笔记吧,和大家分享分享,欢迎各路大佬前来指导 学习所用书籍:<python数据分析入门从数据获取到可视化>还有<利用python进 ...
- 潘石屹也要学编程了?Python之父:并非人人都需要了解计算机发生了什么
大数据文摘出品 作者:曹培信 21世纪是编程的时代,几乎人类所做的一切,但凡跟互联网沾点边,都可能涉及到计算机编程,后台的程序跑出的结果通过大大小小的屏幕呈现在我们面前,人们已经觉得这是理所当然的. ...
- 数据分析师的编程之旅——Python爬虫预备篇(2)前端设计
作者:李禹锋,重庆芝诺大数据分析有限公司数据挖掘工程师. 有一个程序猿的岗位叫做前端工程师,当前市场需求量也不小,主要是以HTML5框架(H5).CSS3样式表和JavaScript语言(简称JS)为 ...
最新文章
- 翟天临首次回应毕业季被学生骂:能缓解论文季压力,就有意义
- 云栖大会变迁史(2009-2017)
- Python_62面向对象
- 百度超级链XChain(4)核心数据结构
- python 基于UDP协议的socket 报错:OSError: [WinError 10049] 在其上下文中,该请求的地址无效(绑定的ip要跟本地ip对应)
- Python 进程与线程小随笔
- python与正则表达式(part7)--re模块使用
- docker安装的PHPFPM容器Redis扩展
- 【Presto】http-worker-103	com.facebook.presto.execution.SqlTaskManager	Switching coordinator affinity
- 项目管理: Maven 让事情变得简单
- 计算机原理的拼音,微机原理课程,the course of microcomputer principles,音标,读音,翻译,英文例句,英语词典...
- Unity3D之NGUI基础3:UILabel显示字体
- cenyos7安装 yum不可用_centos7安装fabric
- Learning-Python【1】:交互式环境与变量的使用
- iOS开发GCD(3)-数据安全
- shell 强制覆盖文件夹_如何强制robocopy覆盖文件
- 微信小程序如何在手机预览调试
- 关于学习的认知方法 | 九七的奇思妙想
- 线上实习 牛刀小试——增删改查
- navicate Cannot create file ... 系统找不到指定的路径”问题解决