题解 | #配置文件恢复#

配置文件恢复

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

'''
自己写的用正则匹配太low了,看了@中年美少女写的切片思想佩服了,另外不用字典免去了双层循环的做法,偷来粘在这里供大家欣赏。
'''
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"]
        #不建字典,用列表的方式避免了双层循环,如果实在要用列表,直接用dict(zip(list1,list2))合成字典都行.
        if len(m)<1 or len(m)>2:   #判断当输入为小于1个或者输入大于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)): #这里把所有原始命令遍历,如果这里写成(len(key)+1),也就是1..6,那么下面的key[i]要改成k[i-1]才符合逻辑
                a=key[i].split() #将具体的一个KEY分割成两部分
                if m[0]==a[0][:len(m[0])] and m[1]==a[1][:len(m[1])]:  #然后去匹配被分割的key,这里不可能有reset这种单独的,因为上面条件已经限制了。
                    index.append(i)  #符合条件就把这个位置入列表
            if len(index)!=1:
                print("unknown command")
            else:
                print(value[index[0]]) #输出对应的value值
    except:
        break
全部评论
len(m)=1的时候少写了一个for循环吧,应该m[0]==key[i][:len(m[0])]才对吧?
1 回复 分享
发布于 2022-03-05 02:50
不符合“唯一匹配”的题目要求
1 回复 分享
发布于 2023-08-10 11:32 北京
请问这个strip是为了什么,感觉不加上程序也能运行
点赞 回复 分享
发布于 2021-09-27 21:24
双列表聪明
点赞 回复 分享
发布于 2022-02-24 16:16
感觉不太对呀,这个假如是ba的话,就算有for 循环判断,取得还是b会把board add打印出来,
点赞 回复 分享
发布于 2022-03-13 22:21
len(m) == 应该补一个这个:for i in range(len(key)): if key[i].startswith(m): print(key[i]) break else: print('unknow commond')
点赞 回复 分享
发布于 2022-03-13 22:22
len(m)==1的时候,好像只需要判断reset就行了
点赞 回复 分享
发布于 2022-04-03 22:27
发现点问题: 1、13 行的代码写死了,如果 key 列表中的第一个字符串在其他位置呢? 2、考虑到第一点,19 行的 range 就应从 0 开始,21 行的判断加上 len(a) != 1 可参考:https://blog.nowcoder.net/n/0774908d892a4841992d7f1b98e9b4e1 一点拙见,欢迎讨论或指正
点赞 回复 分享
发布于 2022-04-14 01:31
为什么不切片就超时呢?
点赞 回复 分享
发布于 2023-05-09 18:24 上海
代码一看就有问题啊,如果我输入reboot呢,代码返回结果为unknow,但应该是impossible
点赞 回复 分享
发布于 2023-09-06 13:36 四川
也可以用startswith方法做以什么起始判断
点赞 回复 分享
发布于 2023-10-05 14:38 江苏

相关推荐

牛客101244697号:这个衣服和发型不去投偶像练习生?
点赞 评论 收藏
分享
10-18 13:01
已编辑
西安理工大学 C++
小米内推大使:建议技能还是放上面吧,hr和技术面试官第一眼想看的应该是技能点和他们岗位是否匹配
点赞 评论 收藏
分享
78 18 评论
分享
牛客网
牛客企业服务