-1

選択肢 1 と 4 が正しく、選択肢 2 と 3 が正しくないのはなぜですか?

変数 grade1 と grade2 は、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
4

2 に答える 2

1

if と elif は相互に排他的な句です。一方が発火するか、もう一方が発火するか、またはどちらも発火しないかのいずれかであり、両方が発生することはありません。したがって、(1) では両方が起動しますが、特定の値に設定するのではなく、num_passed に追加しているので問題ありません。(2) は、定義上、1 つの句が起動すると、もう 1 つの句が起動しないため、目的の処理を実行しません。(3) は、各句が評価され、最後に発火したものが勝つため、あなたが望むことをしません。たとえば、両方の成績が合格の場合、num_passed を 2 に設定し、次に 1 に設定してから、もう一度 1 に設定します。(4) は、3 つのトラップを回避するため機能します。ちょうど 1 つの (またはまったく) 句が起動しません。

于 2013-09-07T20:21:59.687 に答える
0

これは初歩的な論理でなければなりません。grade1 と grade2 は独立変数であり、両方またはどちらも 50 を超えることはできません。

于 2013-09-07T20:17:32.303 に答える