对于Python来讲,正确的【沟通逻辑】才能让Python准确地执行你的命令。

比方说,我想让天猫精灵在感知到我开门的一瞬间,打开客厅的灯。如果我只说:天猫精灵,打开灯。那么,由于缺少开门的前提条件,无论你开不开门,灯都会打开着。

所以,我们下的命令应该是这样:天猫精灵,如果我开门,你打开客厅的灯。

而这个下命令的如果…就…逻辑,就是与计算机沟通的逻辑——条件判断,其作用就是明确地让计算机知道:在什么条件下,该去做什么。

对于Python也是同样。Python之所以能完成自动化任务,比如自动抓取网页关键词,自动下载小电影等,就是因为它可以执行条件判断

看个例子:

import timeprint('如果你想拥有无限的力量和能量,那必须夺得力量宝石')time.sleep(2)print('如果你想扭曲时空和任意地传送,那必须夺得空间宝石')time.sleep(2)print('如果你想任意地修改现实,无视任何宇宙规律,那必须夺得现实宝石')time.sleep(2)print('如果你想到达任何一个时间点,无论是古老的年代还是遥远的未来,那必须夺得时间宝石')time.sleep(2)print('如果你想控制生者和死者的灵魂,那必须夺得灵魂宝石')time.sleep(2)print('如果你想拥有不朽的精神力量并操控任何人的思维,那必须夺得心灵宝石')time.sleep(2)print('那么,如果让你来选择的话,你想要获得哪颗宝石呢?')time.sleep(2)print('请在以下六个选项【1 力量宝石 ;2 空间宝石;3 现实宝石 ;4 时间宝石;5 灵魂宝石 ;6 心灵宝石;】中,选择你最想获得的宝石吧!')time.sleep(3)answer=input('请将对应数字输入在冒号后: ')if answer=='1':print('我告诉你哦,力量宝石保存在山达尔星的新星军团的总部基地')time.sleep(3)elif answer=='2':print('空间宝石在洛基手里')time.sleep(3)elif answer=='3':print('雷击已将现实宝石交给收藏家保管')time.sleep(3)elif answer=='4':print('奇异博士愿意用时间宝石换取钢铁侠的性命')time.sleep(3)elif answer=='5':print('必须献祭自己心爱的人才能得到灵魂宝石')time.sleep(3)else:print('幻视头上的心灵宝石被绯红女巫摧毁,但可用时间宝石复原')time.sleep(3)#输出
如果你想拥有无限的力量和能量,那必须夺得力量宝石
如果你想扭曲时空和任意地传送,那必须夺得空间宝石
如果你想任意地修改现实,无视任何宇宙规律,那必须夺得现实宝石
如果你想到达任何一个时间点,无论是古老的年代还是遥远的未来,那必须夺得时间宝石
如果你想控制生者和死者的灵魂,那必须夺得灵魂宝石
如果你想拥有不朽的精神力量并操控任何人的思维,那必须夺得心灵宝石
那么,如果让你来选择的话,你想要获得哪颗宝石呢?
请在以下六个选项【1 力量宝石 ;2 空间宝石;3 现实宝石 ;4 时间宝石;5 灵魂宝石 ;6 心灵宝石;】中,选择你最想获得的宝石吧!
请将对应数字输入在冒号后: 1
我告诉你哦,力量宝石保存在山达尔星的新星军团的总部基地

你看到没?这就是条件判断如果…就…逻辑产生的魔法。那么,这个条件判断的代码,要怎么码呢?

条件判断

条件判断语句总共有三种表现形式,我们先从最简单的单向判断:if开始说起

单向判断:if

单向判断:if代表什么呢?相传上面的六颗宝石是宇宙中最强大的东西。如果一个人同时拥有六颗宝石,ta可以实现包括毁灭宇宙在内的所有事情。

