【问题标题】:python conditional type castingpython条件类型转换
【发布时间】:2018-03-07 12:45:11
【问题描述】:

我正在尝试确保用户参数是某种类型,当从 cmd 行运行脚本时,使用 -> python Script.py argv1 argv2 argv3 etc...

这个想法是,如果用户只输入 2 个命令行参数,则 arg_list 中的其余变量将默认。我想确保他们确实输入的是正确的类型。

下面是我所遇到的情况的模拟。在 if 条件失败的那一刻,它不会被 except 块拾取(有没有办法解决这个问题??)实际上有更多的变量,因此为每个 if 子句设置 try-except 是不切实际的。

arg1 = 3.14
arg2 = "Default 1"
arg3 = "Default 2"
arg4 = True
arg_list = [arg1, arg2, arg3, arg4]

for i in range(1, len(sys.argv)):

    try:
        if i==1:
            arg_list[i-1] = float(sys.argv[i])
        elif i==2 or i==3:
            arg_list[i-1] = str(sys.argv[i])
        else i==4:
            arg_list[i-1] = bool(sys.argv[i])

    except TypeError as e:
        # do stuff

任何帮助都会很棒,谢谢!

【问题讨论】:

    标签: python types casting try-catch


    【解决方案1】:
    typelist = [float, str, str, bool]
    
    for i, item in enumerate(sys.argv[1:]):
        assert type(item) == typelist[i]
    

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 1970-01-01
      • 2018-11-03
      • 2019-01-19
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多