Python控制台列表最长相等整数序列查询无输出问题求助
问题根因
一共两个核心bug导致无输出、结果不符合预期:
- 输入列表未成功保存到全局变量:
ui_citire_lista函数里直接对参数lst1赋值,Python中列表作为参数传参时,函数内直接给参数名赋值只会修改局部变量,不会修改外部的全局列表。也就是说你按1输入完序列后,全局的lst1还是空列表,调用lista_egale遍历空列表,自然没有任何输出。 - 最长相等序列计算函数
lista_egale逻辑错误:当前的实现里每一次循环都会把计数l重置为0,同时判断逻辑错位,循环结束后也没有处理最后一段连续序列的情况,就算输入能正常传进去,也算不对结果。
修复方案
1. 修复输入保存逻辑
修改ui_citire_lista函数,把输入的字符串转成整数之后用列表方法更新全局列表,而不是直接赋值:
def ui_citire_lista(lst1): input_string = input("Introduceti numerele ") # 先清空原有列表,再把输入转成整数加进去,更新原列表对象 lst1.clear() lst1.extend(int(num) for num in input_string.split())
2. 修复最长相等序列计算逻辑
修正lista_egale的计数和判断逻辑,循环结束后还要比对最后一段连续序列的长度:
def lista_egale(lst1): if not lst1: print(0) return l = 1 lmax = 1 prev_one = lst1[0] for current in lst1[1:]: if prev_one == current: l += 1 if l > lmax: lmax = l else: l = 1 prev_one = current print(lmax)
把以上两个修改替换原有对应函数即可,测试你给出的用例1 2 2 2 2 4按2之后会输出4,符合预期。
内容的提问来源于stack exchange,提问作者manowar447233
相关产品推荐
相关产品推荐

