Python If与elif及其实际应用

Python If与elif及其实际应用,python,if-statement,Python,If Statement,为什么选项1和4正确,而选项2和3不正确 变量grade1和grade2代表两门课程的成绩。当前传递的变量num_引用0。选择使num_通过的代码片段指通过的课程数(50或更高) 这应该是基本逻辑。等级1和等级2是自变量,两者都可以超过50。if和elif是互斥的子句:要么一个激发,要么另一个激发,要么两个都不激发-永远不要两者都激发。 在(1)中,两者都会激发,这很好,因为您正在添加num_passed,而不是将其设置为特定值。 (2) 不做你想做的事,因为根据定义,如果一个子句触发,那么另一

为什么选项1和4正确,而选项2和3不正确

变量grade1和grade2代表两门课程的成绩。当前传递的变量num_引用0。选择使num_通过的代码片段指通过的课程数(50或更高)


这应该是基本逻辑。等级1和等级2是自变量,两者都可以超过50。

if和elif是互斥的子句:要么一个激发,要么另一个激发,要么两个都不激发-永远不要两者都激发。 在(1)中,两者都会激发,这很好,因为您正在添加num_passed,而不是将其设置为特定值。 (2) 不做你想做的事,因为根据定义,如果一个子句触发,那么另一个就不会。 (3) 不会执行您想要的操作,因为每个子句都会被求值,最后一个激发的子句将获胜。例如,如果两个成绩都合格,则将num_passed设置为2,然后将其设置为1,然后再次将其设置为1。 (4) 之所以有效,是因为它避免了三重陷阱——只有一个(或没有一个)子句会触发。

提示:“elif”是什么意思?如果两个等级均高于50,则执行这些选项的哪一行?
Option 1
if grade1 >= 50:
 num_passed = num_passed + 1
if grade2 >= 50:
 num_passed = num_passed + 1

Option 2
if grade1 >= 50:
 num_passed = num_passed + 1
elif grade2 >= 50:
 num_passed = num_passed + 1

Option 3 
if grade1 >= 50 and grade2 >= 50:
 num_passed = 2
if grade1 >= 50:
 num_passed = 1
if grade2 >= 50:
num_passed = 1

Option 4 
if grade1 >= 50 and grade2 >= 50:
 num_passed = 2
elif grade1 >= 50:
 num_passed = 1
elif grade2 >= 50:
 num_passed = 1