Notwendigkeit, Pyramiden-Dreieck auf Python neu zu erstellen

Ich muss eine recursive Funktion asterisk_triangle schreiben, die eine Ganzzahl annimmt und dann ein Asterisk-Dreieck zurückgibt, das aus diesen vielen Zeilen besteht.

Als Beispiel ist dies ein 4-zeiliges Sternchen-Dreieck.

  * ** *** **** 

Ich habe diese Funktion ausprobiert:

 def asterix_triangle(depth): rows = [ (depth-i)*' ' + i*2*'*' + '*' for i in range(depth-1) ] for i in rows: print i 

Und die folgende Funktion:

 def asterisk_triangle(rows=n): pyramid_width = n * 2 for asterisks in range(1, pyramid_width, 2): print("{0:^{1}}".format("*" * asterisks, pyramid_width)) 

Und weder gearbeitet. Ich soll Tests tests.py , um die Funktionen zu testen und ich bekomme Fehler für zB

 Traceback (most recent call last): File "C:\Users\akumaukpo\Documents\CISC 106\LAB05\lab05 _test.py", line 19, in <module> from lab05 import * File "C:\Users\akumaukpo\Documents\CISC 106\LAB05\lab05.py", line 22 print i ^ 

3 Solutions collect form web for “Notwendigkeit, Pyramiden-Dreieck auf Python neu zu erstellen”

Jede Anweisung in einem Block muss von mindestens einem Leerzeichen vom Anfang des Blocks eingerückt werden. Die Druck-Anweisung in Ihrem Code ist nicht in Bezug auf die for Block, in dem es enthalten ist, eingerückt, weshalb Sie den Fehler haben.

Versuche dies:

 def asterix_triangle(depth): rows = [ (depth-i)*' ' + i*'*' + '*' for i in range(depth) ] for i in rows: print i 

Welche Erträge:

 >>> asterix_triangle(4) * ** *** **** 

BEARBEITEN:

Ich habe gerade festgestellt, dass Ihre gewünschte Ausgabe ist, um beide Hälften eines Dreiecks zu haben. Wenn ja, spiegeln Sie einfach die Zeichenfolge, indem Sie die gleiche Sache zur rechten Seite des Strings hinzufügen:

 def asterix_triangle(depth): rows = [ (depth-i)*' ' + i*'*' + '*' + i*'*' for i in range(depth) ] for j in rows: print j 

Die Ausgabe:

 >>> asterix_triangle(4) * *** ***** ******* 

Wenn du eine Pyramide rekursiv machen musst, musst du wohl so etwas machen.

 def asterix_triangle(i, t=0): if i == 0: return 0 else: print ' ' * ( i + 1 ) + '*' * ( t * 2 + 1) return asterix_triangle(i-1, t + 1) asterix_triangle(5) 

Die Idee ist, dass Sie zwei Variablen verwenden. Eine, die i das bin, was jedes Mal, wenn die Funktion aufgerufen wird, subtrahiert und verwendet wird, um den Zyklus zu beenden. Die andere Variable wird verwendet, um eine inkrementelle Erhöhung zu haben. Sie verwenden dann i , um die Anzahl der Leerzeichen zu drucken, und t die Anzahl der Sterne.

Die Ausgabe wäre:

  * *** ***** ******* ********* 
 for i in range(10): print((' '*(10-i-1))+(('*')*((2*i)-1))) 

Die Ausgabe ist wie im Link dargestellt

  • Integer auf Basis-x-System mit Rekursion in Python
  • Rekursiv finden Sie die kth größte int in Liste der Liste der int in Python
  • Wie man sogar und ungerade Zahlen eines Arrays mit Rekursion summiert
  • Maximales Niveau der Rekursion in Python
  • Ist diese Funktion rekursiv, obwohl sie sich nicht nennt?
  • Python recursion return Keine Typ
  • Python: Rekursive Funktion, um die größte Zahl in der Liste zu finden
  • Rekursionsfunktion funktioniert nicht richtig
  • Rekursiver Generator zum Abflachen von verschachtelten Listen
  • Python rekursiv anhängen Liste Funktion
  • Python rekursive Funktion, die von 0 bis n?
  • Python ist die beste Programmiersprache der Welt.