Найти - Пользователи
Полная версия: Циклической вывод пирамиды
Начало » Python для новичков » Циклической вывод пирамиды
1
zxcvbnm
Вот код но его нужно сократить применив цикл фор но как не могу понять помогите
             print(31 * ' ', str(self.deck1.cards[0]),'            index 0')
            print(28 * ' ', str(self.deck1.cards[1:3]),'          index 1-2')
            print(26 * ' ', str(self.deck1.cards[3:6]),'          index 3-5')
            print(24 * ' ', str(self.deck1.cards[6:10]),'         index 6-9')
            print(22 * ' ', str(self.deck1.cards[10:15]),'        index 10-14')
            print(20 * ' ', str(self.deck1.cards[15:21]),'        index 15-20')
            print(18 * ' ', str(self.deck1.cards[21:28]),'        index 21-27')
py.user.next
Нужно сделать функцию, которая возвращает правильно выравненную строку, и потом уже выводить эту строку, когда она получена.

А в функции можно использовать str.format() и проверки всякие, правильная ли строка получилась.

Так что покажи, что должно получиться в результате, тогда тебе подберём тут вариант преобразований. Делать это всё просто на цикле - направление неправильное (потому ты и застрял).
zxcvbnm
zxcvbnm
вот такой должен быть вывод
py.user.next
Это пример того, как построить вывод
  
>>> def make_rows(cards, indexes):
...     return [align_items(i, 30) + make_index(j)
...             for i, j in zip(cards, indexes)]
... 
>>> def align_items(items, width):
...     return ' '.join(items).center(width)
... 
>>> def make_index(s):
...     return 'index ' + s
... 
>>> cards = [['j'], ['j', 'q'], ['6', '7', 'K']]
>>> indexes = ['0', '1-2', '3-5']
>>> 
>>> for i in make_rows(cards, indexes):
...     print(i)
... 
              j               index 0
             j q              index 1-2
            6 7 K             index 3-5
>>>
Это второй пример, где индексы более продвинуто создаются
  
>>> def make_rows(cards, indexes):
...     return [align_items(i, 30) + make_index(j)
...             for i, j in zip(cards, indexes)]
... 
>>> def align_items(items, width):
...     return ' '.join(items).center(width)
... 
>>> def make_index(lst):
...     if len(lst) == 1:
...         return 'index {}'.format(lst[0])    
...     else:
...         return 'index {}-{}'.format(lst[0], lst[1])
... 
>>> cards = [['j'], ['j', 'q'], ['6', '7', 'K']]
>>> indexes = [[0], [1, 2], [3, 5]]
>>> 
>>> for i in make_rows(cards, indexes):
...     print(i)
... 
              j               index 0
             j q              index 1-2
            6 7 K             index 3-5
>>>

Дальше тебе нужно просто сформировать входные последовательности отдельно и подать их в функцию, которая выведет их определённым образом.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB