首页 > 解决方案 > 从列表中返回最大序列

问题描述

我正在尝试使用控制台 UI 编写一个程序,用户可以在其中输入一个序列,如果他们按 2 或 3,他们可以分别找到最长的相等整数序列和最长的“山”序列

当我按1时一切顺利,我可以进入列表,但是当我按2时(我还没有实现3)没有任何反应

示例输入:按 1, 1 2 2 2 2 4 后,再按 2

预期输出:4

实际输出:没有,程序不工作

(我希望标题是主题)

def lista_egale(lst1):
    l = 0
    prev_one = None
    lmax = -1
    for current in lst1:
        if prev_one == current:
            l += 1
        elif l > lmax:
            lmax = l
        l = 0
        prev_one = current
        print(lmax)
def afiseaza_meniu():
    print("Aplicatie cu liste")
    print("1. Introduceti lista")
    print("2. Verificati daca lista are o secventa maxima cu numere egale si afisati-o")
    print("3. Verificati daca lista este de tip munte si afisati-o")
    print("4. exit")


def ui_citire_lista(lst1):
     input_string = input("Introduceti numerele ")
     lst1 = input_string.split()

def ui_afisare_munte():
    pass

def run():
    global lst1
    lst1 = []
    afiseaza_meniu()
    while True:
        cmd = input(">>>")
        if cmd == "4":
            return
        if cmd == "1":
            ui_citire_lista(lst1)
        elif cmd == "2":
            lista_egale(lst1)
        elif cmd == "3":
            ui_afisare_munte()
        else:
            print("comanda invalida")

def main():
    run()
    #test_egale()
    #test_munte()

if __name__ == "__main__":
    main()

标签: pythonlistuser-interfaceinput

解决方案


您的代码不起作用,因为您只能在本地ui_citire_lista分配。lst1您应该返回该值并将其捕获run(它是全局的)

更改为ui_citire_lista

def ui_citire_lista():
     input_string = input("Introduceti numerele ")
     return input_string.split()

更改为run

        if cmd == "1":
            lst1 = ui_citire_lista()

注意。还有其他问题,但我会让您自己发现;)如果您遇到问题,请不要犹豫再次发布


推荐阅读