lehrkraefte:snr:informatik:python:ersteschritte

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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]
Line 116: Line 116:
  
 <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
Line 182: Line 182:
 <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?
Line 188: Line 188:
  
 ===== 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.
Line 205: Line 208:
  
 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("")
  
Line 215: Line 218:
  
 <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>
  
Line 234: Line 231:
 <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>
Line 288: Line 285:
 </code> </code>
 </WRAP> </WRAP>
 +
 +2dNP bis hier am 01.09.2021
  
 ===== Expertenwissen: Variablen in formatierten Strings ===== ===== Expertenwissen: Variablen in formatierten Strings =====
Line 314: Line 313:
 </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]]
  
  • lehrkraefte/snr/informatik/python/ersteschritte.1630487233.txt.gz
  • Last modified: 2021/09/01 11:07
  • by Olaf Schnürer