Seite 1 von 1
print() formatiert ausgeben / vereinfacht ausgeben
Verfasst: Donnerstag 29. November 2018, 16:54
von lxks1337
Hallo, ich (Anfänger) habe mal ein Kopfrechenspiel geschrieben. Da ich nicht auf alle Fragen auf ein Mal eingehen will, fange ich ganz am Anfang an.
die Ausgabe zur Auswahl der Rechenaufgabe. Mir sind %xs / %xf / %xd bekannt, weshalb das dann aber im Endeffekt ausgesprochen umständlich aussieht.
so schaut das ganze aus:
Code: Alles auswählen
print("Waehlen Sie eine der vier Aufgabentypen aus: ", "%22s" % ("Addition..........(1)"),"\n%68s" % ("Subtraktion.......(2)"),"\n%68s" % ("Multiplikation....(3)"),"\n%68s" % ("Division..........(4)"))
Gibt es eine möglichkeit die Zahlenwerde zwischen % und s so zu *berechnen* dass man nicht mehr "ausprobieren" muss bis alles ordentlich aussieht, oder gibt es sogar eine alternative zu meiner Vorgehensweise?
MfG
Lukas
Re: print() formatiert ausgeben / vereinfacht ausgeben
Verfasst: Donnerstag 29. November 2018, 17:15
von narpfel
Wenn man das ganze ein wenig umformatiert, ist es ein wenig einfacher auszugeben, zum Beispiel so:
Code: Alles auswählen
In [2]: operations = ["Addition", "Subtraktion", "Multiplikation", "Division"]
In [3]: def print_operations(operations):
...: print(f"Wählen Sie einen der {len(operations)} Aufgabentypen aus:")
...: for i, operation in enumerate(operations, 1):
...: print(f"({i}) {operation}")
...:
In [4]: print_operations(operations)
Wählen Sie einen der 4 Aufgabentypen aus:
(1) Addition
(2) Subtraktion
(3) Multiplikation
(4) Division
In [5]:
Dieses Textmenü-Tutorial von
Hyperion (
siehe auch) ist auch einen Blick wert.
Re: print() formatiert ausgeben / vereinfacht ausgeben
Verfasst: Donnerstag 29. November 2018, 17:18
von kbr
Da gibt es mehrere Möglichkeiten, dies zu erreichen. Hier eine Variante:
Code: Alles auswählen
task = 'Waehlen Sie eine der vier Aufgabentypen aus: '
spacer = ' ' * len(task)
add = 'Addition'
sub = 'Subtraktion'
mul = 'Multiplikation'
div = 'Division'
menu = f'{task}{add:.<20}(1)\n{spacer}{sub:.<20}(2)\n{spacer}{mul:.<20}(3)\n{spacer}{div:.<20}(4)'
print(menu)
Edit: hier noch etwas eleganter:
Code: Alles auswählen
operations = ['Addition', 'Subtraktion', 'Multiplikation', 'Division']
task = 'Waehlen Sie eine der vier Aufgabentypen aus: '
spacer = ' ' * len(task)
print(task, end='')
print(f'\n{spacer}'.join(f'{operation:.<20}({n})' for n, operation in enumerate(operations, start=1)))
Re: print() formatiert ausgeben / vereinfacht ausgeben
Verfasst: Donnerstag 29. November 2018, 20:05
von Sirius3
Das ganze kann man auch mit optimaler Breite schreiben:
Code: Alles auswählen
def print_operations(operations):
print(f"Wählen Sie einen der {len(operations)} Aufgabentypen aus:")
width = max(map(len, operations)) + 4
for i, operation in enumerate(operations, 1):
print("{:.<{}s} ({})".format(operation + " ", width, i))
operations = ["Addition", "Subtraktion", "Multiplikation", "Division"]
print_operations(operations)