2016-07-31 5 views
2

Ich versuche, dieseWie mache ich ein Dreieck aus Zahlen mit Python-Schleifen?

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

zu erreichen Und ich bin nah dran, aber ich bin jetzt stecken. Hier ist mein aktueller Code

def triangle(): 
    n = 9 
    numList = [0,1,2,3,4,5,6,7,8,9] 
    for i in range(10): 
     for i in numList: 
      print(i, end=" ") 
     print() 
     numList[n] = 0 
     n -= 1 
triangle() 

Und dies ist die aktuelle Ausgabe

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

Also bin ich dort in einer Runde über die Art und Weise, mit der Ausnahme, sein nach hinten, und es gibt 0'en statt Leerzeichen

+0

Für den Anfang, können Sie nicht herausfinden, wo die extra '0 kommen und etwas dagegen tun? 'numList [n] = 0' ->' numList.pop() 'zum Beispiel. – kaylum

+0

Sorry kaylum, ich lerne immer noch Basics und habe die .pop() Funktion komplett vergessen, das wird es viel einfacher machen, jetzt kann ich einfach herausfinden, wie man es 'reverse' – oneman

Antwort

1

interessantes Puzzle, könnten Sie dies versuchen:

n = range(0,10) #set your range 
while len(n)<20: #loop until it exhausts where you want it too 
    print ''.join(str(e) for e in n[0:10]) #print as a string! 
    n = [' ']+n  #prepend blank spaces 

here is an example

Sie könnten die gleiche Logik auf Ihren Versuch anwenden. Grundsätzlich füge ich dem Anfang von N nach jeder Schleife ein Leerzeichen hinzu und drucke dann nur die ersten zehn Elemente aus. Die Art, wie ich die Liste drucke, ist ein wenig klobig, weil ich mich verbinde, ich muss jedes Element in eine Zeichenkette ändern.

+0

funktioniert wie beabsichtigt, danke für die Hilfe – oneman

2

können Sie diesen Code versuchen:

def triangle(): 
    for i in range(10): 
     print i * " ", 
     for j in range(10 - i): 
      print j, 
     print  

triangle() 

Der Code ist fast selbsterklärend.

Online Beispiel ist here

0

Die anderen Lösungen sind in Ordnung, aber das Leben wird ein wenig leichter mit numpy ‚s arange und dem überlasteten * Operator für Streicher. Die eingebauten Pythons sind sehr mächtig.

for i in range(11): 
    print ' ' * i + ''.join(str(elt) for elt in np.arange(10 - i)) 
Verwandte Themen