我正在嘗試撰寫一個帶有控制臺 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()
uj5u.com熱心網友回復:
您的代碼不起作用,因為您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()
注意。還有其他問題,但我會讓你自己發現它們 ;) 如果你有問題,請不要猶豫再次發布
uj5u.com熱心網友回復:
這是回傳輸入的一個版本,但您必須更正 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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311463.html
下一篇:列印出帶有條件串列的字典
