elif 表示除了该分支以外还存在其他可能性,
Else 表示 前面的几种可能性以外的其他所有可能性都归结为我这种
针对你的代码 这两种方法都可以实现并且结果一样
但在实现效率上有所不同,if会一直遍历所有的if不管你有没有便历到,都会继续执行完所有的if。而elif比较快捷,便历到你的条件就不再执行其他判断分支。
你举的例子比较简单,在复杂一点的代码判断中会体现更明显,你可以后续试试,这个主要的目的是节省执行时间。
【不知道这样解释是否看明白,有问题可以再沟通~望采纳~】
比如一个字符串abc,我有这么个需求:
如果这个字符串中含有a,就要输出一个1。如果这个字符串含有b,就要输出一个2
那么这时候肯定是用两个if,因为都要判断,且都要执行
如果需求变成:
如果这个字符串中含有a,输出一个1,如果不含有,输出一个2
那么就用一个if和一个else即可,因为两个条件互斥,我只要执行其中一个即可
多个if的话,每个if都要进入判断是否成立,如果每个都成立,那么每个的逻辑都要执行。
而if elif if则是判断后,只选择其中一个逻辑执行
if分为三种:单向判断(if)、双向判断(if...else...)和多向判断(if...elif...eles...)
if、elif和else三者所代表的条件是互斥的,你用多个if条件可以随便写,只要能满足业务需求,怎么写都行的
elif其实等价为在else里嵌套一个if
不过如果这样写的话,分支非常多时会嵌套很多层,看起来太不方便了
而如果没有else,逻辑就会非常难写
比如我前面有10个条件分别进10个分支,那么如果不满足前面任何10个条件之一的,进最后的分支
你如果想用一个if条件来表达不是前面10个分支里的任何一个,要罗里吧嗦写一大堆,而一个else就表示了,不香吗
-=-=-=
并不是所有分支条件都是a>10,a>20这种的
举个例子
我有一个变量a,我想判断如果它等于a1,则输出一个字符串,如果等于a2,输出另一个字符串,这种值可能有10个
我当然可以先把所有值放一个list里然后循环,但是如果值的个数很少的话,比如只有3个,放list反而不方便,不如直接写if
那你要判断a既不是a1也不是a2又不是a3,和写个else相比哪个方便呢
类似于switch ,elif 可以设定多种不同的条件,而else 则是概括所有你 if 和 elif 未包含的条件