Python程序未返回字符出现索引,新手请求技术帮助
帮你排查代码问题啦
嘿,作为编程新手遇到这种问题很正常,我帮你找出两处关键问题,再给你优化后的代码:
问题1:死循环陷阱
你的while循环里,只有当字符匹配的时候才会执行a = a+1,如果遇到不匹配的字符,else分支里只有continue,a的值根本不会变,循环就会一直卡在这个位置,永远跑不完!
问题2:变量名不匹配
最后打印结果的时候你写的是print(loclist),但你定义的存储索引的列表是l,这会直接抛出NameError,因为Python找不到叫loclist的变量。
修正后的代码
word = input("Enter word: ") wrdlist = list(word) l = [] a = 0 char = input("Enter letter: ") while a < len(wrdlist): if char == wrdlist[a]: l.append(a) # 不管匹配不匹配,都要让a递增,避免死循环 a = a + 1 if not l: print("none") else: print(l)
更简洁的写法(新手也能看懂)
其实Python里可以用enumerate直接遍历带索引的字符,代码会更清爽:
word = input("Enter word: ") char = input("Enter letter: ") indices = [idx for idx, letter in enumerate(word) if letter == char] print(indices if indices else "none")
这个列表推导式的逻辑很简单:遍历word里的每个字符和它对应的索引,把匹配目标字符的索引收集起来,最后根据列表是否为空输出结果~
内容的提问来源于stack exchange,提问作者Anish Laddha
相关产品推荐
相关产品推荐

