当我键入此代码时:
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
答案 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-else
和if
。它们彼此不依赖,并且两个块都可以执行。
在您的特定情况下,我相信它会采用以下方式:
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.