华为机考HJ66--切片

配置文件恢复

http://www.nowcoder.com/questionTerminal/ca6ac6ef9538419abf6f883f7d6f6ee5

1.多行输入
strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 command.strip().split()
2.此时,如果command只有一个值,也要用command[0]。(在本地运行的时候,是不用的)
3.题目的解释:
【例如输入:r,根据该规则,匹配命令reset,执行结果为:reset what;
输入:res,根据该规则,匹配命令reset,执行结果为:reset what;】
这个要求可以理解为切片比较

while True:
    try:
        m=input().strip().split()
        key=["reset","reset board","board add","board delete","reboot backplane","backplane abort"]
        value=["reset what","board fault","where to add","no board at all","impossible","install first"]
        #key[2][:3] 'boa'
        #不建字典,是因为字典可能无序(3版又改动了),不方便确认是否唯一
        if len(m)<1 or len(m)>2:
            print("unknown command")
        elif len(m)==1:
            if m[0]==key[0][:len(m[0])]:
                print(value[0])
            else:
                print("unknown command")
        else:
            index=[]
            for i in range(1,len(key)):
                a=key[i].split()
                #print(a[0][:3])
                if m[0]==a[0][:len(m[0])] and m[1]==a[1][:len(m[1])]:
                    index.append(i)
            if len(index)!=1:
                print("unknown command")
            else:
                print(value[index[0]])
    except:
        break
全部评论
这个写的最精辟,最核心的想法就是x[0][:len(m[0])]这种列表中字符串取位的做法。佩服,本想着将每个字符取出来,看完后瞬间跪拜了,写法无懈可击
1 回复 分享
发布于 2021-09-20 12:19
我咋感觉11行不一定是k[0]啊。。。得遍历吧
点赞 回复 分享
发布于 2020-09-22 13:47
因为11行只考虑输入一个值例如'r',如果输入'r b'则跳转到15行,else判断
点赞 回复 分享
发布于 2021-07-05 20:24

相关推荐

挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
26 7 评论
分享
牛客网
牛客企业服务