Python程序输出重复问题:次数与gen_coms数组长度一致
问题根源分析
你的输出重复问题完全是因为genTerm()函数里的for循环逻辑错误——你遍历了gen_coms数组的每一个元素,每一次循环都会执行一次判断和打印操作,所以数组有3个元素,就会打印3次结果。
看一下你的代码片段:
def genTerm(): while True: gin = raw_input('> ') for commands in gen_coms: # 这里遍历了gen_coms的所有元素,循环次数等于数组长度 if gin in gen_coms: print gin else: print('Unrecognized command!')
当你输入a时,这个for循环会跑3次:每次都检查a是否在gen_coms里(结果是True),所以每次都打印a,最终就输出了3次。
修复方案
你根本不需要这个for循环!直接去掉循环,只做一次判断就够了:
def genTerm(): while True: gin = raw_input('> ') if gin in gen_coms: print gin else: print('Unrecognized command!')
这样不管gen_coms有多少个元素,只会执行一次判断和打印,输出就不会重复了。
另外顺便提一下getCommands()里的小问题:a = gen_coms.append(...)这行代码是没用的,因为append()方法返回的是None,你不需要把它赋值给变量a,直接写gen_coms.append(file[:-len(com_ext)])就可以了。
内容的提问来源于stack exchange,提问作者NaruS
相关产品推荐
相关产品推荐

