第2-1课 逻辑运算符

  1. and 和、并且
  2. or 或者
  3. not 不、非

and

表示“并且”,两边结果都为 True时,结果为 Ture

分支结构 - 图1

程序代码:

  1. print( 3>2 and 10>9)

输出结果:

  1. 开始运行...
  2. True
  3. 运行结束。

课堂验算:

  1. print( 5<3 and 10>9)
  2. print( False and False)

执行结果: 分支结构 - 图2

or

表示“或者”,一边为 True时,结果为 True

分支结构 - 图3

程序代码:

  1. print( 3>2 or 10>9)

输出结果:

  1. 开始运行...
  2. True
  3. 运行结束。

课堂验算:

  1. print( 11>60 or 10<9 )
  2. print( False or False)

执行结果:

分支结构 - 图4

not

表示非,取反

分支结构 - 图5

程序代码:

  1. print( not 3 < 2)

输出结果:

  1. 开始运行...
  2. True
  3. 运行结束。

课堂验算:

  1. print( not 11 > 90 )
  2. print( not True )

分支结构 - 图6

Tips

and 和 or 的判断顺序

分支结构 - 图7

  1. print( 0 or 5 and 7 or 0)
  2. print( True or True and False )

分支结构 - 图8

求值过程是 先取到 or,取左值 0,木有短路,取右值,and表达式,再取左值 5,为真,再取右值 or表达式,取左值,7,为真,短路之,后面不管了,返回7,and表达式左右都是真,返回右值,or 表达式最后返回右值,就是七

短路逻辑规则如下:

表达式从左至右运算,若 or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出 or 左侧表达式 。

若 or 的左侧逻辑值为 False ,则输出or右侧的表达式,不论其后表达式是真是假,整个表达式结果即为其后表达式的结果

表达式从左至右运算,若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到 or 的左侧,参与接下来的逻辑运算。若 and 的左侧逻辑值为 True,则输出其后的表达式,不论其后表达式是真是假,整个表达式结果即为其后表达式的结果

若 or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。

注意:

1、在Python中and的优先级是大于or的,而且and和or都是会返回值的并且不转换为True和False。当not和and及or在一起运算时,优先级为是not>and>or

2、在Python中,None、任何数值类型中的0、空字符串“”、空元组()、空列表[]、空字典{}都被当作False,还有自定义类型,如果实现了  __ nonzero __ () 或 __ len __ ()方法且方法返回 0 或False,则其实例也被当作False,其他对象均为True。

第2.2课 if语句

分支结构 - 图9

语法格式

分支结构 - 图10

键盘上的Tab键 分支结构 - 图11

课堂验算:

如果输入芝麻开门,打开门

  1. a = input('请输入开门咒语:')
  2. if a == '芝麻开门':
  3. print('开门啦')

执行结果:

  1. 开始运行...
  2. 请输入开门咒语:芝麻开门
  3. 开门啦
  4. 运行结束。

如果输入数字大于120,提示需要买票哦!

  1. a = input('请输入你的身高:')
  2. if a > 120:
  3. print('需要买票哦!')

执行结果

  1. 开始运行...
  2. 请输入你的身高:123
  3. Traceback (most recent call last):
  4. File "/workspace/Python_exam_level/exam_level_2/exam_2.2_B.py", line 2, in <module>
  5. if a > 120:
  6. TypeError: '>' not supported between instances of 'str' and 'int'
  7. 运行结束。

执行结果报错:因为input获取的是字符串,而if条件比较的是数字类型

分支结构 - 图12

第2.3课 if … else … 语句

分支结构 - 图13

语法格式

分支结构 - 图14

课堂验算:

如果输入芝麻开门,开门,否则就再试试吧!

  1. a = input('请输入开门咒语:')
  2. if a == '芝麻开门':
  3. print('开门啦')
  4. else:
  5. print('再试试吧!')

执行结果:

  1. 开始运行...
  2. 请输入开门咒语:奥利给
  3. 再试试吧!
  4. 运行结束。

如果输入数字大于1000,提示赶紧上交父母,否则拿去挥霍吧!

分支结构 - 图15

第2.4课 if … elif … else …

跳远打折,吃火锅

分支结构 - 图16

语法格式

分支结构 - 图17

课堂验算:

分支结构 - 图18

如果消灭一个敌人,提示 First Blood
如果消灭两个敌人,提示 Double Kill
如果消灭三个敌人,提示 Trible Kill
如果消灭四个敌人,提示 Quadra Kill
如果消灭五个敌人,提示 Penta Kill

题目分析:

  • (1)使用int(input())输入数字
  • (2)通过多条件判断,判断对应的5种情况,并根据具体情况打印对应的结果
  1. s = int(input('请输入消灭的敌人数量:'))
  2. if s == 1:
  3. print('First Blood')
  4. elif s == 2:
  5. print('Double Kill')
  6. elif s == 3:
  7. print('Trible Kill')
  8. elif s == 4:
  9. print('Quadra Kill')
  10. elif s == 5:
  11. print('Penta Kill')
  12. else:
  13. print('输入有误请重新输入:')

想一想 分支结构 - 图19

第2.5课 条件判断语句练习

课堂练习:

分支结构 - 图20

分支结构 - 图21

分支结构 - 图22

第1题:B ,第2题:D , 第3题:C ,

课堂验算:

制作一个偶数判断器,判断输入的数字是否是偶数。

输入:3 输出:3不是偶数

输入:16 输出:16是偶数

  1. n = int(input()):
  2. if n % 2 == 0:
  3. print(str(n) + '是偶数')
  4. else:
  5. print(str(n) + '是奇数')

模拟计算器

模拟一个计算器,要求输入两个数和要计算的方式(+-*/中的一种)输出对应的计算结果

输入:请输入第一个数字:6
请输入计算方式:+请输入第二个数字:2输出:8

  1. n1 = int(input('请输入第一个数字:'))
  2. s = input('请输入计算方式:')
  3. n2 = int(input('请输入第二个数字:'))
  4. if s == '+':
  5. print(n1 + n2)
  6. if s == '-':
  7. print(n1 - n2)
  8. if s == '*':
  9. print(n1 * n2)
  10. if s == '/':
  11. # 如果n2 为0 要怎么处理?
  12. print(n1 / n2)
  13. else:
  14. print('符号输入有误,请重新输入!')