python - 从列表中返回最大序列
问题描述
我正在尝试使用控制台 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()
注意。还有其他问题,但我会让您自己发现;)如果您遇到问题,请不要犹豫再次发布
推荐阅读
- mysql - MySQL SELECT WHERE 基于时间
- php - Docker - Nginx、PHP、MongoDB - Laravel 工匠迁移连接超时
- python - 使用 Cursor.executemany 和 Python 列表插入
- reactjs - Reactjs 与 Azure Ouath
- reactjs - 如何使用放大更改 AppSync GraphQL API 的默认授权模式
- node.js - 无法使用 mongoose 将数据插入我的 mongodb 数据库
- excel - 如何在 Excel VBA 代码中从另一个工作表评估单元格
- mysql - 我可以在全文搜索中搜索重复的单词吗?[MySQL]
- maven - 如何使用 Maven InteliJ 或在何处放置 TinyLog 属性文件
- node.js - 在 React 应用程序中添加搜索功能以搜索 csv 数据