分享

Python之沟通逻辑

 endjiami 2020-10-16

おかえり!欢迎回来!现在,请和我一起全屏吧~windows:请按F11(或Fn+F11);mac:请同时按control+command+F。

icon

在上一关,老师带领你攻克了如何与Python沟通的语言大关——通过三种数据类型(字符串、整数和浮点数)的相互转换,突破现实世界和镜像世界数据差异的墙,将代码成功执行。

icon

但是,对于Python来讲,光正确使用【镜像世界的数据】还不够,还需要正确的【沟通逻辑】才能让Python准确地执行你的命令。

icon

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

icon

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

icon

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

icon

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

icon

下面,吴枫老师要给大家讲一个《复仇者联盟3:无限宝石》的故事,来get一下逻辑判断的趣味性。(友情提示:即使小同学没看过电影也不会影响你理解代码的。)

icon

请同学们先点击下面代码框左侧的运行选项,然后在右侧的终端处按照提示语,填写你选择的数字。

 已完成课堂练习

重做

分享

main.py

1
import time
2

3
print('如果你想拥有无限的力量和能量,那必须夺得力量宝石')
4

5
time.sleep(2)
6

7
print('如果你想扭曲时空和任意地传送,那必须夺得空间宝石')
8

9
time.sleep(2)
10

11
print('如果你想任意地修改现实,无视任何宇宙规律,那必须夺得现实宝石')
12

13
time.sleep(2)
14

15
print('如果你想到达任何一个时间点,无论是古老的年代还是遥远的未来,那必须夺得时间宝石')
16

17
time.sleep(2)
18

终端

123

456

1

icon

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

条件判断

icon

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

单向判断:if

icon

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

icon

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

 已完成课堂练习

重做

分享

main.py

1
# 为宝石数量赋值
2
stonenumber=6
3

4
# 条件:如果你拥有的宝石数量大于等于6个
5
if stonenumber>=6:
6
    
7
    # 结果:显示'你拥有了毁灭宇宙的力量’的结果
8
    print('你拥有了毁灭宇宙的力量')

终端

bash:21$python~/classroom/apps-1-id-5cd9765619bbcf00

0155479b/21/main.py

icon

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

icon

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

icon

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

icon

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

icon

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

icon

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

icon

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

icon

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

icon

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

icon

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

icon

那么下面,请你运行下面这个代码,看看运行结果是什么。(请不要更改代码,直接点击运行键,当终端出现红色报错提醒后,点击跳过本题

 已跳过课堂练习

重做

分享

main.py

1
# 赋值语句:为宝石数量赋值
2
stonenumber=6
3

4
# 条件:如果你拥有的宝石数量大于等于6个
5
if stonenumber>=6:
6

7
# 结果:显示'你拥有了毁灭宇宙的力量’的结果
8
print('你拥有了毁灭宇宙的力量')
9
    

终端

bash:35$python~/classroom/apps-1-id-5cd9765619bbcf00

0155479b/35/main.py

File"/home/python-class/classroom/apps-1-id-5cd9765

619bbcf000155479b/35/main.py",line8

print('')

^

IndentationError:expectedanindentedblock

icon

是不是会出现IndentationError: expected an indented block(缩进错误:期望一个缩进块)的报错?

icon

这是因为,当我们去掉缩进时,if条件和print命令成为了两个不同的代码组,属于平行关系。你看:if条件下面,缺少了可以执行的动作。我们想一下:无论条件成不成立,都不会执行什么操作,这个条件的存在没有任何意义。

单选题

现在,我们来做一道选择题,检验一下刚才学过的知识:下面几个关于if条件的表述中,哪个选项的说法是【错误】的?

A.

如果满足if条件,计算机就会准确执行if条件内部的命令。

B.

如果想用代码实现“打印”的操作,应该用if条件判断语句

C.

if stonenumber>=6:下面跟的内部命令需要向右缩进。

D.

if条件的含义是如果……就。

-----------------------------------------------------------------------------

吃不了夜宵的酱酱快要哭了,快把代码分享到社群里,告诉酱酱你有好好学习来安慰一下她吧!下面,请看老师的答案,并结合#后的注释同时“食用”:

1

2

3

4

5

6

7

8

9

10

11

12

#当宝石数量为0颗的时候,可以输出"需要惊奇队长逆转未来"stonenumber=0#为宝石数量赋值if stonenumber>=6:
    #条件:如果你拥有的宝石数量大于等于6个

    print('你拥有了毁灭宇宙的力量')
    #结果:显示'就拥有了毁灭宇宙的力量’的结果
    elif 0<stonenumber<=5:# 条件:如果想让宝石数量停留在5个以下,至少一个

    print('绯红女巫需要亲手毁掉幻视额头上的心灵宝石')
     #结果:显示'绯红女巫需要亲手毁掉幻视额头上的心灵宝石’的结果# 条件:当赋值不满足if和elif条件时,执行else下的命令,宝石数量为0个else:
    
    #结果:显示'需要惊奇队长逆转未来’的结果
    print('需要惊奇队长逆转未来')

13

14

15

# 要先为酱酱的体重赋值,酱酱的体重是101斤weight=101# 如果体重超过100斤的条件下,就……(条件后需加冒号)if weight>100:
  
  # 就打印结果:不吃了!(注意检查是否自动缩进)
  print('不吃了')
  # 如果体重没有超过100斤的条件,就……(else条件前无缩进,条件后需加冒号)else:

 # 就打印:放心吃吧(注意检查是否自动缩进)
  print('放心吃吧')


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多