你发现,上面的故事中,有一个如果……就。那么,如果我们要用代码来“翻译”这段话,就可以用条件判断语句中的单项判断:if来表述。下面,请你来运行一下下方代码。

# 为宝石数量赋值
stonenumber=6# 条件:如果你拥有的宝石数量大于等于6个
if stonenumber>=6:# 结果:显示‘你拥有了毁灭宇宙的力量’的结果print('你拥有了毁灭宇宙的力量')   #输出
你拥有了毁灭宇宙的力量  

那么,这段代码是如何实现的呢?

首先,第一行代码,用赋值运算符=对当前情况进行赋值:将你拥有的宝石个数6赋值给变量——宝石数stonenumber

第二步,确定if条件:如果变量stonenumber的值>=个数6时,就执行冒号后,下一行的命令。

第三步,用print()命令打印出结果:你拥有了毁灭宇宙的力量。所以,if语句的单向判断逻辑,我们可以这样归纳:

在这里,你可能注意到了一个细节:在条件判断代码中的冒号:后、下一行内容的前面,会空几个格,但这是为什么呢?

首先,在计算机的沟通语言中,空格的学名叫缩进,比如我们写文章都要空两个格,这就叫首行缩进

对于Python而言,冒号和缩进是一种语法。它会帮助Python区分代码之间的层次,理解条件执行的逻辑及先后顺序。【注:缩进是四个空格或一个Tab键】

并且,在if条件语言中,缩进不需要我们手动按空格键。当你用英文输入法打:后按回车,我们的开发工具(用来编写Python代码的程序)为了方便大家编程,会自动实现下一行代码,向右缩进的功能。

此时,被缩进的内容(print()函数)和if条件语句组成了一个代码块(一个整体),成为了if条件下的内部命令

这意味着:如果赋值满足if条件,计算机就会准确执行if条件内部的命令(即缩进的代码块)。

下面,我们来小结一下单向判断:if的代码逻辑及语法格式:

双向判断:if…else…

在Python宇宙,我们可以利用if的双向判断形式:if…else…去实现这个行动:当宝石数量还没达到6颗的时候,需要带着卡魔拉去沃弥尔星寻找灵魂宝石。

下面,请你直接运行下面的代码,看程序是如何识别的:

# 赋值语句:为宝石数量赋值
stonenumber=3# 条件:如果你拥有的宝石数量大于等于6个
if stonenumber>=6:# 结果:显示‘你拥有了毁灭宇宙的力量’的结果print('你拥有了毁灭宇宙的力量')# 条件:当赋值不满足if条件时,执行else下的命令
else:# 结果:显示‘去找灵魂宝石’的结果print('带着卡魔拉去沃弥尔星寻找灵魂宝石')#输出
带着卡魔拉去沃弥尔星寻找灵魂宝石

很多时候,我们不能把鸡蛋放在一个篮子里,要做好两手准备:如果不满足条件时,我们要怎么办。

Python则很贴心地,让我们借用if…else…语句,让码农们有了另一种选择——【如果…不满足,就…】

if...else条件语句中,ifelse各自抱团,形成两个不同的代码块。表示的是条件其他条件的互斥关系——如果不满足if条件,就执行else其他条件

下面,我们来做个题巩固一下if...else...的知识点:前天晚上,我无比纠结自己要不要吃夜宵,所以上秤称一下,如果体重超过100斤,就不吃了,没有的话,就放心吃。结果……刚好101斤(泪目)……

weight=101 #体重if weight>100:print('不吃了')else:print('放心吃')#输出
不吃了

关于if...else...的相关知识点到这里就讲完了,我们来总结一下if…else…语句的知识点。

多向判断:if…elif…else…

那么,在判断3个或3个以上的条件时,我们就需要借助Python中的多向判断命令:if…elif…else…

这三者共同构成了多向判断的命令逻辑关系:如果if的条件不满足,就按顺序看是否满足elif的条件,如果不满足elif的条件,就执行else的命令。

