13. 逻辑之旅¶
13.1 目标¶
- 复习基本逻辑
- 实践逻辑表达式
- 学习真值表
13.2 简单的逻辑表达¶
正如我们所了解,逻辑表达要么”是( True )”,要么”否( False )”. True 和 False 就是它的值. 下面是生活中的实际例子,试着回答是( True )或否( False ):
- “我今年12岁.”
- “我父亲是教师.”
- “我的学校Karel课程的合作伙伴.”
下面是Karel中的例子:
- wall ... True 如果机器人前面是墙, 否则False.
- gem ... True 如果机器人正下方有宝石, 否则False.
- tray ... True 如果机器人正下方是托盘, 否则False.
- north ... True 如果机器人面朝北, 否则False.
- home ... True 如果机器人在家方块, 否则False.
- empty ... True 如果机器人的包是空的, 否则False.
13.3 复杂的逻辑表达¶
在编程和日常生活中,我们经常遇到更复杂的逻辑表达.
通常将两个或更多简单逻辑表达用”和(and)”,”或(or)”,”非(not)”组合在一起形成复杂的逻辑语句.
比如,语句”我星期日去滑雪,如果天气好并且Michael和我一起去.”,此句包含三个简单的逻辑表达,为明了我们将它分开:
A = “我星期日去滑雪.”
B = “天气好.”
C = “Michael和我一起去.”
这涉及B和C的逻辑与(and)运算,原始语句可以写为:
if B and C then A
编程中崇尚这种简洁的表达,这可以使代码更短. 我们可以预测未来,知道周末天气很好而且Michael会一起去. 于是将上述语句翻译为如下代码,并打印出A的值:
# Let’s say that weather will be good
# and Michael will join you:
B = True
C = True
# This is how you decide:
if B and C
A = True
else
A =False
# Print the result:
if A
print "I will go ski on Sunday."
else
print "I will not go ski on Sunday."
输出:
I will go ski on Sunday.
13.4 真值表¶
真值表给出不同逻辑语句的运算结果. 逻辑与(and)的真值表为:
A B A and B False False False True False False False True False True True True
逻辑或(or)的真值表为:
A B A or B False False False True False True False True True True True True
逻辑否(not)的真值表为:
A not A True False False True
最后,语句”if A then B”的真值表为:
A B if A then B False False True False True True True False False True True True
有人会对最后一个真值表感到奇怪.他们问:为什么当A为非时,表达式”if A then B”是真的? 但事实如此. 考虑一个例子:”如果地球是平的,那么月球也是平的.”这个表达是真的,这句话本身没有什么错误.因为地球不是平的,所以基于”地球是平的”作出的任何推断就没有什么关系了.