Python Aufgabe mit unausgefülltem Dreieck

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Unplayable
User
Beiträge: 51
Registriert: Mittwoch 24. Februar 2016, 22:09

Hi Leute,

Code: Alles auswählen

(Aufgabe2):         *
                    **
                    *  *
                    *   *
                    *     *
                    ********
ich habe die Aufgabe das Dreieck aus Aufgabe 2 zu zeichnen (habs jetzt nicht genau so hinbekommen). Wie das Dreieck ohne Lücke in der Mitte geht weiß ich:

Code: Alles auswählen

def dreieck(n):
      z=""
      for sterne in range(n):
            for zeile in range(n-1):
                  z=z+"*"

             print(z)
und dann eben der Aufruf. Aber ich hab leider keine Ahnung, wie ich nun die Lücke in der Mitte hinbekomme. Ich muss ja eigentlich nur was einfügen oder?

im Voraus vielen Dank für die Hilfe
Zuletzt geändert von Anonymous am Mittwoch 24. Februar 2016, 22:18, insgesamt 1-mal geändert.
Grund: Quelltext in Code-Tags gesetzt.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Du suchst so etwas hier!?

Code: Alles auswählen

def zeichne_dreieck(zeilen):
    # Parameter = Anzahl der Zeilen
    for anzahl in range(zeilen):

        if anzahl == 0:
            print("*")
        elif anzahl == zeilen - 1:
            print(zeilen * "*")
        else:
            print("*", (anzahl - 1) * " ", "*", sep="")

zeichne_dreieck(6)
Verstehst Du meinen Quelltext!?

Nachtrag:
Wahrscheinlich wirst Du für andere Aufgaben das hier gebrauchen können:
http://www.tutorialspoint.com/python/string_center.htm

In der Console liefert dann eine entsprechende Verwendung die dann folgende Zeile:

Code: Alles auswählen

>>> print("* *".center(9))
   * *   
Unplayable
User
Beiträge: 51
Registriert: Mittwoch 24. Februar 2016, 22:09

Oh Super, vielen vielen Dank für die Hilfe! :D

Ja jetzt verstehe ich es, nur die 2. Zeile ist mir noch unklar also mit dem elif. Ich habe vorher nicht daran gedacht bzw nicht gewusst, dass ich die for Schleife auch in Verbindung mit if/elif/else nehmen kann. Vielen Dank für die Mühe!
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@pixewakb: wenn Du den ersten und letzten Schleifendurchgang gesondert behandelst, kannst Du sie ja gleich außerhalb der Schleife behandeln:

Code: Alles auswählen

def zeichne_dreieck(zeilen):
    print("*")
    for anzahl in range(zeilen-1):
        print("*", anzahl * " ", "*", sep="")
    print(zeilen * "*")

zeichne_dreieck(6)
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Stimmt, bin ich nicht draufgekommen. Dein Quellcode ist definitiv einfacher zu lesen. Möglicherweise fällt da noch mal irgendwann bei mir der Groschen und ich programmiere etwas flüssiger. Danke!
Antworten