并且,当判断的条件超过3个时,中间的多个条件都可以使用elif

那么,这个代码要怎么写呢?我们还是在代码中来感受一下elif的逻辑

# 为宝石数量赋值
stonenumber=5# 条件:如果你拥有的宝石数量大于等于6个
if stonenumber>=6:# 结果:显示‘就拥有了毁灭宇宙的力量’的结果print('你拥有了毁灭宇宙的力量')# 条件:如果想让宝石数量停留在5个以下,至少一个
elif 0<stonenumber<=5:# 结果:显示‘绯红女巫需要亲手毁掉幻视额头上的心灵宝石’的结果print('绯红女巫需要亲手毁掉幻视额头上的心灵宝石')# 条件:当赋值不满足if和elif条件时,执行else下的命令,宝石数量为0个
else:# 结果:显示‘需要惊奇队长逆转未来’的结果print('需要惊奇队长逆转未来')#输出
绯红女巫需要亲手毁掉幻视额头上的心灵宝石

通过上面ifelse的积累,多向判断elif的逻辑是不是很好理解?

首先,第一行的赋值,会按照从上到下的顺序挨个试一遍,看自己满足哪个条件,满足了就不往下走,不满足就继续试,试到出结果为止。

其次,elif的运行本质上和else一样,已经带有其他条件的意思,所以elif后可以不接else

比如上面的代码,stonenumber=5会对下面的if elif else条件逐个扫描,看看自己满足哪一个,就执行哪个条件底下的命令。

很显然,第二个条件elif 0<stonenumber<=5刚好能与stonenumber=5的前提相匹配,于是,执行elif底下的命令:print('绯红女巫需要亲手毁掉幻视额头上的心灵宝石')**。

下面,我们来总结一下elif的知识点:

 if嵌套

比如:

考试成绩评价规则:1. 如果成绩大于等于60分,就是及格,在此前提下:
(1)如果成绩大于等于80分,属于优秀范围;
(2)否则(即大于等于60分而小于80分),属于一般范围。2. 如果成绩小于60分,就是不及格,在此前提下:
(1)如果成绩小于30分,平时太不认真,属于学渣了;
(2)如果成绩(小于60分而大于等于30分),那么,至少还能抢救一下。

像这种如果底下还有如果(即条件里还套条件)的情况,我们如何用Python把上面的规则写出来,并得出评价呢?

答案就是——嵌套条件

if嵌套的应用场景,简单来讲就是:在基础条件满足的情况下,再在基础条件底下增加额外的条件判断。

就像上面的基础条件是60分及格,想要判断优秀一般还要增加额外条件——是否大于等于80;在小于60分不及格基础条件下,想要判断学渣可抢救还要增加额外条件——是否大于等于30。

if嵌套可以像下方代码这样:

historyscore=26if historyscore>=60:print('你已经及格')if historyscore>=80:print('你很优秀')else:print('你只是一般般')else:print('不及格')if historyscore<30:print('学渣')else:print('还能抢救一下')print('程序结束')#输出
不及格
学渣
程序结束

居然出现了三个扎心的结果……那么,在Python中,我们如何同时得出不及格学渣程序结束这三个结果的呢?

if嵌套的执行顺序 

首先,我们先从整体总览一下,这段成绩评价规则的代码,总共分为四部分【赋值ifelseprint()】,两个大代码组。

并且,在代码组1的if条件和代码组2的else的条件下,又包含了条件判断命令if...else...

那么,这种嵌套命令我们要如何理解呢?

缩进相同的命令处于同一个等级,第一步,计算机就要按顺序一条一条地执行命令。

那么,计算机执行的顺序就是:(1)先给historyscore赋值;

(2)因为if和else是只能留一个的互斥关系,if和else下的代码块只会执行一个,所以计算机要判断赋值的内容满足【historyscore>=60】还是【historyscore<60】的条件——如果满足if的条件,就执行if缩进下的内容,如果不满足就执行else缩进下的内容;

