CCF CSP 201403-3 命令行选项 python

201403-3 命令行选项

在这里插入图片描述

form = input()
n = int(input())

single_var = []
multi_var = []

# store options
form += " "
for i in range(len(form)-1):
    if form[i+1]==':':
        multi_var.append(form[i])
    elif form[i]!=':':
        single_var.append(form[i])

for m in range(n):
    cmd = input().split()
    option = dict()
    i = 1
    while i<len(cmd):
        if len(cmd[i]) == 2 and cmd[i][0] == "-":
            # is form 
            if cmd[i][1] in single_var:
                # no value
                option[cmd[i][1]]=""
                i+=1
            elif cmd[i][1] in multi_var and i+1 < len(cmd):
                # have value
                option[cmd[i][1]]= cmd[i+1]
                i+=2
            else:
                # 当你的工具遇到某个字符串既不是合法的选项,又不是某个合法选项的参数时, 分析就停止。
                # 命令行剩余的未分析部分不构成该命令的选项,因此你的程序应当忽略它们。
                # ls -a -b -c -d -e -l ; after -b is all ignored,because -c
                break
        else:
            # ls -a -l -a documents -b
            # -a documents mistake ,so ignore -b
            break
    
    """
    其中第 i 行以"Case i:" 开始,然后应当有恰好一个空格,
    然后应当按照字母升序输出该命令行中用到的所有选项的名称,对于带参数的选项,在输出它的名称之后还要输出它的参数。如果一个选项在命令行中出现了多次,只输出一次。
    如果一个带参数的选项在命令行中出 现了多次,只输出最后一次出现时所带的参数。
    """
    keys = list(set(option.keys()))
    keys.sort()
    print("Case "+str(m+1)+":",end="")

    for key in keys:
        print(" -"+key,end="")
        if option[key]!="":
            print(" "+option[key],end="")
    print()
    
    


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值