说起判断,那一定是开发语言必须有的,如果…那么…,和一款 IFTTT软件是一个思路。对于自动化任务,比如自动抓取网页关键词,自动下载小电影等,就是因为它可以执行条件判断。

if 单向判断

  1. #单项判断 if...
  2. if 8>6:
  3. print('true')

需要注意的两个地方是所有的判断后面必须跟冒号,另外判断的内容首行缩进(四个空格或一个Tab)。冒号和缩进的作用是让python区分代码之间的层次,理解条件执行的顺序。

然后我们来个小的升级,把原来的判断加上前提赋值。

  1. num = 8
  2. if num>=9:
  3. print('true')

运行之后,你会发现什么都没有发生。这是因为if的条件没有满足,所以跳过是第2行和第3行的判断。满足条件就继续运行(首行缩进代码),不满足就跳过判断。

if…else… 双向判断

  1. #双向判断:if…else…
  2. if 8>6:
  3. print('true')
  4. else:
  5. print('flase')

双向判断中,if和else是平级的,所以else前面不需要缩进。平级的时候,他们两个的条件是互斥的,比如 if 8>6,那么else的隐藏判断条件就是8<6,因为else后面不能跟判断条件,所以else想要执行,必须跟着和他平级命令的if来设置。平级命令可以是if,也可以是for循环。

if…elif…else… 多向判断

比如我们要给学生的成绩进行打分,60以下不及格,60-80一般,80以上优秀该如何做呢?

  1. Grade = 68
  2. if Grade > 80:
  3. print('优秀')
  4. elif 60 <= Grade <= 80:
  5. print('一般')
  6. else:
  7. print('不及格')

并且,elif需要一个平级命令的if(else也一样),但是可不需要后面的else,俗称要脸不要屁股!

注意:if和elif是不同的,if会遍历所有的条件,而elif是条件满足就停止了。else后面不能加判断条件,它的条件是前面所有条件的互斥条件。

并且使用elif时候,逻辑必须清晰,

if 嵌套

有点像剥洋葱,先确定外面的条件,然后在确定里面的。我们拿上面的打分做例子,60分作为分割线

  1. Grade=36
  2. if Grade>=60:
  3. print('还不错哦~')
  4. if Grade>=80:
  5. print('你很优秀')
  6. else:
  7. print('你只是一般般')
  8. else:
  9. print('都没及格啊!')
  10. if Grade>30:
  11. print('你还有救')
  12. else:
  13. print('辍学吧')

注意:使用缩进判断条件和命令的等级。比如3-7行都是在第2行后面缩进的,意味着他们都属于 a>=60这个条件下的判断。第4行就是>=60和>=80,第6行虽然没有加,但是条件里面是互斥关系,所以它代表是>=60和<=80。

再写多层嵌套的时候,可以采取剥洋葱的方法,先确定外面的框架,然后在判断内部细节。

我们拓展一下,给评分加一个输入框来自定义分数,运行。

  1. Grade = input('你考了多少分呢?')
  2. if Grade >= 60:
  3. print('还不错哦~')
  4. if Grade >= 80:
  5. print('你很优秀')
  6. else:
  7. print('你只是一般般')
  8. else:
  9. print('都没及格啊!')
  10. if Grade > 30:
  11. print('你还有救')
  12. else:
  13. print('辍学吧')

你会发现,这样写会报错,因为python会把所有input()函数输入框的内容默认定义为字符串,字符串和数字之间是无法判断的,报错代码:TypeError: ‘>=’ not supported between instances of ‘str’ and ‘int’

我们可以把判断的文字都改为字符串:

  1. Grade = input('请输入一个数字:')
  2. if Grade >= '60':
  3. print('还不错哦~')
  4. if Grade >= '80':
  5. print('你很优秀')
  6. else:
  7. print('你只是一般般')
  8. else:
  9. print('都没及格啊!')
  10. if Grade > '30':
  11. print('你还有救')
  12. else:
  13. print('辍学吧')

你会发现,这样好麻烦啊,如果后面判断条件很多,都要给它们加引号,所以我们换个方式,把输入的文本提前转换为整数。

  1. Grade = int(input('请输入一个数字:'))
  2. if Grade >= 60:
  3. print('还不错哦~')
  4. if Grade >= 80:
  5. print('你很优秀')
  6. else:
  7. print('你只是一般般')
  8. else:
  9. print('都没及格啊!')
  10. if Grade > 30:
  11. print('你还有救')
  12. else:
  13. print('辍学吧')