2015-02-04 3 views
1

мне нужен этот вложенный цикл для работы и ее простойВложенный цикл Треугольник с питона

def triangle(): 
     print("Making a Triangle") 
     base = 6 
     while base > 0: 
      print('0',0,base) 
      base = base - 1 
triangle() 

Мой выходной ток:

Making a Triangle 
0 0 6 
0 0 5 
0 0 4 
0 0 3 
0 0 2 
0 0 1 

мне нужен выход, чтобы выглядеть следующим образом:

000000 
00000 
0000 
000 
00 
0 
+4

Что вы тонкие k 'print ('0', 0, base)' does? Вы пробовали 'print ('0' * base)'? –

+1

Хотя ... выше комментарий @tobias_k решил вашу проблему на данный момент ... пожалуйста, сосредоточьтесь на том, чтобы подумать, почему он решил проблему. –

ответ

3

Вы можете использовать оператор умножения * для создания строки путем повторения символа. Кроме того, это было бы очень прямое приложение для цикла for.

def triangle(n): 
    print('making a triangle') 
    for zeroes in range(n): 
     print('0' * (n-zeroes)) 

Тестирование

>>> triangle(6) 
making a triangle 
000000 
00000 
0000 
000 
00 
0 

Хотя, если вы хотите придерживаться while петли, вы могли бы сделать

def triangle(n): 
    print('Making a triangle') 
    while n > 0: 
     print('0' * n) 
     n -= 1 
0

ответ Cyber ​​это хорошо, Вот некоторые лайнеры:

>>> for i in ['0'*j for j in range(n,0,-1)]: print (i) # Old-Style 
... 
000000 
00000 
0000 
000 
00 
0 

>>> print('\n'.join(['0'*i for i in range(n, 0, -1)])) # Thanks to Hannes Ovren 
000000 
00000 
0000 
000 
00 
0 

>>> print('\n'.join('0'*i for i in range(n, 0, -1))) # Using a generator expression 
000000 
00000 
0000 
000 
00 
0 

>>> print '\n'.join([('0'*6)[:n-i] for i in range(n)]) # Little complicated 
000000 
00000 
0000 
000 
00 
0 
+3

К сожалению, не очень читаемо. Если вы хотите использовать однострочный подход, я бы пошел на 'print ('\ n'.join ([' 0 '* i для i в диапазоне (n, 0, -1)]), который, возможно, немного читаем , но все же намного хуже, чем trvial multiline for-loop в ответе Кибера. Но однострочники - это весело, я вам это даю :) –

+0

@ HannesOvrén Спасибо, сэр, Но вы забыли там кронштейн !!! :) Да, вот почему я сказал в кулаке, что его ответ лучше;) –

+0

Doh! По крайней мере, это приводит к тому, что однострочники, хотя и симпатичные, не всегда являются наиболее читаемыми;) –

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