2015-03-11 4 views
0

Я только начал изучать Python, и мне нужна помощь в создании этой схеме:Python: шаблон отображения

****** 
    ***** 
     **** 
     *** 
     ** 
     * 

Сейчас у меня этот код:

 base = 6 
     for row in range (base): 
      for col in range (row+1): 
       print('*', end='') 
      print() 

который становится:

* 
** 
*** 
**** 
***** 
****** 
+0

Проверьте [это] (http://stackoverflow.com/questions/28617081/loops-for-sequence-output-python/28617168#28617168) вопрос для подсказок. – ljetibo

ответ

-1

Я думаю, что вы делаете это слишком сложно

base = 6 

for i in range(base, 0, -1): 
    print "*"*i 

и вы получите:

****** 
***** 
**** 
*** 
** 
* 

Подумайте о том, как ваши диапазоны создаются. Если вы хотите напечатать «******» перед печатью «*****», вам нужно дать питону знать, чтобы напечатать 6 до 5. Сделайте это, подсчитав свой диапазон.

Я сделал это здесь:

for i in range(base, 0, -1): 

Он начинается диапазон у основания (который вы установили 6) и отсчитывает на -1, вплоть до нуля.

0

Что вам нужно здесь, чтобы отследить, сколько пробелов вам нужно - и у вас уже есть код для этого - и сколько вам нужно '*'. Затем для каждой строки вам нужно напечатать соответствующее число ' ' s и соответствующее количество '*' s. Поскольку я предполагаю, что вы хотите, чтобы общая ширина оставалась постоянной, вам нужно будет x номер ' 's и n-x номер '*' s, где n - это количество линий/общей ширины, которое вы хотите.

Так, например

n=6; print('\n'.join(' '*x+'*'*(n-x) for x in range(0,n))) 

будет работать.

Если это проблема с домашней работой, я бы посоветовал не поворачиваться в вышеупомянутом решении. Было бы лучше записать его стандартным способом.

Смежные вопросы