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()