您的代码的问题是if
语句应该是这样的:
if color1 == "Brown" or color1 == "brown":
...
这是因为 "brown" 是一个非空字符串,所以它返回True
,这意味着您的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)
让我们尝试空运行这个程序(手动逐行查看发生了什么)。if color1 = "brown"
then 我们将if
在 line 处输入语句5
。那我们就去排队6
。这意味着color1
现在定义为 5。因此,color1
永远不可能是“红色”或“红色”。此外,如果color1
不是 "brown" 或 "Brown",那么它将转到具有相同缩进的下一行,或者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 的值,即使您不想再次检查它们,其余条件也可能为真(例如:if color==1: color=2; if color==2: color=1
将颜色重置为 1,因为第二条件再次为真)。这就是为什么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