【问题标题】:Alternatives to multiple elif statements when taking user input获取用户输入时多个 elif 语句的替代方法
【发布时间】:2023-02-07 17:12:22
【问题描述】:

我用 python 编写了一段代码来猜测头发的颜色,但它使用了多个 elif 语句。任何人都可以为我建议和编写替代代码吗? 该代码实际上运行良好,但我的老师说您应该使用其他代码而不是多个 elif,因为它看起来很糟糕。 我尝试使用 def 函数,但没有成功。 这是原始代码。

print('hair color')
print('colors: black,brown,red,blonde,orange' )
user_input1=input('enter hair color 1:')
user_input2=input('enter hair color 2')
if  user_input1=='orange' and user_input2=='orange':
    print('orange hair')
elif user_input1=='red' and user_input2=='brown':
    print('deep golden brown hair')
elif user_input1=='brown' and user_input2=='black':
    print('dark brown hair')
elif user_input1=='brown' and user_input2=='brown':
    print('brown hair')
elif user_input1=='brown' and user_input2=='blonde':
    print('golden brown hair')
elif user_input1=='black' and user_input2=='red':
    print('dark red hair')
elif user_input1=='blonde' and user_input2=='black':
    print('brown hair')
elif user_input1=='blonde' and user_input2=='blonde':
    print('blonde hair')
elif user_input1=='black' and user_input2=='black':
    print('black hair')
elif user_input1=='black' and user_input2=='orange':
    print('brown hair')
elif user_input1=='brown' and user_input2=='orange':
    print('copper blonde hair')
elif user_input1=='red' and user_input2=='blonde':
    print('strawberry blonde hair')
elif user_input1=='red'  and user_input2=='orange':
    print('ginger beer hair')
elif user_input1=='blonde' and user_input2=='orange':
    print('light orange hair')
elif user_input1=='red' and user_input2=='red':
    print('red hair')
else:
    print('ERROR 404 HAIR COLOR NOT FOUND!')

【问题讨论】:

    标签: python if-statement user-input


    【解决方案1】:

    是的,您可以通过映射到 python 中的字典来减少多个 if else 条件。

    为此,您的新解决方案将是:

    colors = {
        ('orange', 'orange'): 'orange hair',
        ('red', 'brown'): 'deep golden brown hair',
        ('brown', 'black'): 'dark brown hair',
        ('brown', 'brown'): 'brown hair',
        ('brown', 'blonde'): 'golden brown hair',
        ('black', 'red'): 'dark red hair',
        ('blonde', 'black'): 'brown hair',
        ('blonde', 'blonde'): 'blonde hair',
        ('black', 'black'): 'black hair',
        ('black', 'orange'): 'brown hair',
        ('brown', 'orange'): 'copper blonde hair',
        ('red', 'blonde'): 'strawberry blonde hair',
        ('red', 'orange'): 'ginger beer hair',
        ('blonde', 'orange'): 'light orange hair',
        ('red', 'red'): 'red hair',
    }
    
    print('hair color')
    print('colors: black,brown,red,blonde,orange' )
    user_input1 = input('enter hair color 1:')
    user_input2 = input('enter hair color 2:')
    
    result = colors.get((user_input1, user_input2))
    
    if result:
        print(result)
    else:
        print('ERROR 404 HAIR COLOR NOT FOUND!')
    

    样本结果:

    hair color
    colors: black,brown,red,blonde,orange
    enter hair color 1:red
    enter hair color 2:orange
    ginger beer hair
    

    【讨论】:

      【解决方案2】:

      我建议您使用在 Python 中称为结构模式匹配的“开关”,请参阅the documentation

      match (user_input1, user_input2):
          case ('orange', 'orange'):
              print('orange hair')
          case ('red', 'brown'):
              print('deep golden brown hair')
          case ('brown', 'black'):
              print('dark brown hair')
          case _:
              print('ERROR 404 HAIR COLOR NOT FOUND!')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-26
        • 1970-01-01
        • 1970-01-01
        • 2012-10-10
        • 1970-01-01
        • 2018-09-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多