簡體   English   中英

從列表中返回最大序列

[英]Returning max sequence from a list

我正在嘗試編寫一個帶有控制台 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()

您的代碼不起作用,因為您的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()

注意。 還有其他問題,但我會讓你自己發現它們 ;) 如果你有問題,請不要猶豫再次發布

這是返回輸入的一個版本,但您必須更正 lista_eagle 函數。

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)
    return 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()
    result = None
    while True:
        cmd = input(">>>")
        if cmd in ['1','2','3','4']:
            lst1.append(cmd)
        else:
            print("comanda invalida")
        if cmd == "4":
            print('longest sequence is', result)
            return result
        elif cmd == "1":
            ui_citire_lista(lst1)
        elif cmd == "2":
            result = lista_egale(lst1)
        elif cmd == "3":
            ui_afisare_munte()
        
def main():
    run()
    #test_egale()
    #test_munte()

if __name__ == "__main__":
    main()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM