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语句,否则报错(语法错误)

posted @ 2018-10-22 22:24  吃肉的小鹿  阅读(635)  评论(0)    收藏  举报