如果vs elif,实际应用

时间:2013-09-07 20:12:45

标签: python if-statement

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

变量1级和2级代表两门课程的成绩。变量num_passed当前是指0.选择使num_passed引用的代码片段引用传递的课程数(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

2 个答案:

答案 0 :(得分:1)

如果和elif是相互排斥的条款:任何一个发射,或者另一个发射,或者两者都不发生 - 从不两者兼而有之。 因此,在(1)中,两者都会触发,这很好,因为您添加到num_passed,而不是将其设置为特定值。 (2)没有做你想要的,因为根据定义,如果一个条款触发,那么另一个条款不会。 (3)没有做你想要的,因为每个子句都被评估,最后一个被激发胜利。例如,如果两个等级都通过,则将num_passed设置为2,然后将其设置为1,然后再将其设置为1。 (4)有效,因为它避免了三个陷阱 - 只有一个(或没有)的条款会被解雇。

答案 1 :(得分:0)

这应该是基本逻辑。 grade1和grade2是独立变量,两者之一或两者都不能超过50。