Closed liujuanjuan1984 closed 4 years ago
前两天在 xue.cn 体验答题挑战,我有道题做错了,却不明白错在哪里。题目大概如下,代码运行后将打印什么?
if True or False and False: print('1') else: print('2')
这个题目考察两个简单的知识点,一个是布尔运算,另一个是流程控制语句。结果是 1,我则选了2。
复盘我的解题思路。先是布尔运算部分,我把 True or False and False 的结果算成 False,于是代码简化为:
True or False and False
False
if False: print('1') else: print('2')
我短暂发懵,后来回过神来,整理了一篇笔记《和35岁刘阿姨一起自测 Python 流程控制基本功》用于巩固基础功。
流程控制之if 分支控制语句,仅会执行条件为真的那个分支,所以上述代码段的结果为 2。然后这才发现,我错在布尔运算部分。在 xue.cn 网页上直接输入并运行True or False and False ,显示结果为 True。
True
但我心算答案是 False。 我是如何心算的呢?
True or False
True and False
布尔值仅有 True 和 False 两个,布尔值操作符也仅有 与and, 或or, 非not 三个。我本来以为自己全部掌握,怎么还做错,而且还不知道错在哪儿?
与and
或or
非not
最简单的运算,自测一下,我均已掌握,并无错漏。
太奇怪了,错在哪儿?想不明白,那就打开《自学是门手艺》的“入口”和“值及相应的运算” 两个章节,重复读布尔运算操作符部分,才发现关键是:
优先级最低的是或 or,然后是与 and, 优先级最高的是非 not
而上述心算时,我把 and 、 or 视为同等优先级,并从左往右顺序计算。——务必留意:这个认识是错误的!这俩优先级不同!
and
or
True or False and False 的计算顺序,应该是:
not
False and False
再找个题目True and False or not True 自测一下:
True and False or not True
not True
True and False or False
False or False
现在想想真的很奇怪,当初我是如何想当然地把 and 和 or 视为同等优先级呢!——幸好还有机会能通过刷题发现自己的知识点错漏!
前两天在 xue.cn 体验答题挑战,我有道题做错了,却不明白错在哪里。题目大概如下,代码运行后将打印什么?
这个题目考察两个简单的知识点,一个是布尔运算,另一个是流程控制语句。结果是 1,我则选了2。
复盘我的解题思路。先是布尔运算部分,我把
True or False and False
的结果算成False
,于是代码简化为:我短暂发懵,后来回过神来,整理了一篇笔记《和35岁刘阿姨一起自测 Python 流程控制基本功》用于巩固基础功。
流程控制之if 分支控制语句,仅会执行条件为真的那个分支,所以上述代码段的结果为 2。然后这才发现,我错在布尔运算部分。在 xue.cn 网页上直接输入并运行
True or False and False
,显示结果为True
。但我心算答案是
False
。 我是如何心算的呢?True or False
等于True
True and False
等于False
布尔值仅有
True
和False
两个,布尔值操作符也仅有与and
,或or
,非not
三个。我本来以为自己全部掌握,怎么还做错,而且还不知道错在哪儿?最简单的运算,自测一下,我均已掌握,并无错漏。
太奇怪了,错在哪儿?想不明白,那就打开《自学是门手艺》的“入口”和“值及相应的运算” 两个章节,重复读布尔运算操作符部分,才发现关键是:
而上述心算时,我把
and
、or
视为同等优先级,并从左往右顺序计算。——务必留意:这个认识是错误的!这俩优先级不同!True or False and False
的计算顺序,应该是:not
,那就先算and
False and False
等于False
,现在语句是True or False
True or False
等于True
再找个题目
True and False or not True
自测一下:not
,not True
等于False
,现在语句是True and False or False
and
,True and False
等于False
,现在语句是False or False
or
,False or False
结果是False
现在想想真的很奇怪,当初我是如何想当然地把
and
和or
视为同等优先级呢!——幸好还有机会能通过刷题发现自己的知识点错漏!