Как сделать цикл, который печатает 6 элементов списка в строке? - PullRequest
1 голос
/ 22 октября 2019

То, что программа должна сделать, это взять пользовательский ввод, который генерирует последовательность collatz, затем распечатывает каждый элемент из последовательности с табуляцией между каждым числом, но после 6 элементов из списка он печатает на следующей строке и так далее. и так далее, и последняя строка (остальные элементы) не нуждается в 6. Последняя часть - это, как предполагается, найти наибольшее число из последовательности.

У меня есть последовательность для генерации, и я могу найтинаибольшее число, я просто не могу понять, как сделать интервалы.

То, что я пробовал: (этот первый отпечаток просто должен быть там)

def display_sequence(sequence)
    print()
    for i in sequence:
        print(i, end = " \t")

Ответы [ 3 ]

2 голосов
/ 22 октября 2019

Вместо того, чтобы повторять возрастающую последовательность индексов, повторяйте повторяющийся цикл 0, ..., 5. Оператор if можно сократить до условного выражения, чтобы выбрать '\t или '\n' в качествеконечный символ.

from itertools import cycle

for index, item in zip(cycle(range(1, 7)), sequence):
    print(item, end='\t' if item < 6 else '\n')

Или итерируйте по начальным индексам каждого среза:

for s in range(0, len(sequence), 6):
    print('\t'.join(sequence[s:s+6]))

В документации на модули itertools также приведен рецепт итерации по срезам sequence[0:6], sequence[6:12] и т. Д. Напрямую.

0 голосов
/ 22 октября 2019

Небольшой цикл for, не требующий никаких условий:

from string import ascii_lowercase as seq

step = 6
for i in range(0, len(seq), step):
    print(*seq[i:i+step], sep="\t", end="\n")

# a    b    c    d    e    f
# g    h    i    j    k    l
# m    n    o    p    q    r
# s    t    u    v    w    x
# y    z

Как функция:

def display_seq(seq, step=6):
    for i in range(0, len(seq), step):
        print(*seq[i:i+step], sep="\t", end="\n")

0 голосов
/ 22 октября 2019

Я хочу посмотреть, что все остальные делают, но это то, что я сделал:

def display_sequence(sequence):
    print()
    for index, item in enumerate(sequence):
        if (index + 1) % 6 == 0:
            print(item)
        else:
            print(item, end = " \t")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...