2015-02-04 2 views
0

Я должен ответить на этот вопрос: напишите треугольник функции Python (n), который принимает целочисленный аргумент n и печатает числовой треугольник из n слоев, как показано в следующих примерах. Проверьте свой ответ на аргументы: 1, 2, 5, 9 и 14.Как создать числовой треугольник с пользовательским вводом в python?

triangle(7) 
1 
12 
123 
1234 
12345 
123456 
1234567 

triangle(14) 
1 
12 
123 
1234 
12345 
123456 
1234567 
12345678 
123456789 
1234567890 
12345678901 
123456789012 
123456789
123456789

Я не могу понять, как это сделать, кроме использования списка.

def triangle(n): 
    line = [1] 
    count = 2 
    print(line) 
    for i in range(1,n): 
     line.append(count) 
     count += 1 
     print(line) 
     if len(line) == 9: 
      line.append(0) 
      print(line) 
      count = 1 
triangle(5) 
[1] 
[1, 2] 
[1, 2, 3] 
[1, 2, 3, 4] 
[1, 2, 3, 4, 5] 

Но список печатает именно так. И мне трудно с 0 и получить его, чтобы начать считать до 123 и т. Д.

+0

попробовать, используя строку? – taesu

+0

Существует множество решений, включая использование списка. Как насчет выполнения 'u '?. Join (line)', чтобы закончить его с помощью вашего списка? –

+0

Я все еще не понимаю ... Как получить цифры Если я использовал строку и где я использую 'u '' .join (line)'? –

ответ

0

вот моя попытка

def triangle(n):  
    s = "" 
    for i in xrange(0,n): 
     s += "{}".format((i+1)%10) 
     print s 
triangle(15) 

выходы:

1 
12 
123 
1234 
12345 
123456 
1234567 
12345678 
123456789 
1234567890 
12345678901 
123456789012 
123456789
123456789
123456789
1

Одним из возможных вариантов, вероятно, самые простые:

  1. печати цифры по одному и использовать print <value>, (обратите внимание на запятую), чтобы избежать разрыва строки после каждого print. В конце, print без параметров произведет просто разрыв строки.

    Таким образом, вам даже не нужно создавать последовательность.

    Для тех случаев, когда print является функцией, синтаксис print(<value>,end='') и print(''), соответственно.

  2. Для цикла цифр, использовать операцию по модулю (%)

+0

Где я могу использовать 'print ,'? я бы сделал 'print (line,)'? –

+0

Теперь читайте дальше от «For when' print' является функцией ... » –

+0

Вы не указали свою версию Python, поэтому я дал синтаксис для Python 2 (' print' - это инструкция по умолчанию) и 3 (' print' является функцией). –

0

В то время как может быть более элегантный код:

def tri(n): 
    start = 1 
    while (n >= start): 
     foo = "" 
     for i in range(1, start+1): 
      foo += str(i%10) 
     print foo 
     start += 1 
+0

«Дайте человеку рыбу, и вы накормите его на день, научите человека ловить рыбу, и вы кормите его на всю жизнь». Это, очевидно, упражнение, просто дать ответ не научит его. –

+0

Это не самое чистое решение. –

+0

Я сказал, что это было самое чистое? – taesu

0

Почти один вкладыш:

>>> import string 
>>> def number_triangle(n): 
... print u''.join(string.digits[(i+1) % 10] for i in range(n)) 
... 
>>> for i in range(15): 
... number_triangle(i) 
... 

1 
12 
123 
1234 
12345 
123456 
1234567 
12345678 
123456789 
1234567890 
12345678901 
123456789012 
123456789
123456789
+0

Мне нравится этот ответ, но я думаю, что все это должно быть под одной функцией. –

+0

Да, я повторил, что функция должна выполнять цикл, но так легко объединить все части, которые я оставил «как упражнение», если вы это сделаете. –

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