Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 10, 2017 09:53:48

zxcvbnm
Зарегистрирован: 2017-02-11
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Циклической вывод пирамиды

Вот код но его нужно сократить применив цикл фор но как не могу понять помогите

             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')

Офлайн

#2 Апрель 10, 2017 11:07:36

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Циклической вывод пирамиды

Нужно сделать функцию, которая возвращает правильно выравненную строку, и потом уже выводить эту строку, когда она получена.

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

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



Офлайн

#3 Апрель 10, 2017 11:28:35

zxcvbnm
Зарегистрирован: 2017-02-11
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Циклической вывод пирамиды

Отредактировано zxcvbnm (Апрель 10, 2017 11:30:38)

Офлайн

#4 Апрель 10, 2017 11:31:04

zxcvbnm
Зарегистрирован: 2017-02-11
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Циклической вывод пирамиды

вот такой должен быть вывод

Прикреплённый файлы:
attachment vcdd.JPG (28,0 KБ)

Офлайн

#5 Апрель 10, 2017 12:19:16

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Циклической вывод пирамиды

Это пример того, как построить вывод

  
>>> 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
>>>

Дальше тебе нужно просто сформировать входные последовательности отдельно и подать их в функцию, которая выведет их определённым образом.



Отредактировано py.user.next (Апрель 10, 2017 12:33:12)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version