Python实现按键控制分页迭代列表元素(每次10个)
修正后的按键分页控制代码
直接解决你的翻页越界问题,核心是限制display的取值范围,同时用列表切片替代索引循环来避免访问不存在的元素。以下是修正后的完整代码:
display = 0 items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] # 计算最大允许的页码(从0开始计数) max_page = (len(items) - 1) // 10 while True: # 用切片直接获取当前页的元素,自动处理最后一页不足10个的情况 current_page_items = items[display * 10 : display * 10 + 10] for item in current_page_items: print(item) # 获取按键输入 key = input() if key == 'y': # 只有当前页不是最后一页时,才允许翻下一页 if display < max_page: display += 1 else: # 只有当前页不是第一页时,才允许翻上一页 if display > 0: display -= 1
关键修正点:
- 替换索引循环为列表切片:
items[display*10 : display*10+10]会自动处理最后一页元素不足10个的情况,不会触发索引越界错误,同时代码更简洁,无需分列表长度≤10和>10的分支。 - 计算最大页码:
max_page = (len(items)-1)//10,比如14个元素时,(14-1)//10=1,对应第0页(1-10)和第1页(11-14),确保display不会超过这个值。 - 限制
display的边界:- 按'y'时,只有
display < max_page才允许加1,避免翻到不存在的页面。 - 按其他键时,只有
display > 0才允许减1,避免翻到负数页码。
- 按'y'时,只有
如果后续要迁移到curses模块,只需要把input()替换为curses.getch()获取按键,同时调整屏幕输出逻辑即可,核心的分页控制逻辑可以直接复用。
内容的提问来源于stack exchange,提问作者DVM
相关产品推荐
相关产品推荐

