コードの問題は、if
ステートメントが次のようになることです。
if color1 == "Brown" or color1 == "brown":
...
これは、「brown」が空でない文字列であるためです。これは、条件が常に trueTrue
であることを意味します。if
そのため、最後のステートメントに到達するまで if ステートメントを入力し続けます。
この特定の間違いを修正する方法は次のとおりです。
1. brown1 = 5
2. red1 = 6
3. orange1 = 3
4. color1 = input("Color on resistor? (separated by comma) : ")
5. if color1 == "Brown" or color1 == "brown":
6. color1 = brown1
7. if color1 == "Red" or color1 == "red":
8. color1 = red1
9. if color1 == "Orange" or color1 == "orange":
10. color1 = orange1
11. print(color1)
このプログラムをドライランしてみましょう (手動で 1 行ずつ行って、何が起こっているかを確認してください)。その場合は、行にステートメントをcolor1 = "brown"
入力します。次に行に行きます。この意味は現在 5 と定義されています。したがって、「赤」または「赤」になることはありません。さらに、「茶色」または「茶色」でない場合は、同じインデントまたはで次の行に移動します。つまり、赤とオレンジをチェックしません。if
5
6
color1
color1
color1
11
あなたが達成したいことは、次のように行うことができます:
if color1 == "brown" or color1 == "Brown":
color = 5
if color1 == "brown" or color1 == "Brown":
color1 = 6
if color1 == "brown" or color1 == "Brown":
color1 = 3
ここで問題になるのは、行 2 または行 4 で color1 の値を変更すると、残りの条件をもう一度確認したくなくても true になる可能性があることです (たとえばif color==1: color=2; if color==2: color=1
、2 番目の条件がもう一度 true になります)。elif
これが、またはelse if
が推奨される理由であり、新しいプログラムを作成します。
if color1 == "brown" or color1 == "Brown":
color = 5
elif color1 == "brown" or color1 == "Brown":
color1 = 6
elif color1 == "brown" or color1 == "Brown":
color1 = 3