题解 | #配置文件恢复#

配置文件恢复

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
全部评论
不符合“唯一匹配”的题目要求
1 回复 分享
发布于 2023-08-10 11:32 北京
len(m)=1的时候少写了一个for循环吧,应该m[0]==key[i][:len(m[0])]才对吧?
1 回复 分享
发布于 2022-03-05 02:50
聪明啊大佬,我循环嵌套都要死掉了
点赞 回复 分享
发布于 02-13 16:55 四川
也可以用startswith方法做以什么起始判断
点赞 回复 分享
发布于 2023-10-05 14:38 江苏
代码一看就有问题啊,如果我输入reboot呢,代码返回结果为unknow,但应该是impossible
点赞 回复 分享
发布于 2023-09-06 13:36 四川
为什么不切片就超时呢?
点赞 回复 分享
发布于 2023-05-09 18:24 上海
发现点问题: 1、13 行的代码写死了,如果 key 列表中的第一个字符串在其他位置呢? 2、考虑到第一点,19 行的 range 就应从 0 开始,21 行的判断加上 len(a) != 1 可参考:https://blog.nowcoder.net/n/0774908d892a4841992d7f1b98e9b4e1 一点拙见,欢迎讨论或指正
点赞 回复 分享
发布于 2022-04-14 01:31
len(m)==1的时候,好像只需要判断reset就行了
点赞 回复 分享
发布于 2022-04-03 22:27
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
感觉不太对呀,这个假如是ba的话,就算有for 循环判断,取得还是b会把board add打印出来,
点赞 回复 分享
发布于 2022-03-13 22:21
双列表聪明
点赞 回复 分享
发布于 2022-02-24 16:16
请问这个strip是为了什么,感觉不加上程序也能运行
点赞 回复 分享
发布于 2021-09-27 21:24

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
点赞 评论 收藏
分享
避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
80
18
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务