流程控制语句、布尔值、布尔值操做符都属于 python
的基础功。大好周末我写这篇笔记,不是为了整理这些基础知识点,而是记录几个令我忽然迷惑的代码段。——代码自己很简单,但即使已经掌握了基础功,陡然看到其中某个代码段,编程初学者仍是容易困惑!python
你,要不要随我一块儿读彻底文,检查下本身是否紧紧掌握了 python
的流程控制语句?如今开始吧。编程
运行下面代码段,将打印什么呢?学习
代码段 A测试
if 1 + 2 == 3 :
print('1')
else:
print('2')
复制代码
代码段 Bspa
if 1 + 3 == 3 :
print('1')
else:
print('2')
复制代码
上述 python
代码简单,且写法都很常见。A
的结果是 1
,B
的结果是 2
。你答对了吧?code
接下来见证奇迹的时刻……再抽象一下,把上述语句中的布尔值的算式改为布尔值。下面两段运行代码后,将打印什么呢?string
代码段 Cclass
if True:
print('1')
else:
print('2')
复制代码
代码段 D基础
if False:
print('1')
else:
print('2')
复制代码
你是坚决果断、脱口而出的说出正确答案的吗?C
的结果是 1
,D
的结果是2
。此次你依然都答对了吗?循环
个人真实状况是,前两天作xue.cn的答题挑战时,看到代码段 D
这种代码,忽然思惟打结。你会不会也遇到过明明早就掌握,但忽然对某个知识点又理解无能的返祖状况?
我知道这是常见现象,因此没有焦虑感。我苦思冥想,尝试用理解而非死记硬背来完全掌握这个知识点。
我是这样理解的。代码段 D
首个分支是 False
,其它分支被放到 else
,其它分支至关于首个分支的补集,即 not False
也就是 True
,因而代码段 D
等同于:
代码段 E
if False:
print('1')
elif True:
print('2')
复制代码
如法炮制,代码段 C
等同于:
代码段 F
if True:
print('1')
elif False:
print('2')
复制代码
从中可发现: if
分支控制语句,只会触发 条件为 True
的那个分支,条件为 False
的语句不会触发。
原本,这篇笔记整理到这里彷佛也能收尾。但我当即联想到:流程控制语句,除了 if
这个分支控制,还有 while
和 for
两个循环控制,在循环控制语句中,会有怎样的规律呢?
打铁要趁热,不能停,咱们继续检查本身的基础功是否牢靠,而后梳理一下吧!——认知心理学有个结论是,知识点之间的联想对照,具有很是好的学习效果。
代码段 G:
while False:
print('1')
break # 测试代码,加这句是为了用于跳出循环,避免无限循环
else:
print('2')
复制代码
代码段 H:
while True:
print('1')
break # 测试代码,加这句是为了用于跳出循环,避免无限循环
else:
print('2')
复制代码
代码段 I:
a = 1
while a < 4:
print(a)
a = a + 1
else:
print('haha')
复制代码
代码段 G
的结果为 2
,代码段 H
的结果为 1
。代码段 I
的结果为 1 2 3 haha
。
如今再看看 for
循环。
代码段 J:
for True:
print(‘1’)
else:
print('2')
复制代码
代码段 K:
for i in range(4):
print(i)
else:
print('aha')
复制代码
代码段 J
将报错,提示语法错误。代码段 K
结果为 0 1 2 3 aha
结合以前用《自学是门手艺》学 python 基础功的印象,——若是印象很淡,说明本身的复习间隔过久,最好能调整下使之符合记忆曲线;整理时,最好当即翻到书中对应章节复习;再结合前面自测代码,有多种代码实现,如今我能够试着总结:
for
和 while
循环控制语句中,else
并不是必备部分。while
的循环体,仅在条件为 True
时触发,条件一直为 True
就一直执行;条件为 False
或条件变成 False
时该部分才执行完毕。for
的循环体,条件部分一般用于控制循环的次数或范围,并不能使用布尔值。else
部分,该 else
属于 while
整个循环控制的一部分。一般,else
是当循环部分执行完毕后才触发。例外状况是,若是循环部分包含 break
语句并被触发,将跳出整个循环控制,即不执行 else
部分的代码。对我我的而言,for
和 while
循环控制语句,自测与复习都很轻松,暂时没有发现什么疑虑。最初令我迷惑的分支控制语句: if False
的条件为False
,不为真,故该分支将不被执行。——若是流程控制语句中包含布尔运算,那么仅在条件为真时才触发对应语句块。
你和我一块儿读到这里,是否检测到本身哪些地方存有困惑?若有,不妨参考个人作法,试试代码的不一样写法,当即运行它,发现和总结规律吧!最后刘阿姨再叮嘱两句:多理解,少死记硬背,遵循记忆曲线,及时复习,用概括整理的方式巩固加深影响哟~