2015-10-23 3 views
2

Я пытаюсь сделать программу, которая будет печатать шаблон, такие как:Создать шаблон с номерами с использованием питона

п = 4

1 
    12 
    123 
1234 

Прямо сейчас это то, что у меня есть:

n = int(input("Please enter a positive integer: ")) 
line = "" 
for currentNum in range(1,n+1): 
    line = " " * (n-currentNum) + line + str(currentNum) 
    print(line) 

Я не получаю нужное количество мест, которые я надеюсь получить. Какие-нибудь советы? Благодарю.

Это то, что я получаю на IDLE:

1 
     12 
     123 
      1234 
      12345 
+0

Это потому, что вы должны знать, что максимальную длину конечного числа, прежде чем начать итерацию, а затем вычесть пространство от максимальной длины для каждого значения – Dan

+0

Но не будет "" * (n-currentNum) позаботиться об этом? currentNum начинается с 1, а если n равно 4, тогда должно быть 3 пробела для строки 1 –

ответ

0

Там гораздо более простой способ сделать это с .rjust.

n = int(input("Please enter a positive integer: ")) 
line = '' 
for current_num in range(1, n+1): 
    line += str(current_num) 
    print(str(current_num).rjust(n, ' ')) 

Или как один лайнер, чтобы стравливать ответа Юджина:

n=int(input());print('\n'.join(''.join(map(str,range(1,i+1))).rjust(n,' ')for i in range(1,n+1))) 
+0

. Я рассмотрю это, но на данный момент мне не разрешено использовать такой синтаксис для класса –

2
for i in range(1, n+1): 
    print(" "*(n-i) + "".join(map(str, range(1, i+1)))) 
0

Проблема заключается вы добавления пространства и числа в строку каждый раз. Вы просто хотите добавить цифры и распечатать с добавленными пробелами. Если вы не можете использовать другие функции, то что-то, как это будет работать:

n = int(input("Please enter a positive integer: ")) 
line = "" 
for currentNum in range(1,n+1): 
    line += str(currentNum) 
    spaced_line = ' '*(n-currentNum) + line 
    print(spaced_line) 
-1
response = int(input("Enter the number: ")) 
formula = "" 
for pingpong in range(1,response+1): 
    formula = formula + str(pingpong) 
    print(formula)