我试图编写一个程序,要求用户输入一种颜色,根据他们选择的颜色,python将其转换为数字并打印该数字。在
我的代码是:
def main():
brown1 = 5
red1 = 6
orange1 = 3
color1 = input("Color on resistor? (separated by comma) : ")
if color1 == "Brown" or "brown":
color1 = brown1
if color1 == "Red" or "red":
color1 = red1
if color1 == "Orange" or "orange":
color1 = orange1
print(color1)
main()
问题是Python只返回最后一种颜色,即3。 我刚刚开始编程,我真的不知道该如何处理这些代码才能正常工作。有什么建议吗?谢谢。在
代码的问题在于
if
语句应该如下所示:这是因为“brown”是一个非空字符串,所以它返回
True
,这意味着你的if
条件将始终为真。所以,它一直输入if语句,直到到达最后一个语句为止。在下面是我们如何纠正这个错误:
^{pr2}$让我们试着运行这个程序(手动逐行查看发生了什么)。如果
color1 = "brown"
,那么我们将在5
行输入if
语句。然后我们转到6
行。这意味着现在color1
被定义为5。因此,color1
永远不能是“Red”或“Red”。另外,如果color1
不是“brown”或“brown”,那么它将转到具有相同缩进的下一行,或者11
,这意味着它永远不会检查红色和橙色。在你想完成的事情可以这样做:
现在,这里的一个问题是,如果我们更改第2行或第4行中color1的值,那么剩余的条件可能是真的,即使您不想再次检查它们(例如:},使我们的新程序:
if color==1: color=2; if color==2: color=1
将color重置为1,因为第二个条件再次为真)。这就是为什么推荐elif
或{您的问题是
if
语句是嵌套的,而它们不应该嵌套。只有当外部条件为真时,才能到达内部if
您也可以使用dict:
代码的问题是您将
if
放在其他if
中。因此,如果第一个条件满足,那么只检查第二个条件,依此类推。而且您还使用了color1 == "Brown" or "brown"
,这将始终返回True
,因为非空字符串的布尔值是True
。你应该这样做:更好的解决办法是使用字典。在
^{pr2}$相关问题 更多 >
编程相关推荐