if else elif语句的思考
n=0 while n<10: if n<5: print(n) n=n+1 if n>5: print(n) n=n+1 if n==5:
n=n+1
#上面这段代码输出:0 1 2 3 4 6 7 8 9
n=0 while n<10: if n<5: print(n) n=n+1 if n>5: print(n) n=n+1 else: print(n) n=n+1
#上面这段代码输出:0 1 2 3 4 5 6 7 8 9
n=0 while n<10: if n<5: print(n) n=n+1 if n>5: print(n) n=n+1 else: n=n+1
n=0
while n<10:
if n<5:
print(n)
n=n+1
elif n>5:
print(n)
n=n+1
else:
n=n+1
输出 0 1 2 3 4 6 7 8 9
#上面这段代码输出:0 2 4 6 7 8 9 相当于:
n=0
while n<10:
if n<5:
print(n)
n=n+1
n=n+1 #着重
if n==5:
n=n+1
if n>5:
print(n)
n=n+1
#输出:0 2 4 6 7 8 9 n=0
#可以分解为:
n=0
while n<10: if n<5: print(n) n=n+1
if n>5:
print(n) n=n+1
if n<5:
n=n+1
if n==5:
n=n+1
#输出:0 2 4 6 7 8 9
#这样写才好些:
n=0
while n<10: if n<5: print(n) n=n+1
if n>5:
print(n) n=n+1
elif n<5:
n=n+1
elif n==5:
n=n+1
#结论:elif的含义是逐层否定上面的所有条件,加上新条件 elif是否执行取决于对应的是哪个if 如果有两个if中间同层级有elif,则只执行两个if 两个elif的条件相同的话只能执行一个,就是第一个。 while循环(只针对while循环,for循环中等级层级相同从上往下执行)else只对应它的上一个if (其实这个结论错误)<<后来又经过例证想想这个结论是正确的,else语句的条件经过分解成if条件或多条件,如果和前后的if语句冲突(就是条件有重合)的话优先if语句的。else分解的很多条件最好写成elif。虽然看起来是并列同级别,应该从上往下执行, 其实if的优先级是高于else和elif的。这个时候就算if在下面,还是应该先执行if。if和if同优先级是从上往下执行>>
例如:
n=0
while n<10:
if n<5:
print(n)
n=n+1
if n==5:
print(n)
n=n+1
if n>5:
print(n)
n=n+1
if n==5:
n=n+1
此时输出:0 1 2 3 4 5 6 7 8 9
但是:
n=0
while n<10:
if n<5:
print(n)
n=n+1
elif n==5:
print(n)
n=n+1
elif n>5:
print(n)
n=n+1
if n==5:
n=n+1
输出的是:0 1 2 3 4 6 7 8 9 证明了上面所说
n=0 while n<10: if n<5: print(n) n=n+1 elif n>5: print(n) n=n+1 else:
n=n+1
#上面这段代码输出:0 1 2 3 4 6 7 8 9
#此时else对应上面的if和elif
n=0 while n<10: if n<5: print(n) n=n+1 else: print(n) n=n+1 if n==5: n=n+1
此时输出:0 1 2 3 4 6 7 8 9
此段代码如果分解成:
n=0
while n<10:
if n<5:
print(n)
n=n+1
if n==5:
print(n)
n=n+1
if n>5:
print(n)
n=n+1
if n==5:
n=n+1
此时输出:0 1 2 3 4 5 6 7 8 9 很明显分解的有问题
如果分解成:
n=0
while n<10:
if n<5:
print(n)
n=n+1
elif n==5:
print(n)
n=n+1
elif n>5:
print(n)
n=n+1
if n==5:
n=n+1
此时输出:0 1 2 3 4 6 7 8 9 这时就分解正确了(else分解正确,就是分解成elif语句)
#else下面可以再写if语句,但是不能再写elif语句,否则报错(语法错误)
浙公网安备 33010602011771号