【问题标题】:Can you use a variable in switch-case in python?你可以在 python 的 switch-case 中使用变量吗?
【发布时间】:2019-11-09 12:00:26
【问题描述】:

我可以在 python 3 上使用这种方法进行编码吗?

def switch_demo(argument):

    switcher = {
        51>switcher>13: "January",
        2: "February",
        3: "March",
        4: "April",
        5: "May",
        6: "June",
        7: "July",
        8: "August",
        9: "September",
        10: "October",
        11: "November",
        90>switcher>52: "December"
    }

print switcher.get(argument, "Invalid month")

我的问题是这样的:

我想获取数字范围和返回码。

【问题讨论】:

  • 你打算如何调用 switch_demo() 以及你将如何处理返回值?
  • 我需要调用函数和范围内的值,例如调用 switch_demo(15) 然后返回 "January"
  • 你的意思是调用 switch_demo(1) 并返回“January”吗?
  • 不,我想调用 switch_demo("range of 13 to 51") 然后返回“January”
  • 你不能使用它。使用if/elif/else。对于小于13 的值,它可以从字典中返回值。

标签: python switch-statement


【解决方案1】:

也许您在谈论两个不同的事情:一些超出范围的值,然后是 1-12 的范围内的值:

def switch_demo(argument):
    switcher = {
        1: "January",
        2: "February",
        3: "March",
        4: "April",
        5: "May",
        6: "June",
        7: "July",
        8: "August",
        9: "September",
        10: "October",
        11: "November",
        12: "December"
    }
    return switcher.get(argument, "Invalid month")

def switch_range(argument):
    if argument <= 12:
        return switch_demo(argument)
    elif argument <= 51:
        return switch_demo(1)
    else:
        return switch_demo(12)

【讨论】:

  • 我有代码生成器,可以生成 1 到 600 之间的随机密钥,我决定 600/12 所以这个返回数字,上面一个月之一。 13-51 返回“一月”,52-90 返回“十二月”,以此类推。
  • 为什么不随机//50?
【解决方案2】:

得到Range as dictionary key in Python的答复

如果您想将一系列值作为字典的键,请尝试此操作

switcher = dict(
                [(n, 'January')
                    for n in range(13,51)] +
                [(2, 'February')] +
                [(3, 'March')] +
                [(4, 'April')] +
                [(5, 'May')] +
                [(6, 'June')] +
                [(7, 'July')] +
                [(8, 'August')] +
                [(9, 'September')] +
                [(10, 'October')] +
                [(11, 'November')] +
                [(n, 'December') 
                    for n in range(52,90)]
                )

【讨论】:

    猜你喜欢
    • 2012-03-03
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    相关资源
    最近更新 更多