(3)执行print('程序结束')。

下面,我们再通过一张导图理一下if嵌套的逻辑,老师建议你把这张图收藏起来,接下来写嵌套代码的时候可以翻看:

要注意的是,elif也是可以放进嵌套里的。

如何写嵌套代码

if嵌套由于涉及多个条件判断,并且是条件套条件的判断,所以为了理清逻辑,我们可采用扒洋葱大法写if嵌套

用成绩举例,第一步就要搞定最外层那张皮,将最基础的命令和条件写出来。

那么,我们的思考逻辑应该是这样(1)把成绩赋给变量historyscore;(2)用if…else写最基础判断条件如果historyscore>=60时,打印你已经及格,否则,打印不及格;(3)用print()输出程序结束

historyscore=26
#赋值语句:为历史成绩赋值if historyscore>=60:#条件:当历史成绩大于等于60时:print('你已经及格')else:#条件:当历史成绩小于60时print('不及格')#结果:输出不及格的结果print('程序结束')
#打印最终结果#输出
不及格
程序结束

第二步,在“第一层皮”里装东西。也就是在条件【historyscore>=60】下,增加额外条件。

其中,额外条件1:当历史成绩大于等于80分,显示结果你很优秀;额外条件2:当历史成绩在60到80分之间,显示结果:你只是一般般

historyscore=26
#赋值语句:为历史成绩赋值if historyscore>=60:#条件:当历史成绩大于等于60时print('你已经及格')#结果:输入及格的结果if historyscore>=80:#条件:当历史成绩大于等于60,且历史成绩大于等于80print('你很优秀')#结果:输出你很优秀的结果else:#条件:当历史成绩大于等于60,且小于80时print('你只是一般般')#结果:输出你只是一般般的结果else:#条件:当历史成绩小于60时print('不及格')#结果:输出不及格的结果print('程序结束')
#打印最终结果

最后一步,你要为另一个大条件else增加额外条件了!

请你以下方代码框中的代码为基础,在else底下增加两个额外条件。

其中,额外条件1:当历史成绩小于60,同时还小于30时,输出结果学渣;额外条件2:当历史成绩小于60,但大于等于30时,输出结果还能抢救一下

historyscore=26
if historyscore>=60:print('你已及格')if historyscore>=80:print('你很优秀')else:print('一般般')
else:print('不及格')if historyscore>=30:print('还能抢救一下')else:print('小可是学渣')
print('打印结束')#输出
不及格
小可是学渣
打印结束

最后的最后,我们来总结一下整节课的知识点:

练习:

请你写出一段代码,判断美国队长的工资水平,代码需要满足如下条件:
1.如果月工资小于等于500美元,显示“欢迎进入史塔克穷人帮前三名”
1.1如果月工资在100-500美元之间,显示“请找弗瑞队长加薪”
1.2如果月工资小于等于100美元,显示“恭喜您荣获“美元队长”称号!”
2.如果月工资在500-1000美元之间(含1000美元),打印“祝贺您至少可以温饱了。”
3.其他情况下,如果工资大于1000美元,打印“经济危机都难不倒您!”
3.1如果工资在1000-20000美元(含20000美元)之间,打印“您快比钢铁侠有钱了!”
3.2如果月工资大于20000美元,打印“您是不是来自于瓦坎达国?”
4.不管赋值改变后输出结果如何,都需固定打印结果“程序结束”


money=600if money<=500:print('欢迎进入史塔克穷人帮前三名')if money<100:print('恭喜您荣获“美元队长')elif 100<money<500:print('请找弗瑞队长加薪')elif 500<money<1000:print('祝贺您至少可以温饱了')else:print('经济危机都难不倒您!')if money>20000:print('您是不是来自于瓦坎达国?')elif 1000<money<20000:print('您快比钢铁侠有钱了!')print('打印结束')

