Print Formatierungen

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
duodiscus
User
Beiträge: 97
Registriert: Sonntag 6. April 2014, 16:10

Guten Morgen zusammen,
ich habe vor mithilfe von print und for Schleifen eine Dreiecks Form mithilfe von X zu erstellen. Das Dreieck soll bei Eingabe von True als Steuerung die Dreiecksbasis oben haben und bei False genau umgekehrt. Beides soll rechtsbündig (!) ausgegeben werden. Und da liegt mein Problem. Ich hab alles eigentlich fertiggestellt, allerdings gibt er mir das Dreieck eher zentriert aus statt rechtsbündig! Könnt Ihr mir da helfen?

Code: Alles auswählen

def Dreieck_Ausgabe(n, Steuerung):
    if Steuerung == True:
        for i in range(n+1):
            print('%*s' %(n, i*'X'))
    elif Steuerung == False:
        for c in range(n+1):
            print('%*s' %(n, (n-c)*'X'))


## So soll es aussehen wenn es richtig ist!!!:

>>> Dreieck_Ausgabe(10, False)
XXXXXXXXXX
 XXXXXXXXX
  XXXXXXXX
   XXXXXXX
    XXXXXX
     XXXXX
      XXXX
       XXX
        XX
         X
          
>>> Dreieck_Ausgabe(10, True)
          
         X
        XX
       XXX
      XXXX
     XXXXX
    XXXXXX
   XXXXXXX
  XXXXXXXX
 XXXXXXXXX
XXXXXXXXXX
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@duodiscus: kann es sein, dass Du eine proportionale Schrift benutzt und deshalb Leerzeichen schmaler sind als 'X'?

Code: Alles auswählen

def Dreieck_Ausgabe(n, top_down=True):
    numbers = range(n+1)
    if not top_down:
        numbers = reversed(numbers)
    for i in numbers:
        print('%*s' %(n, i*'X'))
duodiscus
User
Beiträge: 97
Registriert: Sonntag 6. April 2014, 16:10

@Sirius3: Was ist eine proportionale Schrift? ^^

Deine Lösung sieht bei mir genau so aus wie meine bisherige:
Bild
http://pl.vc/2dm3y

Also formatiert schlicht die Shell das falsch durch eine andere Schriftart oder wie ?
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Für Shells und auch Editoren sollten deshalb immer Schriften verwendet werden, bei denen jedes Zeichen die gleiche Breite hat. Bei Deinem Bild siehst zu zum Beispiel, dass das 'l' in False viel weniger Platz braucht, als das 's' oder 'e'.
duodiscus
User
Beiträge: 97
Registriert: Sonntag 6. April 2014, 16:10

Habe die Schriften mal durchgetauscht. Hat keinen Unterschied gemacht...
BlackJack

@duodiscus: Doch das macht einen Unterschied!
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@duodiscus: Hast Du alle Schriften durchprobiert? Standardeinstellung ist normalerweise immer eine Monospace-Schrift, Du mußt also irgendwann aktiv die Schrift verändert haben.
duodiscus
User
Beiträge: 97
Registriert: Sonntag 6. April 2014, 16:10

Was wäre denn eine Monospace Schriftart? Kann die ja in den Shell Einstellungen ändern.
BlackJack

@duodiscus: Courier und Andale Mono beispielsweise.
duodiscus
User
Beiträge: 97
Registriert: Sonntag 6. April 2014, 16:10

Okay. Das war dann wohl der Fehler!
Antworten