Я изо всех сил пытаюсь повторить каждые 10 элементов
Так что, если в списке меньше 10 пунктов, это прекрасно.
Если список больше, то для каждого нажатия y я хочу показывать следующие 10 элементов, как кнопку следующей страницы, а также не сбрасывать в конце, если я попытаюсь получить последние 10 элементов, а осталось только 5
набрав y, чтобы перейти на следующую страницу, и любую другую клавишу для предыдущей страницы.
Также обратите внимание, что это не настоящая проблема. Настоящая проблема, с которой я столкнулся, находится в модуле проклятий, но я пытался упростить, и даже это не удалось.
display = 0
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
while True:
# tried this but I need button press
# for i in range(0, len(list), 10):
# print(*list[i:i+10])
if len(list) <= 10:
for i in list:
print(i)
else:
for i in range((display * 10), ((display * 10) + 10) ):
print(list[i])
np = input()
if np == 'y':
display += 1
# here something that would prevent the next page when there is no more items
else:
if display == 0:
display = 0
else:
display -= 1
Кстати, не используйте list
в качестве имени переменной, это имя встроенного типа.
Я уверен, что есть много способов решить эту проблему. Один из способов — перебрать данные, распечатать количество записей для размера страницы (например, 10), а затем дождаться нажатия клавиши пользователя. Затем выйдите из цикла только после того, как данные будут исчерпаны.
Я создал следующий пример, который генерирует данные случайной длины для целей тестирования:
import random
start = 1
# Generate content of fixed length for testing
# length = 20
# Generate content of variable length for testing
length = random.randint(5, 40)
data = range(start, start + length)
print(f"Created data {len(data)} long\n")
PAGE_SIZE = 10
def pages_needed(data_len):
max_page = data_len // PAGE_SIZE
if data_len % PAGE_SIZE > 0:
max_page += 1
return max_page
page_number = 0
data_available = len(data) > 0
while data_available:
page_start = page_number * PAGE_SIZE
page_end = min((page_number * PAGE_SIZE) + PAGE_SIZE, len(data))
total_pages = pages_needed(len(data))
for entry in data[page_start:page_end]:
print(f"\t{entry}")
page_number += 1
if page_number >= total_pages:
data_available = False
else:
input("Press <return> for the next page of data")
Это дало мне следующий результат:
Created data 17 long
1
2
3
4
5
6
7
8
9
10
Press <return> for the next page of data
11
12
13
14
15
16
17
Используйте фрагмент:
list[i:i+10]
и каждый раз увеличивайтеi
на 10.