python自己的手稿三之沟通逻辑相关推荐

  1. python基础教程第三版电子版百度云-《python基础教程第三版》高清版PDF免费下载...

    下载地址1:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 <python基础教程第三版>高清版 ...

  2. python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  3. python基础教程第三版电子版-《python基础教程第三版》PDF高清完整版-免费下载...

    <python基础教程第3版>高清PDF下载地址:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 ...

  4. python爬虫入门教程(三):淘女郎爬虫 ( 接口解析 | 图片下载 )

    2019/10/28更新 网站已改版,代码已失效(其实早就失效了,但我懒得改...)此博文仅供做思路上的参考 代码使用python2编写,因已失效,就未改写成python3 爬虫入门系列教程: pyt ...

  5. Python复习系列:Python基础知识(三)

    Python基础知识(三) Python基础知识(三) (一)循环结构和选择结构 1. 条件表达式 2. 选择结构 2.1 单分支选择结构 2.2 双分支选择结构 2.3 多分支选择结构 2.4 选择 ...

  6. python笔记_第三周

    python笔记_第三周 第十天 回调函数 回调函数就是一个被作为参数传递的函数把函数a当做一个值 赋值给函数b的形参, 在调用函数b的时候 在函数体内 适当的实际调用函数a, 这个函数a就是回调函数 ...

  7. python语言基础(三)基础语法基础

    python的基础语法 Python 源程序就是一个特殊格式的文本文件,可以使用任意文本编辑软件做 Python 的开发 Python 程序的 文件扩展名 通常都是 .py 认识错误(BUG) 编写的 ...

  8. python学习之第三课时--基本数据类型及区别,变量

    python学习之第三课时--基本数据类型及区别,变量 基本数据类型及区别 1. 数字类型(int) 数字型--变量值直接是数字,没有双引号""   整数 2. 浮点数(float ...

  9. Python 发送 email 的三种方式

    Python发送email的三种方式,分别为使用登录邮件服务器.使用smtp服务.调用sendmail命令来发送三种方法 本文原文自米扑博客:Python 发送 email 的三种方式 Python发 ...

最新文章

  1. 从用户反馈的可解释性提升推荐模型
  2. iOS很重要的 block回调
  3. Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart)
  4. CentOS 6.8 安装FTP及添加用户
  5. 算法讲解 -- 区间dp经典模型与优化(石子归并)
  6. 赛码网算法: 军训队列( python实现 )
  7. node yarn_使用Yarn Plug'n'Play摆脱node_modules
  8. LeetCode 187. 重复的DNA序列
  9. 从趋势到必选项,探讨企业数字化转型方式方法
  10. 《算法:C语言实现》阅读笔记
  11. mysql:赋予用户权限、查看及修改端口号
  12. 毫米和像素怎么换算_自己计算出来的关于像素和厘米单位的换算
  13. R语言:lengths计算列表list中元素的个数
  14. 关于iphone设置显示模式为标准模式和放大模式时的区别
  15. c# WindowsForm上使用Panel制作画板的一些小功能
  16. Unity 手机触屏事件
  17. 麒麟安装tomcat
  18. Cocos2d-x v3.6制作射箭游戏(二)
  19. 十七、IPsec基本原理与配置
  20. MAR在计算机组成原理上是啥,计算机组成原理复习材料(2)

热门文章

  1. spring boot:从零开始搭建一个项目 - day 5 Mybatis plus代码自动生成器
  2. android全网通手机,全网通手机怎么用?全网通手机网络制式是什么意思?
  3. 赚大钱常用营销策略揭密
  4. C4D 常用操作小记
  5. CIO | IT总监 | IT经理工作指南
  6. 4G模块未注册到网络原因
  7. group by 优化
  8. HDUOJ 4847 Wow! Such Doge!
  9. 信息学奥赛一本通_1136_密码翻译
  10. (思维)765. 情侣牵手