Python中单个变量(if语句)的多种可能性

2024-06-25 23:54:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编写一个程序,要求用户输入一种颜色,根据他们选择的颜色,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。 我刚刚开始编程,我真的不知道该如何处理这些代码才能正常工作。有什么建议吗?谢谢。在


Tags: or代码用户程序inputif颜色main
3条回答

代码的问题在于if语句应该如下所示:

if color1 == "Brown" or color1 == "brown":
    ...

这是因为“brown”是一个非空字符串,所以它返回True,这意味着你的if条件将始终为真。所以,它一直输入if语句,直到到达最后一个语句为止。在

下面是我们如何纠正这个错误:

^{pr2}$

让我们试着运行这个程序(手动逐行查看发生了什么)。如果color1 = "brown",那么我们将在5行输入if语句。然后我们转到6行。这意味着现在color1被定义为5。因此,color1永远不能是“Red”或“Red”。另外,如果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将color重置为1,因为第二个条件再次为真)。这就是为什么推荐elif或{},使我们的新程序:

if color1 == "brown" or color1 == "Brown":
    color = 5
elif color1 == "brown" or color1 == "Brown":
    color1 = 6
elif color1 == "brown" or color1 == "Brown":
    color1 = 3

您的问题是if语句是嵌套的,而它们不应该嵌套。只有当外部条件为真时,才能到达内部if

您也可以使用dict:

colors = {'brown': brown1, 'red': red1, 'orange': orange1}
color1 = colors[color1.lower()]

代码的问题是您将if放在其他if中。因此,如果第一个条件满足,那么只检查第二个条件,依此类推。而且您还使用了color1 == "Brown" or "brown",这将始终返回True,因为非空字符串的布尔值是True。你应该这样做:

def main():
    brown1 = 5
    red1 = 6
    orange1 = 3 
    color1 = input("Color on resistor? (separated by comma) : ")
    if color1 == "Brown" or color1 == "brown":
        color1 = brown1
    elif color1 == "Red" or color1 == "red":
        color1 = red1   
    elif color1 == "Orange" or color1 == "orange":
        color1 = orange1
    print(color1)
main()

更好的解决办法是使用字典。在

^{pr2}$

相关问题 更多 >