Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
lehrkraefte:snr:informatik:python:ersteschritte [2021/09/01 11:07] Olaf Schnürer [Formatierte Strings] |
lehrkraefte:snr:informatik:python:ersteschritte [2022/08/27 23:01] (current) Olaf Schnürer [Rechnen mit Variablen] |
| |
<WRAP round info> | <WRAP round info> |
Variablen muss ein Startwert zugoerdnet werden (sie müssen initialisiert werden), bevor sie verwendet werden können. Beispielsweise ist die Variable "b" im folgenden fehlerhaften Programm nicht initialisiert. | Variablen muss ein Startwert zugeordnet werden (sie müssen initialisiert werden), bevor sie verwendet werden können. Beispielsweise ist die Variable "b" im folgenden fehlerhaften Programm nicht initialisiert. |
<code python> | <code python> |
a = 7 | a = 7 |
<code python> | <code python> |
a = inputInt("Bitte eine ganze Zahl eingeben: ") | a = inputInt("Bitte eine ganze Zahl eingeben: ") |
print("Die ersten vier positiven Potenzen von " + str(a) + " sind " + str(a) + ", " + str(a*a) + ", " + str(a**3) + ", " + str(a**4) + ".") | print("Die ersten vier Potenzen zu positiven Exponenten von " + str(a) + " sind " + str(a) + ", " + str(a*a) + ", " + str(a**3) + ", " + str(a**4) + ".") |
</code> | </code> |
Gib im zweiten Programm bewusst ein Wort statt einer Zahl ein! Was ändert sich bei der Ausführung, wenn man ''inputInt'' durch ''inputFloat'' ersetzt? | Gib im zweiten Programm bewusst ein Wort statt einer Zahl ein! Was ändert sich bei der Ausführung, wenn man ''inputInt'' durch ''inputFloat'' ersetzt? |
| |
===== Formatierte Strings ===== | ===== Formatierte Strings ===== |
| |
| (Relativ schwierig: Nächstes Mal als Ziel Syntax wie <nowiki>%10.5f</nowiki> erklären. Nicht für Strings, auch nicht für Integers/Dezimalzahlen; letzteres geht auch mit <nowiki>%.0f</nowiki>.) |
| |
<WRAP round todo> | <WRAP round todo> |
Teste den folgenden Code. | Teste den folgenden Code. |
| |
a = 5 | a = 5 |
print("Die ersten vier positiven Potenzen von %d sind %d, %d, %d, %d, ..." % (a, a, a*a, a**3, a**4)) | print("Die ersten vier Potenzen zu positiven Exponenten von %d sind %d, %d, %d, %d." % (a, a, a*a, a**3, a**4)) |
print("") | print("") |
| |
| |
<WRAP round info> | <WRAP round info> |
Die ''%d'' und ''%f'' und ''%s'' in den Zeichenketten werden durch die Werte ersetzt, die nach dem Operator ''%'' hinter der Zeichenkette angegeben sind. | Der Operator ''%'' nimmt als linkes Argument einen String und als rechtes Argument einen Wert oder ein Tupel von Werten. Das Ergebnis ist ein String. |
| |
| Die ''%d'' und ''%f'' und ''%s'' in der Zeichenkette werden durch den/die Werte ersetzt, die nach dem Operator ''%'' angegeben sind. |
* ''%d'' erwartet einen Integer und gibt diesen als ''D''ezimalzahl aus (für die Experten: Ausgabe im Hexadezimalsystem per ''%x'', im Oktalsystem per ''%o'') | * ''%d'' erwartet einen Integer und gibt diesen als ''D''ezimalzahl aus (für die Experten: Ausgabe im Hexadezimalsystem per ''%x'', im Oktalsystem per ''%o'') |
* ''%f'' erwartet einen ''F''loat und gibt diesen mit sechs Nachkommastellen aus | * ''%f'' erwartet einen ''F''loat und gibt diesen mit sechs Nachkommastellen aus |
* ''%s'' erwartet einen ''S''tring und gibt diesen aus | * ''%s'' erwartet einen ''S''tring und gibt diesen aus |
Wenn mehrere der ''%d'', ''%f'', ''%s'' in einer Zeichenkette auftreten, sind die einzusetzenden Werte nach dem Operator ''%'' in Tupelschreibweise in der gewünschten Reihenfolge anzugeben. | Wenn mehrere der ''%d'', ''%f'', ''%s'' in einer Zeichenkette auftreten, sind die einzusetzenden Werte nach dem Operator ''%'' in Tupelschreibweise in der gewünschten Reihenfolge anzugeben. |
| |
Formal nimmt der Operator ''%'' als linkes Argument einen String und als rechtes Argument einen Wert oder ein Tupel von Werten; das Ergebnis ist ein Sring. | |
| |
Statt der Variablennamen "ff" und "ss" hätten wir auch die Namen "f" und "s" verwenden können - der Code wäre dann aber wohl schwerer zu verstehen (man könnte meinen, dass ''%f'' direkt mit dieser Variable zu tun hat und nicht nur eine Art Platzhalter für einen Float ist). | |
</WRAP> | |
| |
<WRAP round todo> | |
Verbessere die Ausgabe in dem obigen Programm, das die Potenzen $a, a^2, a^3,\dots$ einer eingegebenen Zahl $a$ ausgibt: Konkret soll kein Leerschlag zwischen Potenz und Komma ausgegeben werden. | |
</WRAP> | </WRAP> |
| |
<code python> | <code python> |
ff = 3.1415926535 # Float | ff = 3.1415926535 # Float |
print(">%.3f<" % ff) | print("Text davor%.3fText danach" % ff) |
print(">%10.3f<" % ff) | print("Text davor%10.3fText danach" % ff) |
print(">%-10.3f<" % ff) | print("Text davor%-10.3fText danach" % ff) |
print(">%010.3f<" % ff) | print("Text davor%010.3fText danach" % ff) |
print(">1234567890<") | print("Text davor0123456789Text danach") |
</code> | </code> |
</WRAP> | </WRAP> |
</code> | </code> |
</WRAP> | </WRAP> |
| |
| 2dNP bis hier am 01.09.2021 |
| |
===== Expertenwissen: Variablen in formatierten Strings ===== | ===== Expertenwissen: Variablen in formatierten Strings ===== |
</hidden> | </hidden> |
| |
| <hidden BMI-Berechnung> |
| <code python> |
| g = inputInt("Grösse in cm") |
| m = inputInt("Gewicht in kg") |
| h = g/100 # Grösse in m |
| BMI = m / (h**2) |
| print("Der BMI bei einer Grösse von %.2f m und einem Gewicht von %d kg beträgt %.1f." % (h, m, BMI)) |
| </code> |
| </hidden> |
| |
| ===== Link zur Kursseite ===== |
| |
| [[lehrkraefte:snr:informatik:glf21|Zur Kursseite]] |
| |