2015-07-25 2 views
-3

мне нужна помощь с задачей в моем интро питона курса программирования, который требует код, который будет печатать следующее с помощью двух «для-петли», один из которых вложен:цифры от 0 до 9 в треугольнике

0 

0 1 

0 1 2 

0 1 2 3 

0 1 2 3 4 

0 1 2 3 4 5 

0 1 2 3 4 5 6 

0 1 2 3 4 5 6 7 

0 1 2 3 4 5 6 7 8 

0 1 2 3 4 5 6 7 8 9 

до сих пор я придумал следующий код, но мой треугольник чисел начинается с цифры 1 вместо 0:

for i in range(-1,9): 
    print ('\n') 
    for i in range (int(i+1)): 
     j = i+1 
     print (j, end=' ') 

Может кто-нибудь посоветовать, что я должен сделать, чтобы мой список цифр начинается с 0 вместо 1? Также любые предложения о том, как сделать мой код более удобочитаемым? Благодарю.

+4

В вашем втором цикле 'for' вы добавляете 1 в' j' * до *, вы печатаете 'j'. Переключите эти строки, и вы должны быть настроены. – MattDMo

+0

'j = i + 1' ... почему? – njzk2

ответ

2

При использовании range, если вы хотите, последнее число должны быть включены, вам нужно добавить один. Имея это в виду, я думаю, что следующий смысл:

for i in range(9+1): # +1 since you want the loop to include 9 
    for j in range(i+1): # +1 since you want your print to include i 
     print (j, end=' ') 
    print ('\n') 

print(\n) заявление может идти до или после того, как ваш j для цикла, хотя результат будет немного отличаться. (Может быть, потому, что я привык к механическим пишущим машинам, я думаю о \n как оканчивая линию, а не готовую к новой, но оба они являются разумными.)

Мне не нравится идея начать с -1 так затем вы можете добавить 1. Это слишком сложно, и плохая привычка начинать с новичка.

+0

Очень хорошее объяснение! :) – elegent

+0

спасибо tom10! Я понимаю совет и полностью согласен, что в моем коде я усложнил ситуацию. –

0

Сохраняя структуру кода, следующий будет работать:

for i in range(-1, 10): # you need 10 so that the triangle goes up to 9 
    print("\n") 
    for j in range(i + 1): 
     print(j, end=" ") 

Результат:

0 

0 1 

0 1 2 

0 1 2 3 

0 1 2 3 4 

0 1 2 3 4 5 

0 1 2 3 4 5 6 

0 1 2 3 4 5 6 7 

0 1 2 3 4 5 6 7 8 

0 1 2 3 4 5 6 7 8 9 
+0

Изменить 'print (" \ n ")' to 'print (" line \ n ")', и вы увидите, что в начале напечатаны две пустые строки ... – elegent