“ if -if -else”和“ if-elif-else”有什么区别

时间:2019-03-01 03:05:44

标签: python if-statement

HackerRank: Grading Students

当我键入此代码时:

def gradingStudents(grades):
    ls = []
    for grade in grades:
        if grade <38:
            new_grade = grade
        else:
            n = grade //10
            t = grade % 10 
            if t <5 and (5-t)<3:
                new_grade = n * 10 + 5

            if t > 5 and (t - 5) >2:
                new_grade = (n+1) * 10
            else:
                new_grade =grade
        ls.append(new_grade)   
    return ls

答案错误。但是当我将第二个if语句更改为elif时,这是正确的。我对发生的事情不太清楚:

 def gradingStudents(grades):
    ls = []
    for grade in grades:
        if grade <38:
            new_grade = grade
        else:
            n = grade //10
            t = grade % 10 
            if t <5 and (5-t)<3:
                new_grade = n * 10 + 5

            # I use "elif" replace "if"
            elif t > 5 and (t - 5) >2:
                new_grade = (n+1) * 10
            else:
                new_grade =grade
        ls.append(new_grade)   
    return ls

4 个答案:

答案 0 :(得分:2)

考虑区别:

urllib.parse

if True:
    print('a')
if True:
    print('b')
else:
    print('c')

第一个代码块将输出:

if True:
    print('a')
elif True:
    print('b')
else:
    print('c')

第二个将输出:

a
b

a 块是一个有条件的。 Python将依次尝试每个if-elif-else,直到找到要执行的分支为止。

if/elif是两个块:if-if-elseif。它们彼此不依赖,并且两个块都可以执行。


在您的特定情况下,我相信它会采用以下方式:

if-else

答案 1 :(得分:0)

第一种形式if-if-if测试所有条件,而第二种形式if-elif-else仅测试所需的条件:如果找到一个为True的条件,它将停止并且不评估其余条件。换句话说:当条件互斥时使用if-elif-else

以下代码可以帮助您理解:

a = 1
if a == 1:  # Will check this condn
   print ("Correct")
if a == 1:  # Will check this condn
   print ("Correct")
else:      
   print ("No")

if a == 1:  # Will check only this condn
   print ("If-Correct")
elif a == 1:
   print ("Elif")
else:
   print ("Else")

输出:

Correct
Correct
If-Correct

希望这能回答您的问题!

答案 2 :(得分:0)

if-if-if检查所有条件并返回所有TRUE结果...而IF-elif-else是一种条件状态,将针对一个tRUE条件执行。.

答案 3 :(得分:0)

如果您有一系列if语句。该程序将检查每个语句是否正确。

if x == z:
#checks if this statement is true
if x == y:
#also checks if this statement is true
if x == m:
#also checks if this statement is true

但是对于elif语句,仅在上述语句为false时才进行检查。

例如:

if x == y:

elif x == m: #this statement will only be checked if the above statement is false

elif x == b #this statement will only be checked if both statements above are false

else: #this will go into effect if all statements above are false.