Python-Grundlagen: Werte, Variablen und Ausdrücke
AnfängerEinheit 1 von 10 in Kurs: Python-Programmierung – Schleifen, Funktionen, Listen und Dateien
Was du lernst
- Führe Python-Code in der interaktiven Shell und als gespeicherte Skriptdatei aus, verfolge den Ablauf eines Programms von oben nach unten, behebe Fehler mithilfe von Fehlermeldungen und erkläre Code mit Kommentaren.
- Code in der Shell und als Skript ausführenUnterscheide die interaktive Shell von einer gespeicherten Programmdatei, führe Code auf beide Arten aus und sage voraus, was jeweils auf dem Bildschirm erscheint.
- Fehlermeldungen lesen und häufige Fehler behebenErkenne Syntaxfehler, Laufzeitfehler und Logikfehler, lies einen Traceback von unten nach oben und behebe die häufigsten Anfängerfehler.
- Code mit Kommentaren erklärenSchreibe Kommentare, die beim Verständnis eines Programms helfen, und erkenne, welchen Text Python ignoriert und welchen es weiterhin als Code oder Daten behandelt.
- Code in der Shell und als Skript ausführen
- Erkenne die grundlegenden Arten von Werten, mit denen Python arbeitet (ganze Zahlen, Dezimalzahlen, Text und Wahrheitswerte), und schreibe sie jeweils richtig in Code.
- Werte und Datentypen unterscheidenBestimme den Datentyp eines Werts, prüfe ihn mit type() und erkläre, warum der Datentyp darüber entscheidet, was du mit einem Wert tun kannst.
- Ganze Zahlen und Dezimalzahlen schreibenSchreibe int- und float-Literale richtig, auch bei sehr großen und sehr kleinen Zahlen, und erkläre, warum float-Ergebnisse manchmal leicht abweichen.
- Text als Zeichenketten schreibenErstelle Zeichenketten mit einfachen, doppelten und dreifachen Anführungszeichen, füge Anführungszeichen und Sonderzeichen ein und unterscheide Text von Code.
- Werte und Datentypen unterscheiden
- Gib Werten durch Zuweisung Namen, wähle gültige und klare Namen und verfolge, wie sich die Werte von Variablen während der Ausführung eines Programms ändern.
- Variablen Werte zuweisenErstelle Variablen mit Zuweisungen, erkläre die Bedeutung des Gleichheitszeichens in Python und verwende Variablen in späteren Anweisungen.
- Gültige und aussagekräftige Variablennamen wählenBeachte Pythons Regeln und Stilkonventionen für Namen, vermeide Schlüsselwörter und eingebaute Namen und wähle Namen, die die Bedeutung eines Werts erkennen lassen.
- Variablen aktualisieren und einen Programmablauf nachvollziehenÄndere Variablen mit erweiterten Zuweisungen, tausche zwei Werte korrekt und verfolge ein Programm mit einer Ablauftabelle Zeile für Zeile, um seine Ausgabe vorherzusagen.
- Variablen Werte zuweisen
- Erstelle Ausdrücke mit Pythons arithmetischen und Textoperatoren, sage ihre Ergebnisse und Datentypen voraus und verwende die Reihenfolge der Rechenoperationen und Klammern, um das Gewünschte zu berechnen.
- Arithmetische Operatoren verwendenRechne mit +, -, *, /, //, % und ** und sage voraus, ob das jeweilige Ergebnis ein int oder ein float ist.
- Die Reihenfolge der Rechenoperationen anwendenSage voraus, wie Python einen Ausdruck mit mehreren Operatoren auswertet, und verwende Klammern, damit die gewünschte Berechnung erfolgt.
- Mengen mit abrundender Division und Rest aufteilenTeile mit // und % eine Menge in ganze Gruppen und einen Rest auf und wende die Operatoren auf Zeit, Geld und Ziffern an.
- Text und Zahlen in Ausdrücken kombinierenVerknüpfe und wiederhole Zeichenketten mit + und * und sage voraus, was passiert, wenn ein Ausdruck ganze Zahlen, Gleitkommazahlen und Zeichenketten mischt.
- Arithmetische Operatoren verwenden
- Schreibe vollständige kurze Programme, die Daten von Benutzerinnen und Benutzern abfragen, sie in den richtigen Datentyp umwandeln, damit rechnen und die Ergebnisse übersichtlich ausgeben.
- Werte zwischen Datentypen umwandelnVerwende int(), float(), str() und round(), um einen Wert umzuwandeln oder zu runden, sage das Ergebnis voraus und erkenne Umwandlungen, die fehlschlagen.
- Ergebnisse mit print() ausgebenZeige Text und Werte mit print() an, steuere Abstände und Zeilenabschlüsse mit sep und end und gestalte gut lesbare Ausgaben.
- Eingaben lesen und ein vollständiges Programm schreibenFrage mit input() Daten ab, wandle sie vor der Berechnung um und verbinde Eingabe, Verarbeitung und Ausgabe zu einem kurzen funktionsfähigen Programm.
- Werte zwischen Datentypen umwandeln
Variablen in Python einfach erklärt
1Code ausführen und das Ergebnis verstehen
Ein kurzes Programm lässt sich leichter verstehen, wenn du weißt, wo du es ausführst und was du auf dem Bildschirm erwarten kannst. Beginne mit schnellen Versuchen in der Python-Shell und speichere dann eine Folge von Anweisungen, damit du sie erneut ausführen kannst. Lerne, eine unsichtbare Berechnung von einer ausgegebenen Anzeige zu unterscheiden, Hinweise in Fehlermeldungen zu lesen und nützliche Kommentare für die nächste Person zu hinterlassen, die deinen Code liest. Das könntest du selbst eine Woche später sein.
1.1 Die Shell und ein gespeichertes Programm
Ein Programm ist eine Folge von Anweisungen. Der Python-Interpreter liest Python-Code und führt diese Anweisungen aus. Verwende Python 3, wo ein Aufruf wie print("Hello") Klammern hat.
Eine Zeile in der Shell ausprobieren
Die interaktive Shell, auch REPL genannt, zeigt >>>, wenn sie für Python-Code bereit ist. Gib nach der Eingabeaufforderung eine Anweisung ein und drücke die Eingabetaste. Das >>> gibst du nicht selbst ein.
>>> 3 + 4
7
>>> "hi"
'hi'
Die Shell zeigt den Wert eines Ausdrucks automatisch an. Sie setzt eine Zeichenkette in Anführungszeichen, um sie als Text kenntlich zu machen. Die Eingabeaufforderung ... bedeutet, dass eine Anweisung unvollständig ist und Python auf weitere Eingaben wartet. Beispielsweise kann zu einer öffnenden Klammer noch die schließende fehlen. Gib bei einer bereiten Eingabeaufforderung exit() ein, um die Shell zu verlassen.
Die Shell ist nützlich, um einen einzelnen Ausdruck zu testen. Sie kann einen Befehlsverlauf speichern, aber dieser Verlauf ist kein gespeichertes Programm. Setze Anweisungen, die du erneut gemeinsam ausführen möchtest, in ein Skript.
Ein Skript speichern und ausführen
Ein Skript ist eine reine Textdatei mit Code und der Endung .py. Verwende einen Code-Editor wie IDLE, Thonny oder VS Code. IDLE gehört zur Standarddistribution von Python. Eine Textverarbeitung kann gerade Anführungszeichen in typografische Anführungszeichen ändern; diese können Python-Zeichenketten nicht begrenzen.
Gib diese Zeilen im Editor ein und speichere das Skript:
print("Hello, world!")
print("Welcome to Python.")
Wähle in IDLE Run → Run Module oder drücke F5. Die Ausgabe lautet:
Hello, world!
Welcome to Python.
Python führt diese Anweisungen von oben nach unten aus. Jeder print()-Aufruf zeigt seinen Text an und beginnt eine neue Zeile. Wenn du die Anweisungen umkehrst, kehrt sich die Ausgabe um.
Du kannst ein gespeichertes Skript auch von einem Terminal aus ausführen. Öffne den Ordner mit deinem Skript und gib den Interpreterbefehl gefolgt vom gespeicherten Namen ein. Unter macOS oder Linux ist der Befehl üblicherweise python3 gefolgt vom Skriptnamen; unter Windows wird häufig python oder py verwendet. Der Terminalbefehl startet den Interpreter und gibt an, welches Skript er ausführen soll. Dieser Befehl gehört an die Eingabeaufforderung des Terminals, nicht hinter Pythons >>>. Ein Online-Editor kann stattdessen eine Schaltfläche zum Ausführen bereitstellen.
Entscheiden, was ausgegeben werden muss
Ein Skript, das nur 3 + 4 enthält, berechnet einen Wert, zeigt aber nichts an. Schreibe print(3 + 4), um 7 anzuzeigen. Ebenso zeigt print("hi") den Text ohne die umgebenden Anführungszeichen. Die Anführungszeichen gehören zum Code; sie markieren Anfang und Ende des Textes.
Python beachtet die Groß- und Kleinschreibung. print und Print sind verschiedene Namen, sodass Print("hi") einen NameError erzeugt, sofern dieser eigenständige Name nicht definiert wurde. Übernimm Schreibweise und Groß- und Kleinschreibung eingebauter Namen genau wie angegeben.
Auch vorangestellte Leerzeichen haben eine Bedeutung. Beginne bei diesen einfachen Folgen von Anweisungen jede Anweisung am linken Rand. Eine versehentliche Einrückung vor print("hi") kann IndentationError: unexpected indent verursachen. Leerzeichen innerhalb des Textes in Anführungszeichen sind etwas anderes: Python gibt sie als Teil der Nachricht aus.
Wichtige Erkenntnisse
- Die Shell zeigt Ausdruckswerte automatisch an; ein Skript benötigt
print(), um sie anzuzeigen. - Speichere wiederverwendbare Anweisungen als Python-Skript in einer reinen Textdatei.
- Führe Terminalbefehle im Terminal und Python-Anweisungen in der Shell oder im Editor aus.
- Die Reihenfolge der Anweisungen, Groß- und Kleinschreibung sowie vorangestellte Leerzeichen können den Ablauf ändern.
1.2 Mit einer Fehlermeldung die nächste Korrektur finden
Ein Fehler in einem Programm ist ein Programmfehler. Ihn zu finden und zu beheben, heißt Fehlersuche und Fehlerbehebung. Bestimme zuerst, welche Art von Problem vorliegt: Code, den Python nicht lesen kann, eine Operation, die während der Ausführung fehlschlägt, oder ein Ergebnis, das schlicht falsch ist.
Drei Arten von Problemen
| Art | Was passiert | Beispiel |
|---|---|---|
| Syntaxfehler | Python kann den Code nicht lesen; das Skript startet nicht. | In print("hi" ist eine Klammer nicht geschlossen. |
| Laufzeitfehler | Die Ausführung erreicht eine Operation, die fehlschlägt, und stoppt dort. | 10 / 0 löst ZeroDivisionError aus. |
| Logikfehler | Der Code läuft, berechnet aber das falsche Ergebnis. | 88 + 92 / 2 ist nicht das arithmetische Mittel von 88 und 92. |
Python prüft vor der Ausführung die Syntax des gesamten Skripts. Ein Syntaxfehler nahe dem Ende verhindert sogar die Ausführung der ersten Zeile. Bei einem Laufzeitfehler ist das anders: Frühere Anweisungen wurden bereits ausgeführt und ihre Ausgabe bleibt sichtbar.
Beim arithmetischen Mittel erfolgt die Division vor der Addition. Python berechnet 92 / 2 als 46.0 und addiert dann 88, sodass 134.0 herauskommt. Der gewünschte Ausdruck ist (88 + 92) / 2, der 90.0 ergibt. Es gibt keine Fehlermeldung, weil beide Ausdrücke zulässig sind. Eine Rechnung von Hand liefert dir einen Vergleich für das Programm.
Einen Traceback von unten lesen
Angenommen, der Code lautet:
name = "Ada"
print("Hello", nme)
Der Traceback endet mit einer Meldung wie NameError: name 'nme' is not defined. Die letzte Zeile nennt den Fehler und erklärt, was fehlgeschlagen ist. Darüber zeigt Python die Stelle, die Zeilennummer und den Code. Vergleiche nme mit dem Namen, dem zuvor ein Wert zugewiesen wurde: name. Wenn du die Schreibweise korrigierst, lautet die Ausgabe Hello Ada.
Die gemeldete Stelle ist dort, wo Python das Problem bemerkt hat. Sieht eine Zeile richtig aus, prüfe auch die Zeile davor. Ein zuvor fehlendes Anführungszeichen oder eine fehlende Klammer kann dazu führen, dass Python den folgenden Code nicht versteht. Aktuelle Versionen zeigen oft direkt auf die nicht geschlossene öffnende Klammer.
Den Fehlertyp als Suchhilfe nutzen
- NameError: Python findet einen Namen nicht, wie bei
pirnt,Printoder einer Variablen, die vor ihrer Zuweisung verwendet wird. Prüfe Schreibweise, Groß- und Kleinschreibung und Reihenfolge der Zeilen. - TypeError: Die Operation funktioniert mit diesen Datentypen nicht.
"5" + 5versucht, Text und eine Zahl zu verknüpfen. - ValueError: Eine Umwandlung erhält unbrauchbaren Inhalt.
int("abc")erhält Text, aber der Text beschreibt keine ganze Zahl. - ZeroDivisionError: Ein Divisor ist null. Untersuche den Wert nach
/,//oder%.
Prüfe bei einem SyntaxError, ob jedes öffnende Anführungszeichen und jede öffnende Klammer geschlossen wird. print('It's late') beendet die Zeichenkette beim Apostroph in „It's“; verwende print("It's late"). Python-2-Code wie print "hi" braucht die Klammern von Python 3: print("hi"). Ersetze typografische Anführungszeichen durch gerade. Entferne bei einer unerwarteten Einrückung die versehentlichen Leerzeichen am Anfang der Zeile.
Behebe ein Problem und führe das Programm erneut aus. Der erste Fehler kann verhindert haben, dass Python einen zweiten erreicht. Erstelle ein Programm jeweils um wenige Zeilen weiter, damit du bei jedem neuen Fehler nur einen kleinen Bereich untersuchen musst.
Wichtige Erkenntnisse
- Ein Syntaxfehler verhindert den Start eines Skripts; ein Laufzeitfehler stoppt es, nachdem frühere Zeilen ausgeführt wurden.
- Lies den Fehlertyp in der letzten Zeile des Tracebacks und untersuche dann den gemeldeten Code.
- Ein Programm kann erfolgreich laufen und trotzdem einen Logikfehler enthalten.
- Prüfe Berechnungen anhand einfacher erwarteter Ergebnisse.
- Behebe einen Fehler und führe das Programm erneut aus, bevor du weiteren Code änderst.
1.3 Kommentare, die den Zweck erklären
Code sagt Python, was es tun soll. Ein Kommentar erklärt einem Menschen, warum der Code es tut oder was ein Wert bedeutet. Python ignoriert einen Kommentar bei der Ausführung des Programms.
Den Kommentar klar kennzeichnen
Ein Kommentar beginnt mit # außerhalb einer Zeichenkette und reicht bis zum Ende der Zeile. Er kann allein stehen oder auf eine Anweisung folgen:
# Convert a temperature from Fahrenheit to Celsius.
fahrenheit = 68
celsius = (fahrenheit - 32) * 5 / 9
print(celsius) # Show the converted temperature.
Der Kommentar in einer eigenen Zeile erklärt den Zweck des Programms. Der Kommentar am Zeilenende folgt auf Code in derselben Zeile. PEP 8, der Stilratgeber von Python, empfiehlt mindestens zwei Leerzeichen vor einem # am Zeilenende und ein Leerzeichen danach. Durch diese Abstände ist die Grenze leicht zu erkennen.
Ein Rautezeichen innerhalb von Anführungszeichen ist gewöhnlicher Text:
print("#1 is not a comment") # This part is a comment.
Die Ausgabe lautet #1 is not a comment. Python liest die gesamte Zeichenkette in Anführungszeichen einschließlich ihres Rautezeichens als Daten. Den Text nach dem späteren # ignoriert es, weil dieses Zeichen außerhalb der Anführungszeichen steht.
Bedeutung statt offensichtlicher Schritte erklären
Vergleiche diese Kommentare:
count = count + 1 # Add 1 to count.
attempts = attempts + 1 # One more failed login.
Der erste Kommentar wiederholt eine Operation, die bereits im Code sichtbar ist. Der zweite ergänzt einen Grund für die Änderung. Wer den Code liest, weiß nun, was gezählt wird. Ein klarer Name wie attempts übernimmt ebenfalls einen Teil der Arbeit, die bei einem ungenauen Namen den Kommentaren bliebe.
Nützliche Kommentare erklären eine Einheit, eine Entscheidung oder einen Zweck, die der Code allein nicht deutlich macht. Zum Beispiel verbindet tax_rate = 0.08 # 8% sales tax einen Dezimalsatz mit seiner Bedeutung. Wenn du diesen Satz später änderst, prüfe auch den Kommentar. Ein veralteter Kommentar kann in die falsche Richtung führen, selbst wenn der Code funktioniert.
Die Ausführung einer Zeile vorübergehend verhindern
Um eine Anweisung auszukommentieren, setze # davor:
print("Start")
# print("Checking this step")
print("Finish")
Nur Start und Finish erscheinen. Durch das Auskommentieren bleibt eine Zeile verfügbar, während du das Programm ohne sie testest. Entferne alten deaktivierten Code, wenn er nicht mehr hilft; sonst muss später geraten werden, ob er noch gebraucht wird.
Beginne für eine Notiz über mehrere Zeilen jede Zeile mit #:
# Read the temperature in degrees Fahrenheit.
# Keep the calculation in Celsius for the next step.
Text in dreifachen Anführungszeichen ist etwas anderes. Eine Zeile wie """Convert a temperature.""" ist ein Zeichenkettenausdruck, kein Kommentar. Solche Zeichenketten können an bestimmten Stellen als Dokumentation dienen und heißen Docstrings. Verwende #, wenn du einen gewöhnlichen Kommentar meinst. Eine Zeichenkette, die nichts verwendet, kann in einem Skript unsichtbar bleiben. Dadurch kann sie wie ein Kommentar aussehen, obwohl Python sie als Wert liest.
Wichtige Erkenntnisse
- Ein
#außerhalb einer Zeichenkette beginnt einen Kommentar, der am Ende der Zeile endet. - Erkläre einen Zweck, eine Entscheidung oder eine Einheit, die der Code nicht bereits deutlich macht.
- Das Auskommentieren einer Anweisung verhindert ihre Ausführung.
- Aktualisiere Kommentare, wenn sich der Code ändert.
2Verschiedene Arten von Werten erkennen und schreiben
Python behandelt eine Anzahl, einen Messwert und ein Stück Text als verschiedene Arten von Daten. Ihre Datentypen beeinflussen, wie du sie schreibst und was eine Operation mit ihnen tun kann. Lerne, einen Wert an seiner Schreibweise zu erkennen, seinen Datentyp zu prüfen und eine geeignete Form für eine konkrete Aufgabe zu wählen. Schreibe anschließend Zahlen und Zeichenketten sorgfältig, auch mit Dezimalpunkten, Anführungszeichen und Sonderzeichen, damit Python dieselben Daten liest, die du eingeben wolltest.
2.1 Werte haben Datentypen
Ein Wert ist ein Datum, zum Beispiel 42, 3.5 oder "Ada". Jeder Wert hat einen Datentyp, der Python sagt, um welche Art von Daten es sich handelt. Ein Literal ist ein Wert, der direkt im Code steht. Seine Schreibweise ist wichtig: 7, 7.0 und "7" haben verschiedene Datentypen.
Vier grundlegende Datentypen
| Datentyp | Art der Daten | Beispiele |
|---|---|---|
int | Ganze Zahl | 42, 0, -7 |
float | Gleitkommazahl | 3.5, 2.0, -0.25 |
str | Zeichenkette oder Text | "Ada", 'hello', "42" |
bool | Boolescher Wahrheitswert | True, False |
Ein Dezimalpunkt macht 2.0 zu einem float, obwohl der Zahlenwert gleich der ganzen Zahl 2 ist. Anführungszeichen machen "42" zu Text, obwohl die Zeichen wie eine Zahl aussehen. Der Datentyp ergibt sich aus dem geschriebenen Wert, nicht daraus, wofür jemand ihn verwenden könnte.
Boolesche Literale haben einen großen Anfangsbuchstaben und keine Anführungszeichen. True ist ein boolescher Wert; "True" ist eine Zeichenkette. Das kleingeschriebene true ist ein Name. Wird er ohne Definition verwendet, ergibt das einen NameError. Ein Vergleich kann einen booleschen Wert erzeugen: 3 < 5 wird zu True ausgewertet.
Python nach dem Datentyp fragen
Die eingebaute Funktion type() gibt den Datentyp ihres Arguments an. In der Shell zeigen diese Aufrufe:
>>> type(7)
<class 'int'>
>>> type(7.0)
<class 'float'>
>>> type("7")
<class 'str'>
>>> type(True)
<class 'bool'>
Verwende in einem Skript print(), um diese Ergebnisse zu sehen:
print(type(42), type("42"))
Das gibt <class 'int'> <class 'str'> aus. Das Wort class ist Teil der Ausgabe von Python; die Namen int und str bezeichnen die Datentypen.
Datentypen ändern die Bedeutung von Operatoren
Bei Zahlen addiert +. Bei zwei Zeichenketten verknüpft es Text:
print(5 + 3)
print("5" + "3")
Die erste Zeile gibt 8 aus. Die zweite gibt 53 aus. Der zweite Ausdruck enthält zwei Textwerte, also verknüpft Python ihre Zeichen. Es untersucht die Ziffernzeichen nicht, um dann zu entscheiden, sie zu addieren.
"5" + 5 löst einen TypeError aus: Ein Operand ist Text und der andere eine ganze Zahl. Prüfe die Datentypen, wenn sich eine Operation anders verhält als erwartet. Insbesondere beweisen Ziffern auf dem Bildschirm nicht, dass der gespeicherte Wert eine Zahl ist.
Einen zur Bedeutung passenden Datentyp wählen
Verwende eine ganze Zahl für eine Anzahl und eine Gleitkommazahl für einen Messwert, der einen Bruchteil enthalten kann. Speichere einen Identifikator wie eine Postleitzahl als Text. Die Zeichenkette "02134" bewahrt die führende null; sie gehört zur Kennung und nicht zu einer Berechnung. Auch Telefonnummern können Satzzeichen enthalten, die erhalten bleiben sollen.
Die Shell kann 'Ada' zeigen, während print("Ada") den Wert Ada zeigt. Beide beziehen sich auf denselben Text. Die Anführungszeichen der Shell kennzeichnen eine Zeichenkette; print() stellt die Zeichen für Leserinnen und Leser dar. Keine der beiden Anzeigen ändert den gespeicherten Datentyp.
Wichtige Erkenntnisse
- Die Schreibweise eines Literals bestimmt seinen Datentyp:
7,7.0und"7"unterscheiden sich. type()gibt den Datentyp eines Werts an.- Bei Operatoren spielen Datentypen eine Rolle: Zahlen zu addieren und Text zu verknüpfen sind verschiedene Operationen.
- Schreibe boolesche Literale als
TrueundFalse, ohne Anführungszeichen. - Speichere Identifikatoren wie Postleitzahlen als Zeichenketten, damit ihre Zeichen erhalten bleiben.
2.2 Zahlen, Dezimalpunkte und Genauigkeit von Gleitkommazahlen
Python hat getrennte Datentypen für ganze Zahlen und Gleitkommazahlen. Wenn du sie klar schreibst, verhinderst du sowohl Syntaxfehler als auch weniger offensichtliche Änderungen der Daten.
Anzahlen als ganze Zahlen schreiben
Eine ganze Zahl hat keinen Bruchteil. Schreibe einen int ohne Dezimalpunkt, wie in 42, 0 oder -7. Ganze Zahlen in Python können so groß werden, wie es der verfügbare Speicher erlaubt; es gibt keine feste Begrenzung ihrer Stellenzahl. Addition, Subtraktion und Multiplikation ganzer Zahlen sind exakt. Zum Beispiel ergibt 2 ** 100 die exakte ganze Zahl 1267650600228229401496703205376.
Verwende keine Kommas zur Tausendergruppierung. Schreibe 1000000 oder verwende zur besseren Lesbarkeit Unterstriche: 1_000_000. Die Unterstriche ändern den Wert nicht.
Ein dezimales Literal für eine ganze Zahl ungleich null darf nicht mit einer null beginnen. 02134 zu schreiben ist ein Syntaxfehler. Sind diese Ziffern ein Identifikator, bei dem die erste null wichtig ist, schreibe "02134" als Text.
Größen mit Bruchteilen als Gleitkommazahlen schreiben
Ein float verwendet einen Dezimalpunkt oder die Exponentenschreibweise. 3.5, 2.0 und -0.25 sind Gleitkommazahlen. Python akzeptiert auch .5 und 5., was 0.5 und 5.0 bedeutet; die zusätzliche null macht die Schreibweise oft leichter lesbar. Verwende Gleitkommazahlen für Messwerte wie Temperatur oder Entfernung und für einfache Berechnungen mit Preisen, die Bruchteile enthalten.
Python-Code verwendet einen Dezimalpunkt. Ein Komma trennt Werte; es kennzeichnet niemals den Nachkommateil. Zum Beispiel:
x = 3.5
print(x)
gibt 3.5 aus, während x = 3,5 ein Wertepaar erzeugt, das als (3, 5) angezeigt wird. Ebenso erzeugt x = 1,000 den Wert (1, 0), nicht eintausend. Diese Anweisungen können ausgeführt werden. Das Ausbleiben einer Fehlermeldung bedeutet also nicht, dass die Zahl richtig geschrieben wurde.
Wissenschaftliche Schreibweise verwenden
Der Buchstabe e bedeutet in einem Zahlenliteral „mal zehn hoch“:
| Literal | Wert |
|---|---|
1.5e3 | 1500.0 |
2.5e-3 | 0.0025 |
1e3 | 1000.0 |
Ein Literal mit Exponent ist ein float, selbst wenn sein Wert eine ganze Zahl ist. Das Minuszeichen nach e ergibt einen negativen Exponenten, sodass 2.5e-3 gleich 2,5 dividiert durch 1.000 bedeutet.
Mit begrenzter Genauigkeit rechnen
Gleitkommazahlen speichern Zahlen binär mit begrenzter Genauigkeit, üblicherweise etwa 15–17 signifikanten Dezimalstellen. Viele Dezimalbrüche, darunter 0.1, haben in dieser Speicherung keine exakte Darstellung. Daher:
print(0.1 + 0.2)
print(round(0.1 + 0.2, 2))
werden 0.30000000000000004 und dann 0.3 ausgegeben. Der winzige Unterschied entsteht durch die gespeicherten Näherungswerte. round(..., 2) rundet das Ergebnis für die Anzeige auf zwei Nachkommastellen; es ändert nicht, wie Gleitkommazahlen Werte speichern. Behalte die ursprüngliche Berechnung bis zum Ende bei und runde dann das angezeigte Ergebnis.
Ein Vorzeichen kann auch ein Operator sein. Das unäre Minus kehrt das Vorzeichen eines Werts um: -7 ist minus sieben. In 5 - -3 subtrahiert das erste Minus und das zweite ergibt minus drei, sodass das Ergebnis 8 ist. Unterscheide dieses Vorzeichen vom negativen Exponenten in einem Literal wie 2.5e-3.
Wichtige Erkenntnisse
- Schreibe im Code Dezimalpunkte und verwende zur Gruppierung großer Zahlen Unterstriche statt Kommas.
- Ganze Zahlen in Python haben keine feste Begrenzung der Stellenzahl; der verfügbare Speicher begrenzt sie dennoch.
- Ein Literal mit einem Dezimalpunkt oder
eist ein float. - Viele Dezimalbrüche werden als Gleitkommazahlen nur näherungsweise dargestellt; runde das angezeigte Endergebnis.
- Das unäre Minus kehrt das Vorzeichen eines Werts um.
2.3 Anführungszeichen und Zeichen in Zeichenketten
Eine Zeichenkette ist eine Folge von Zeichen: Buchstaben, Ziffern, Leerzeichen, Satzzeichen und anderen Symbolen. Anführungszeichen sagen Python, wo diese Folge beginnt und endet. Die Zeichen darin sind Daten, auch wenn sie wie Python-Code aussehen.
Passende Anführungszeichen wählen
Einfache und doppelte Anführungszeichen erzeugen denselben Datentyp str. Sowohl 'Ada' als auch "Ada" enthalten dieselben drei Zeichen. Beginne und beende eine Zeichenkette mit derselben Art von Anführungszeichen.
Wähle die äußeren Anführungszeichen so, dass sich ein inneres Anführungszeichen leicht schreiben lässt:
print("It's late")
print('She said "hi"')
Die Ausgabe lautet:
It's late
She said "hi"
In print('It's late') schließt der Apostroph nach It die Zeichenkette zu früh. Python kann den Rest der Anweisung dann nicht lesen. Doppelte äußere Anführungszeichen halten den Apostroph innerhalb des Textes.
Eine Escape-Sequenz verwenden
Ein umgekehrter Schrägstrich beginnt eine Escape-Sequenz. Diese gebräuchlichen Sequenzen stehen jeweils für ein Zeichen:
| Im Code geschrieben | Zeichen in der Zeichenkette |
|---|---|
\n | Zeilenumbruch |
\t | Tabulator |
\\ | Ein umgekehrter Schrägstrich |
\' | Einfaches Anführungszeichen |
\" | Doppeltes Anführungszeichen |
Zum Beispiel gibt print("Line 1\nLine 2") zwei Zeilen aus. Der umgekehrte Schrägstrich und das n im Code stehen zusammen für einen Zeilenumbruch, nicht für einen sichtbaren Buchstaben n. Ebenso gibt print('It\'s late') den Text It's late aus: Das mit einem umgekehrten Schrägstrich versehene Anführungszeichen wird zu einem Zeichen, ohne die Zeichenkette zu beenden.
Um einen wörtlichen umgekehrten Schrägstrich gefolgt von einem Buchstaben auszugeben, schreibe den umgekehrten Schrägstrich doppelt. print("A\\B") zeigt A\B. Der erste umgekehrte Schrägstrich signalisiert, dass der nächste ein Zeichen sein soll.
Zeilenumbrüche beibehalten oder keine Zeichen verwenden
Mit dreifachen Anführungszeichen kann eine Zeichenkette mehrere physische Zeilen umfassen. Die Zeilenumbrüche werden Teil ihres Werts:
print("""Line one
Line two""")
Das gibt Line one und Line two in getrennten Zeilen aus. Dreifache einfache Anführungszeichen funktionieren ebenfalls. Dreifache Anführungszeichen erzeugen weiterhin eine Zeichenkette; sie erzeugen keinen #-Kommentar.
Die leere Zeichenkette "" hat keine Zeichen. Sie unterscheidet sich von " ", das ein Leerzeichen enthält. Dieses Leerzeichen ist in der Ausgabe möglicherweise schwer zu sehen, bleibt aber Teil der Daten.
Text von einem Ausdruck oder Namen unterscheiden
Vergleiche diese Anweisungen:
name = "Ada"
print("3 + 4")
print(3 + 4)
print("name")
print(name)
Die Ausgabe lautet 3 + 4, dann 7, dann name, dann Ada. Die Anführungszeichen machen das erste und das dritte Argument zu wörtlichem Text. Ohne Anführungszeichen wertet Python eine Berechnung aus oder schlägt eine Variable nach.
Vergisst du die Anführungszeichen um eine Nachricht wie Hello, sucht Python nach einem Namen. Wenn Hello nicht definiert wurde, löst print(Hello) einen NameError aus. Schreibe print("Hello"), wenn du dieses Wort ausgeben möchtest.
Zeichenketten können Zeichen aus vielen Sprachen und Symbole wie "café", "naïve" und "°F" enthalten. Daneben können Ziffern stehen: "Room 101" ist durchgehend Text. Ein Ziffernzeichen in Anführungszeichen wird nicht zu einer ganzen Zahl.
Wichtige Erkenntnisse
- Einfache und doppelte Anführungszeichen erzeugen beide Zeichenketten; die öffnende und schließende Art müssen übereinstimmen.
- Wähle äußere Anführungszeichen oder Escape-Sequenzen so, dass ein inneres Anführungszeichen im Text bleibt.
- Zu den gebräuchlichen Escape-Sequenzen gehören
\n,\tund\\. - Dreifache Anführungszeichen erhalten Zeilenumbrüche in einer Zeichenkette.
- Eine leere Zeichenkette enthält keine Zeichen; ein Leerzeichen ist ein Zeichen.
- Text in Anführungszeichen sind Daten; Namen und Berechnungen ohne Anführungszeichen werden ausgewertet.
3Werte benennen und ihre Änderungen verfolgen
Variablen ermöglichen es einem Programm, einen Wert erneut zu verwenden und ihm eine Bedeutung zu geben, die beim Lesen erkennbar ist. Eine Zuweisung verbindet einen Namen mit dem Ergebnis eines Ausdrucks; eine spätere Zuweisung kann diese Verbindung ändern. Lerne, diese Schritte der Reihe nach zu lesen, Namen zu wählen, die Python akzeptiert, und ein gespeichertes Ergebnis von einer Formel zu unterscheiden, die erneut ausgeführt werden müsste. Ablauftabellen machen diese Änderungen sichtbar, einschließlich der Schritte, die für einen sicheren Tausch zweier Werte nötig sind.
3.1 Eine Zuweisung gibt einem Wert einen Namen
Eine Variable ist ein Name, der auf einen Wert im Speicher verweist. Eine Zuweisung verbindet einen Namen links von = mit dem Wert eines Ausdrucks rechts davon.
Zuerst die rechte Seite lesen
In age = 30 wertet Python 30 aus und lässt dann age auf diese ganze Zahl verweisen. Die linke Seite muss eine zulässige Stelle für die Zuweisung eines Werts sein. 30 = age ist ein Syntaxfehler: Du kannst dem Literal 30 keinen neuen Wert zuweisen.
Das Zeichen = bedeutet „weise zu“. Es fragt nicht, ob zwei Werte gleich sind. Für die Gleichheitsprüfung wird == verwendet. Wenn du die Zuweisung als Arbeitsrichtung liest, werden Anweisungen wie x = x + 1 verständlich: Verwende rechts den alten Wert von x, berechne den neuen Wert und weise ihn dann links x zu.
Betrachte ein Rechteck:
width = 4
height = 2.5
area = width * height
print(area)
Nach der ersten Zeile verweist width auf 4. Nach der zweiten verweist height auf 2.5. Für die dritte Zeile schlägt Python beide aktuellen Werte nach und wertet 4 * 2.5 aus, was 10.0 ergibt. Es weist dieses Ergebnis area zu. Die letzte Zeile gibt 10.0 aus.
Die Zuweisung selbst gibt den Wert nicht aus. Verwende den Namen in einem späteren print()-Aufruf, wenn du ihn anzeigen möchtest.
Vor der Verwendung eines Namens einen Wert zuweisen
Python folgt der Reihenfolge der Anweisungen. Dieser Code schlägt in der ersten Zeile fehl:
print(total)
total = 10
Zu diesem Zeitpunkt hat total keinen Wert. Die spätere Zuweisung kann einer früheren Anweisung keinen Wert liefern. Verschiebe total = 10 vor print(total).
Eine Shell kann Namen aus früheren Versuchen behalten. Ein gespeichertes Programm sollte die benötigten Zuweisungen in seiner eigenen Ausführungsreihenfolge bereitstellen, damit sein Ergebnis nicht davon abhängt, was du zuvor eingegeben hast.
Einem bestehenden Namen erneut einen Wert zuweisen
Eine erneute Zuweisung lässt einen Namen auf einen neuen Wert verweisen:
score = 10
score = 15
Nun ist score gleich 15; der frühere Wert 10 ist über diesen Namen nicht mehr erreichbar. Für eine Aktualisierung auf Grundlage des alten Werts:
x = 3
x = x + 1
Die zweite Zeile wertet 3 + 1 aus und weist dann x den Wert 4 zu. Es gibt weder eine zu lösende Gleichung noch einen Widerspruch.
Ein Datentyp gehört zum Wert, nicht dauerhaft zum Variablennamen. Python erlaubt temp = 3 gefolgt von temp = "three"; danach gibt type(temp) den Datentyp str an. Ein Programm lässt sich meist leichter nachvollziehen, wenn Bedeutung und erwarteter Datentyp eines Namens gleich bleiben.
Ein kopierter Wert ist keine zukünftige Verknüpfung
a = 5
b = a
a = 10
print(a, b)
Das gibt 10 5 aus. Bei b = a verweisen beide Namen auf die aktuelle ganze Zahl 5. Eine erneute Zuweisung an a ändert, auf welchen Wert a verweist; b verweist weiterhin auf 5. Ebenso speichert die Zuweisung von width * height das Ergebnis, keine Formel, die sich bei einer Änderung von width selbst aktualisiert.
Eine Anweisung kann mehreren Namen Werte zuweisen. a = b = 0 gibt beiden Namen den Wert 0. In x, y = 1, 2 werden die Werte den Namen anhand ihrer Position zugeordnet, sodass x gleich 1 und y gleich 2 wird.
Wichtige Erkenntnisse
- Eine Zuweisung wertet den Ausdruck rechts aus, bevor sie seinen Wert dem Namen links zuweist.
- Eine Variable muss einen Wert haben, bevor ein Ausdruck sie verwendet.
- Eine erneute Zuweisung ändert den Wert, der über einen Namen erreichbar ist.
- Die Zuweisung einer Variablen an eine andere verknüpft ihre künftigen Zuweisungen nicht.
- Ein Wert hat einen Datentyp; derselbe Name kann später auf einen Wert eines anderen Datentyps verweisen.
3.2 Namen, die Python akzeptiert und Menschen verstehen
Ein Name muss Pythons Grammatik entsprechen und Menschen helfen, das Programm zu verstehen. Das sind zwei getrennte Anforderungen: Python kann einen Namen akzeptieren, der den Code trotzdem schwer lesbar macht.
Die Namensregeln beachten
Ein Variablenname darf Buchstaben, Ziffern und Unterstriche enthalten. Er darf nicht mit einer Ziffer beginnen, kein Leerzeichen enthalten und keine Satzzeichen wie einen Bindestrich verwenden.
| Name | Was passiert |
|---|---|
total, item_count, price2, _temp | Gültige Namen |
2nd_place | Ungültig: beginnt mit einer Ziffer |
first name | Ungültig: enthält ein Leerzeichen |
first-name | Wird als Subtraktion gelesen, nicht als ein Name |
Python akzeptiert auch Buchstaben aus anderen Alphabeten. Englische Buchstaben sind eine häufige Wahl für Bezeichner. Welche Buchstaben du auch wählst, behalte die Schreibweise bei: age, Age und AGE sind drei verschiedene Namen. Die Zuweisung age = 30 definiert Age nicht.
Schlüsselwörter und eingebaute Namen unterscheiden
Ein Schlüsselwort ist für Pythons Grammatik reserviert. Du kannst es nicht als Variablennamen verwenden. Die fest reservierten Schlüsselwörter sind:
False None True and as assert async await break class
continue def del elif else except finally for from
global if import in is lambda nonlocal not or pass
raise return try while with yield
Du musst die Liste nicht auswendig lernen, bevor du ein Programm schreibst. Fürs Erste reicht es zu erkennen, dass ein Name wie class nicht zur Verfügung steht: class = 3 ist ein Syntaxfehler. Editoren zeigen Schlüsselwörter oft in einer besonderen Farbe an.
Namen eingebauter Funktionen, darunter print, input, int, str, type, sum und max, sind keine Schlüsselwörter. Python erlaubt dir, ihnen Werte zuzuweisen, aber diese Zuweisung verdeckt die ursprüngliche Funktion:
print = 5
print("hi")
Die zweite Zeile versucht, die ganze Zahl 5 aufzurufen, und löst einen TypeError aus. Wähle einen Namen, der deine Daten beschreibt, etwa total, damit die eingebaute Funktion verfügbar bleibt. Ein Neustart der Shell macht versehentliche Ersetzungen aus Versuchen rückgängig.
Namen einheitlich schreiben
PEP 8 empfiehlt snake_case für Variablennamen: kleingeschriebene Wörter, die durch Unterstriche verbunden sind, wie in hourly_rate und first_name. Der Unterstrich hält einen Namen aus mehreren Wörtern ohne Leerzeichen zusammen.
Eine Konstante ist ein Wert, der unverändert bleiben soll. Üblicherweise wird ihr Name in Großbuchstaben geschrieben:
SALES_TAX_RATE = 0.08
Python sperrt diesen Namen nicht. Eine spätere Zuweisung kann ihn ändern; die Großbuchstaben teilen den Lesenden eine Absicht mit.
Bedeutung und Einheiten angeben
hours_worked = 38 sagt dir mehr als h = 38. Ein Name wie distance_miles oder temp_f nennt auch die Einheit. So sinkt die Gefahr, Meilen wie Kilometer oder Fahrenheit wie Celsius zu behandeln. Kurze Namen wie x und y eignen sich für Koordinaten oder eine kurze Formel, bei der ihre Bedeutung bereits klar ist.
Vermeide fast identische Namen wie total und totl. Ein Tippfehler kann einen NameError erzeugen oder versehentlich eine andere vorhandene Variable verwenden. PEP 8 rät auch von den einzelnen Buchstaben l, O und I ab, die wie Ziffern aussehen können. Einige zusätzliche Buchstaben können eine Berechnung viel leichter nachvollziehbar machen.
Wichtige Erkenntnisse
- Beginne einen Namen mit einem Buchstaben oder Unterstrich und verwende danach Buchstaben, Ziffern oder Unterstriche.
- Schlüsselwörter sind reserviert; eingebaute Namen können erneut verwendet werden, sollten aber verfügbar bleiben.
- Verwende aussagekräftige Namen in
snake_caseund gib sinnvolle Einheiten an. - Konstantennamen in Großbuchstaben zeigen eine Absicht; sie verhindern keine erneute Zuweisung.
3.3 Aktualisierungen, Ablauftabellen und Tausch
Eine Aktualisierung berechnet aus dem aktuellen Wert einer Variablen ihren nächsten Wert. Wenn du jede Aktualisierung der Reihe nach verfolgst, kannst du die Ausgabe vorhersagen und Logikfehler finden, bevor du das Programm ausführst.
Vor der Aktualisierung einen Anfangswert zuweisen
count = count + 1 addiert eins zum alten Zählerwert. Diese Änderung ist ein Inkrement. Eine Variable, die eine laufende Summe sammelt, ist ein Akkumulator. Gib ihr einen Anfangswert wie total = 0, bevor du Werte addierst.
Eine erweiterte Zuweisung verbindet eine Operation mit einer Zuweisung. Bei Zahlen hat x += 3 dieselbe Wirkung wie x = x + 3. Zu den verfügbaren Formen gehören +=, -=, *=, /=, //=, %= und **=.
score = 10
score -= 3
score **= 2
print(score)
Die Subtraktion ändert score zu 7. Die Potenzierung ändert den Wert dann zu 49, das ausgegeben wird. Ohne die anfängliche Zuweisung würde die Aktualisierung versuchen, einen nicht definierten Namen zu verwenden, und einen NameError auslösen.
Der gewählte Operator beeinflusst auch den Datentyp. Ausgehend von n = 7 erzeugt n /= 2 den float 3.5. Erneut ausgehend von n = 7 erzeugt n //= 2 die ganze Zahl 3. Python hat keinen Inkrementoperator ++: x++ ist ungültig. ++x wendet das unäre Plus zweimal an und aktualisiert x nicht; verwende x += 1.
Eine Anweisung nach der anderen nachvollziehen
Eine Ablauftabelle hält die Variablenwerte nach jeder Anweisung fest. Schreibe eine Spalte pro Variable und eine Zeile pro Schritt:
price = 20
quantity = 3
total = price * quantity
price = 25
total += 5
print(total, price)
| Zuletzt ausgeführte Anweisung | price | quantity | total |
|---|---|---|---|
price = 20 | 20 | Nicht zugewiesen | Nicht zugewiesen |
quantity = 3 | 20 | 3 | Nicht zugewiesen |
total = price * quantity | 20 | 3 | 60 |
price = 25 | 25 | 3 | 60 |
total += 5 | 25 | 3 | 65 |
Die Ausgabe lautet 65 25. Die Änderung von price hat die frühere Multiplikation nicht wiederholt. Die Variable total enthielt den berechneten Wert 60; sie war keine mit price verknüpfte Tabellenformel. Erst ihre spätere Aktualisierung änderte den Wert zu 65.
Werte beim Nachvollziehen von Hand die rechte Seite anhand der Zeile direkt darüber aus und aktualisiere dann den Namen, dem ein Wert zugewiesen wird. Lass alle anderen Spalten unverändert. Vergleiche die Vorhersage mit der tatsächlichen Ausgabe des Programms.
Beim Tausch beide Werte erhalten
Angenommen, a = 1 und b = 2. Der Versuch a = b gefolgt von b = a ergibt 2 2. Nach der ersten Zuweisung ist der ursprüngliche Wert von a über diesen Namen nicht mehr erreichbar, sodass die zweite Zeile den neuen Wert zurückkopiert.
Eine temporäre Variable hält den ursprünglichen Wert verfügbar:
a = 1
b = 2
temp = a
a = b
b = temp
print(a, b)
Das gibt 2 1 aus. Du kannst auch a, b = b, a schreiben. Python wertet beide Werte rechts aus, bevor es einem der Namen links einen Wert zuweist. So stehen beide ursprünglichen Werte für den Tausch zur Verfügung. Verfolge die Variante mit der temporären Variablen, wenn du genau sehen möchtest, wo jeder ursprüngliche Wert erhalten bleibt.
Wichtige Erkenntnisse
- Eine erweiterte Zuweisung benötigt einen bereits vorhandenen Wert.
- Verwende
+= 1für ein Inkrement;++aktualisiert keine Python-Variable. - Eine Ablauftabelle hält Werte nach jeder Anweisung fest.
- Die Änderung einer Eingabevariablen berechnet ein zuvor gespeichertes Ergebnis nicht neu.
- Der Operator einer Aktualisierung kann den Datentyp des Ergebnisses ändern.
- Ein Tausch benötigt beide ursprünglichen Werte: Speichere einen vorübergehend oder verwende eine gleichzeitige Zuweisung.
4Berechnungen mit den richtigen Operatoren erstellen
Ein Ausdruck kombiniert Werte zu einem Ergebnis. Python verwendet vertraute arithmetische Grundideen, aber du musst Multiplikation, Potenzen und Division mit den richtigen Zeichen schreiben. Lerne, wie die Reihenfolge der Operatoren eine Berechnung steuert, wie abrundende Division und Rest Mengen aufteilen und wie Datentypen die Bedeutung von Addition und Multiplikation ändern. Wenn du Ausdrücke in kleinen Schritten durcharbeitest, erkennst du, ob Ergebnis, Datentyp und Bedeutung deiner Absicht entsprechen.
4.1 Arithmetische Zeichen und Datentypen von Ergebnissen
Ein Ausdruck wird zu einem Wert ausgewertet. Er kann ein einzelnes Literal, eine Variable oder eine Kombination wie 2 + 3 sein. Das + ist ein Operator; die Werte, auf die er angewendet wird, sind seine Operanden.
Den Operator wählen
Pythons arithmetische Operatoren funktionieren wie folgt:
| Operation | Ausdruck | Ergebnis |
|---|---|---|
| Addition | 7 + 2 | 9 |
| Subtraktion | 7 - 2 | 5 |
| Multiplikation | 7 * 2 | 14 |
| Division | 7 / 2 | 3.5 |
| Abrundende Division | 7 // 2 | 3 |
| Rest | 7 % 2 | 1 |
| Potenzierung | 7 ** 2 | 49 |
Schreibe die Multiplikation ausdrücklich mit *. Eine mathematische Schreibweise wie 2x funktioniert nicht als Python-Multiplikation. Schreibe 2 * x oder 2 * (x + 1). Bei x = 1 versucht 2(x + 1), die ganze Zahl 2 wie eine Funktion aufzurufen, und löst einen TypeError aus.
Der Potenzoperator ist **, nicht ^. Zum Beispiel ist 7 ** 2 gleich 49, während 7 ^ 2 gleich 5 ist, weil das Zirkumflexzeichen eine andere Operation ausführt. Ein Programm kann also laufen und dabei ein unbeabsichtigtes Ergebnis berechnen.
Datentyp und Zahl vorhersagen
Eine Division mit / ergibt bei ganzzahligen Operanden einen float, selbst wenn die Division aufgeht: 6 / 2 ist 3.0. Verwende // für eine ganzzahlige Anzahl voller Gruppen: 6 // 2 ist 3.
Bei zwei ganzzahligen Operanden ergeben Addition, Subtraktion, Multiplikation, abrundende Division und Rest ganzzahlige Ergebnisse. Das gilt auch für nicht negative ganzzahlige Potenzen: 2 ** 10 ergibt die exakte ganze Zahl 1024. Ein negativer Exponent ändert das: 2 ** -1 ergibt den float 0.5.
Bei gewöhnlichen arithmetischen Berechnungen mit einer ganzen Zahl und einer Gleitkommazahl wird mit Gleitkommawerten gerechnet. 3 + 4.0 ergibt 7.0; 7.0 // 2 ergibt 3.0. Abrundende Division beschreibt, wie der Quotient gerundet wird, und verspricht nicht, dass sein Datentyp immer int ist.
Mit einem gebrochenen Exponenten lässt sich eine Wurzel aus einer positiven Zahl berechnen. 4 ** 0.5 ergibt 2.0 und 2 ** 0.5 ergibt ungefähr 1.4142135623730951.
Eine Berechnung aus benannten Werten aufbauen
Ein Auto fährt 287 Meilen mit 10,25 Gallonen:
miles = 287
gallons = 10.25
mpg = miles / gallons
print("Miles per gallon:", mpg)
Die Division berechnet 28.0, die Ausgabe lautet also Miles per gallon: 28.0. Die Namen bezeichnen die Größen und die ausgegebene Beschriftung nennt die Einheit des Ergebnisses. Die Multiplikation 28.0 * 10.25 ergibt wieder 287 Meilen und dient als Kontrolle der Division.
Ein Divisor null führt bei /, // und % zu einem Fehler. Zum Beispiel löst 10 / 0 einen ZeroDivisionError aus. Untersuche bei diesem Fehler eine Variable, die als Divisor verwendet wird.
Leerzeichen um Operatoren ändern ihre Bedeutung nicht: 2+3 und 2 + 3 ergeben beide 5. Leerzeichen um = und die meisten Operatoren machen die Teile leichter lesbar. Sie können keinen Operator ersetzen; 2 x bedeutet weiterhin keine Multiplikation.
Wichtige Erkenntnisse
- Verwende
*für die Multiplikation und**für Potenzen. /ergibt bei der Division ganzer Zahlen einen float, auch bei einem exakten Quotienten.//ergibt mit zwei ganzen Zahlen eine ganze Zahl; ein float als Operand ergibt einen float.- Ein negativer ganzzahliger Exponent erzeugt einen float als Ergebnis.
/,//und%lösen bei einem Divisor null einenZeroDivisionErroraus.
4.2 Operationen ordnen und Formeln gruppieren
Python berechnet einen Ausdruck nicht einfach vom linken bis zum rechten Rand. Der Vorrang legt fest, welche Operationen zuerst stattfinden. Mit Klammern kannst du eine andere Gruppierung wählen oder die beabsichtigte Gruppierung verdeutlichen.
Die Stufen der Reihe nach anwenden
Für die hier eingeführten Operatoren gilt diese Reihenfolge:
- Ausdrücke in Klammern.
- Potenzen,
**. - Unäre Vorzeichen, etwa das Minus in
-x. - Multiplikations- und Divisionsoperationen:
*,/,//,%. - Addition und Subtraktion:
+,-.
Werte bei 3 + 4 * 2 ** 2 den Ausdruck 2 ** 2 aus, um 4 zu erhalten. Der Ausdruck wird zu 3 + 4 * 4. Die Multiplikation ergibt 16 und die Addition 19. Bei (3 + 4) * 2 ** 2 ist die Summe in Klammern 7; die Potenz ist 4; das Produkt ist 28.
Operatoren auf der Multiplikations- und Divisionsstufe haben denselben Vorrang. Rechne von links nach rechts: 8 / 2 * 4 bedeutet (8 / 2) * 4 und ergibt 16.0. Die Multiplikation wird nicht vor der Division ausgeführt. Ebenso ergibt 100 / 10 / 5 den Wert 2.0 und 10 - 4 - 3 den Wert 3.
Mit Potenzen und Vorzeichen sorgfältig umgehen
Aufeinanderfolgende Potenzen werden von rechts nach links gruppiert. 2 ** 3 ** 2 bedeutet 2 ** (3 ** 2). Zuerst ergibt 3 ** 2 den Wert 9; dann ergibt 2 ** 9 den Wert 512. Eine Gruppierung von links würde 64 ergeben, also ein anderes Ergebnis.
Ein vorangestelltes Minuszeichen wird nach einer folgenden Potenzierung angewendet: -2 ** 2 bedeutet -(2 ** 2) und ergibt -4. In (-2) ** 2 machen die Klammern minus zwei zur Basis, sodass das Ergebnis 4 ist. Ein Minus nach ** kann zum Exponenten gehören: 2 ** -1 ergibt 0.5.
Die vollständige Gruppierung einer Formel übertragen
Für ein arithmetisches Mittel müssen beide Werte addiert werden, bevor durch zwei dividiert wird:
average = (88 + 92) / 2
Die Summe ist 180, die anschließende Division ergibt 90.0. Ohne Klammern dividiert 88 + 92 / 2 nur 92 und ergibt 134.0.
Ein Bruchstrich gruppiert ebenfalls alles darüber und darunter. Ein Zähler mit a + b und ein Nenner mit c + d werden zu (a + b) / (c + d). Lässt du eines der Klammerpaare weg, kann sich ändern, welche Terme dividiert werden.
Dasselbe Problem tritt bei einer Temperaturumrechnung auf:
celsius = (98.6 - 32) * 5 / 9
Die Subtraktion ergibt 66.6, die Multiplikation 333.0 und die Division 37.0. Ohne die Gruppierung ergibt 98.6 - 32 * 5 / 9 den Wert 80.82222222222222.
Die richtigen Gruppierungszeichen verwenden
Runde Klammern gruppieren einen Ausdruck. Eckige und geschweifte Klammern haben in Python andere Bedeutungen. Zum Beispiel erzeugt [2 + 3] * 4 den Wert [5, 5, 5, 5], nicht 20.
Klammern um eine Operation, die ohnehin zuerst ausgeführt würde, lassen das Ergebnis unverändert: Sowohl (2 * 3) + 1 als auch 2 * 3 + 1 ergeben 7. Klammern, die die Gruppierung ändern, können den Wert ändern: 2 * (3 + 1) ergibt 8. Ergänze Klammern, wo sie die Bedeutung der Berechnung leichter erkennbar machen.
Wichtige Erkenntnisse
- Werte zuerst Klammern, dann Potenzen, unäre Vorzeichen, Multiplikations- und Divisionsoperationen und schließlich Addition und Subtraktion aus.
- Rechne innerhalb einer Stufe von links nach rechts; Potenzen werden jedoch von rechts nach links gruppiert.
- Ein vorangestelltes Minus unterscheidet sich von einer negativen Basis:
-2 ** 2und(-2) ** 2sind verschieden. - Gruppiere beim Übertragen eines Bruchs den gesamten Zähler und Nenner.
- Verwende runde Klammern, um Berechnungen zu gruppieren.
4.3 Ganze Gruppen und der Rest
Abrundende Division und Rest beantworten zwei zusammengehörige Fragen: Wie viele ganze Gruppen passen hinein und was bleibt nach diesen Gruppen übrig? Bei nicht negativen ganzzahligen Mengen ist das Paar für Zeit, Geld, Verpackungen und Ziffern nützlich.
Quotient und Rest gemeinsam bestimmen
17 // 5 ergibt 3, die Anzahl voller Fünfergruppen. 17 % 5 ergibt 2, die verbleibende Menge. Die beiden Ergebnisse ergeben zusammen wieder die Ausgangsmenge:
print((17 // 5) * 5 + 17 % 5)
Der Ausdruck ergibt 17: drei Fünfergruppen plus zwei. Allgemeiner ist für ganze Zahlen und einen Divisor ungleich null der Ausdruck (a // b) * b + a % b gleich a. Nutze diese Beziehung, um beide Antworten zu prüfen.
Konkrete Mengen aufteilen
Für 135 Minuten:
hours = 135 // 60
minutes = 135 % 60
Es sind 2 volle Stunden und 15 Minuten übrig. Der Divisor ist 60, weil eine Stunde 60 Minuten enthält. Die Division mit / ergibt 2.25, was Stunden mit einem Bruchteil ausdrückt; die verbleibenden Minuten werden dadurch nicht gesondert angegeben.
Dieselbe Struktur funktioniert mit einer anderen Gruppengröße:
| Menge | Volle Gruppen | Rest |
|---|---|---|
| 347 Cent, 100 Cent pro Euro | 347 // 100 ergibt 3 Euro | 347 % 100 ergibt 47 Cent |
| 75 Eier, 12 pro Karton | 75 // 12 ergibt 6 volle Kartons | 75 % 12 ergibt 3 Eier |
Die Anzahl der Kartons ist die Anzahl der vollen Kartons. Falls du auch für die übrigen Eier einen Behälter brauchst, ist das eine andere Frage als die nach der Anzahl voller Gruppen.
Stellenwert und Parität nutzen
Bei einer positiven ganzen Zahl trennt die Division durch zehn ihre letzte Ziffer ab. 1234 % 10 ergibt 4 und 1234 // 10 ergibt 123. Die erneute Kombination 123 * 10 + 4 ergibt wieder 1234.
Für jede ganze Zahl n ist n % 2 gleich 0, wenn sie gerade ist, und gleich 1, wenn sie ungerade ist. Das funktioniert auch für negative Zahlen: -7 % 2 ist 1. Bei ganzen Zahlen und einem positiven Divisor b liegt der Rest im Bereich von 0 bis einschließlich b - 1.
Division mit negativen Zahlen verstehen
Die abrundende Division rundet in Richtung minus unendlich ab, nicht in Richtung null. Da minus sieben dividiert durch zwei −3,5 ist, ergibt -7 // 2 den Wert -4. Der Rest ist dann 1, weil -4 * 2 + 1 gleich -7 ist.
Ein Rest ungleich null hat das Vorzeichen des Divisors. Bei einem negativen Divisor ergibt 7 % -2 den Wert -1 und 7 // -2 den Wert -4. Auch diese ergeben zusammen wieder den Ausgangswert: -4 * -2 + -1 ist 7.
Das unterscheidet sich von der Umwandlung eines Quotienten mit int(): int(-7 / 2) ergibt -3, weil die Umwandlung die Nachkommastellen in Richtung null abschneidet.
Beide Operatoren akzeptieren auch Gleitkommazahlen. 7.5 // 2 ist 3.0 und 7.5 % 2 ist 1.5. Sie stehen auf derselben Vorrangstufe wie * und /, sodass 5 * 3 + 17 % 5 den Wert 17 ergibt. Der Operator % bedeutet hier Rest, nicht Prozent: Berechne 8 Prozent eines Preises mit price * 0.08 oder price * 8 / 100.
Wichtige Erkenntnisse
//ergibt einen abgerundeten Quotienten;%ergibt den zugehörigen Rest.- Für ganze Zahlen ergibt
(a // b) * b + a % bwiedera, wennbungleich null ist. - Wähle einen Divisor, der zur Gruppengröße oder Einheitenumrechnung passt.
- Die abrundende Division rundet negative Quotienten nach unten, nicht in Richtung null.
- Ein Rest ungleich null hat das Vorzeichen des Divisors.
- Ein Rest ist etwas anderes als ein Prozentsatz.
4.4 Text verknüpfen, Text wiederholen und Datentypen prüfen
Das Zeichen eines Operators ist nur ein Teil seiner Bedeutung. Python berücksichtigt auch die Datentypen seiner Operanden. Die Operatoren + und * funktionieren mit Zeichenketten, führen dabei aber Textoperationen aus.
Zeichenketten mit Plus verknüpfen
Die Verkettung hängt eine Zeichenkette an das Ende einer anderen:
print("ab" + "cd")
print("Hello" + "Ada")
print("Hello " + "Ada")
Diese Zeilen geben abcd, HelloAda und Hello Ada aus. Die Verkettung fügt von selbst kein Leerzeichen hinzu. Das Leerzeichen im dritten Ergebnis stammt vom letzten Zeichen in "Hello ".
Für Ziffernzeichen gilt dieselbe Regel: "5" + "3" ergibt die Zeichenkette "53". Ohne Anführungszeichen ergibt 5 + 3 die ganze Zahl 8. Wähle Zahlenwerte, wenn du rechnen möchtest, und Zeichenketten, wenn du Text meinst.
Eine Zeichenkette durch Multiplikation wiederholen
Eine mit einer ganzen Zahl multiplizierte Zeichenkette wiederholt ihre Zeichen. "3" * 2 ergibt "33", während 3 * 2 den Wert 6 ergibt. Die Anzahl der Wiederholungen kann auf beiden Seiten stehen: 3 * "ab" ergibt "ababab". Eine Wiederholung null Mal ergibt die leere Zeichenkette, also ist "ab" * 0 gleich "".
Die Anzahl der Wiederholungen muss eine ganze Zahl sein. "ab" * 2.5 löst einen TypeError aus, ebenso wie "ab" * "cd". Bei dieser Operation gibt es keine gebrochene Anzahl von Kopien.
Operationen der Reihe nach kombinieren
Auch bei diesen Ausdrücken hat die Multiplikation Vorrang vor der Addition:
print("-" * 4 + "Menu" + "-" * 4)
Zuerst erzeugt jede Wiederholung "----". Dann verknüpfen die Additionen die drei Zeichenketten und ergeben ----Menu----. Die Reihenfolge der Verknüpfungen erhält die Reihenfolge ihrer Zeichen.
Für eine Berechnung, die Teil einer Zeichenkette wird:
print("7" + str(3 * 2))
Die innere Berechnung ergibt die ganze Zahl 6. str(6) erzeugt die Zeichenkette "6". Schließlich ergibt die Verkettung "76". Sie ergibt nicht 13, weil das letzte + zwei Zeichenketten als Operanden hat.
Mit nicht kompatiblen Datentypen bewusst umgehen
"Age: " + 30 löst einen TypeError aus. Wandle die ganze Zahl vor der Verkettung um:
print("Age: " + str(30))
Das ergibt Age: 30. Alternativ zeigt print("Age:", 30) die beiden Werte mit einem Leerzeichen dazwischen. Das ist das Verhalten von print() bei getrennten Argumenten und keine Textaddition.
Ganze Zahlen und Gleitkommazahlen können bei gewöhnlichen arithmetischen Berechnungen gemischt werden: 2 * 3.0 ergibt den float 6.0. Python wandelt eine Zeichenkette mit einer Zahl bei + nicht auf dieselbe Weise in eine Zahl um. Wenn du mit "30" rechnen musst, wandle sie zuerst in einen numerischen Datentyp um.
Die Subtraktion funktioniert mit diesen Zeichenkettenoperanden nicht. "10" - 3 löst einen TypeError aus, obwohl die Zeichen 10 eine Zahl beschreiben könnten. Um einen gemischten Ausdruck vorherzusagen, bestimme den Datentyp jedes Operanden, werte die Operationen mit höherem Vorrang aus und prüfe die Datentypen bei der nächsten Operation erneut. Eine Umwandlung kann ändern, welcher Regel der nächste Operator folgt.
Wichtige Erkenntnisse
+verknüpft Zeichenketten, ohne Leerzeichen hinzuzufügen.*wiederholt eine Zeichenkette eine ganzzahlige Anzahl von Malen.- Wandle für eine Textverkettung eine Zahl mit
str()um oder übergib sie separat anprint(). - Beachte beim Nachvollziehen eines gemischten Ausdrucks sowohl den Vorrang als auch die Datentypen der Operanden.
5Daten lesen, umwandeln und verständlich ausgeben
Ein vollständiges Programm braucht eine Möglichkeit, Daten zu empfangen und ein Ergebnis auszugeben. Eingaben kommen als Text an. Entscheide daher, ob das Programm diesen Text beibehalten oder in eine Zahl umwandeln muss. Führe die Berechnung mit Werten der richtigen Datentypen aus und zeige das Ergebnis dann mit einer klaren Beschriftung und sinnvollen Abständen. Mit Umwandlungen, Rundung und den Optionen von print() kann ein kurzes Programm eingegebene Antworten in eine Ausgabe verwandeln, die man verstehen und prüfen kann.
5.1 Umwandlungen erzeugen neue Werte
Eine Typumwandlung, auch Casting genannt, erzeugt einen Wert eines anderen Datentyps. Mit den Funktionen int(), float() und str() kannst du die Form wählen, die für die nächste Operation benötigt wird.
Das umgewandelte Ergebnis behalten
x = "42"
int(x)
print(type(x))
Das gibt weiterhin <class 'str'> aus. Die Umwandlung hat eine ganze Zahl erzeugt, aber keine Zuweisung hat sie gespeichert. Schreibe x = int(x), damit x auf diese ganze Zahl verweist, oder weise sie einem anderen Namen zu, wenn du beide Formen behalten möchtest.
Eine numerische Umwandlung wählen
int() akzeptiert eine Zeichenkette, die eine ganze Zahl darstellt, einschließlich eines optionalen Vorzeichens und umgebender Leerzeichen. int("42"), int("-12") und int(" 42 ") ergeben 42, -12 und 42.
Ein Dezimalpunkt in einer Zeichenkette verhindert die direkte Umwandlung in eine ganze Zahl. int("3.5") und int("4.0") lösen einen ValueError aus; das gilt auch für int("abc") und int(""). Dass 4,0 mathematisch ganzzahlig ist, macht "4.0" nicht zu einer Zeichenkette in der Form einer ganzen Zahl.
float() akzeptiert Dezimaltext und Exponentenschreibweise. float("3.5") ergibt 3.5, float("3") ergibt 3.0 und float("1e3") ergibt 1000.0. Die Funktion wandelt auch ganze Zahlen um: float(7) ergibt 7.0. Ein Dezimalkomma führt zu einem Fehler: float("3,5") löst einen ValueError aus.
Bewusst abschneiden oder runden
Die Umwandlung einer Gleitkommazahl in int entfernt ihren Nachkommateil in Richtung null. int(3.99) ergibt 3 und int(-3.99) ergibt -3. Dabei wird nicht die nächstgelegene ganze Zahl gewählt. Um Dezimaltext umzuwandeln und dann die Nachkommastellen abzuschneiden, verwende int(float("3.5")), was 3 ergibt.
round() wählt einen nächstgelegenen Wert. round(3.7) ergibt die ganze Zahl 4; round(3.14159, 2) ergibt den float 3.14. Das zweite Argument legt die Anzahl der Nachkommastellen fest.
Liegt ein Wert genau in der Mitte, wählt Python den geraden Nachbarwert: round(2.5) ergibt 2, während round(3.5) den Wert 4 ergibt. Als Gleitkommazahlen gespeicherte Dezimalbrüche liegen möglicherweise nicht genau in der Mitte. round(2.675, 2) ergibt aufgrund seiner binären Darstellung 2.67.
| Ausdruck | Ergebnis | Grund |
|---|---|---|
int(-3.5) | -3 | Abschneiden in Richtung null |
round(-3.5) | -4 | Nächste ganze Zahl; bei Gleichstand zur geraden Zahl |
-7 // 2 | -4 | Quotient nach unten abrunden |
Diese Operationen beantworten verschiedene Fragen. Wähle die Operation, die zum gewünschten Ergebnis passt, besonders wenn negative Werte möglich sind.
Für die Verkettung in Text umwandeln
str(42) erzeugt "42" und str(3.0) erzeugt "3.0". Nach der Umwandlung verknüpft + ihre Zeichen:
print("7" + "3")
print(int("7") + int("3"))
print(str(7) + str(3))
print(float("7") + 3)
Die Ausgaben sind 73, 10, 73 und 10.0. Die Umwandlungen entscheiden, ob das letzte + Text oder Zahlen erhält.
Ein ValueError weist auf ungeeigneten Inhalt für eine Umwandlung hin, etwa bei int("abc"). Ein TypeError weist auf eine Operation hin, die mit ihren Operanden nicht kompatibel ist, etwa bei "5" + 5. Nutze diesen Unterschied, um zu entscheiden, ob du den Eingabetext untersuchst oder die Operation änderst.
Wichtige Erkenntnisse
- Eine Umwandlung gibt einen neuen Wert zurück; weise ihn zu, wenn du ihn behalten musst.
int()schneidet bei Gleitkommazahlen die Nachkommastellen in Richtung null ab und benötigt für die direkte Umwandlung einer Zeichenkette Text in Form einer ganzen Zahl.float()akzeptiert Text mit Dezimalpunkt und Exponentenschreibweise.round()verwendet den nächstgelegenen Wert und rundet bei genauem Gleichstand zur geraden Zahl.str()liefert Text für die Verkettung.ValueErrorundTypeErrorbezeichnen verschiedene Arten von Fehlern.
5.2 Steuern, was print() anzeigt
print() zeigt Werte an, damit Menschen sie lesen können. Seine Argumente sind die Werte oder Ausdrücke innerhalb der Klammern. Kommas trennen die Argumente; Python wertet sie aus, bevor es ihre Ergebnisse anzeigt.
Werte mit hilfreichen Beschriftungen anzeigen
print("Total:", 5)
print(3 + 4)
print("3 + 4")
Die Zeilen zeigen Total: 5, 7 und 3 + 4. Eine Beschriftung sagt den Lesenden, was ein Wert bedeutet. Eine Berechnung ohne Anführungszeichen wird ausgewertet; ein Ausdruck in Anführungszeichen wird als Text angezeigt.
Standardmäßig setzt print() ein Leerzeichen zwischen Argumente und endet mit einem Zeilenumbruch. Es wandelt jeden Wert für die Anzeige um, sodass print("Total:", 5) Text und eine ganze Zahl ohne ausdrückliches str() mischen kann.
Vergleiche print("Total:" + str(5)), das Total:5 ausgibt. Hier erstellt + eine Zeichenkette, bevor print() sie erhält. Die Verkettung liefert kein automatisches Leerzeichen und es gibt nur ein Argument zur Anzeige.
Das Trennzeichen festlegen
Das benannte Argument sep legt den Text fest, der zwischen Argumente gesetzt wird:
print("a", "b", sep="-")
print(1, 2, 3, sep=", ")
print("A", 12, sep="")
Die Ausgabe lautet:
a-b
1, 2, 3
A12
Verwende den Namen sep. Die Schreibweise print("a", "b", "-") liefert einen dritten Wert, sodass das Ergebnis a b - ist. Ein leeres Trennzeichen fügt die angezeigten Argumente direkt zusammen; es entfernt keine Leerzeichen, die bereits in ihren Zeichenketten stehen.
Den Zeilenabschluss festlegen
Das benannte Argument end ändert, was auf den letzten Wert folgt. Standardmäßig ist das ein Zeilenumbruch. Ein leerer Abschluss hält die nächste Ausgabe in derselben Zeile:
print("a", end="")
print("b")
Das zeigt ab in einer Zeile. Du kannst Satzzeichen und einen Zeilenumbruch gemeinsam angeben:
print("Hello,", "Ada", end="!\n")
Die Ausgabe ist Hello, Ada!, gefolgt von einer neuen Zeile. sep gilt zwischen Argumenten innerhalb eines Aufrufs; end gilt nach dem letzten Argument dieses Aufrufs. Sie steuern unterschiedliche Stellen.
Zeilenumbrüche ergänzen und angezeigte Genauigkeit wählen
Der Aufruf von print() ohne Argumente gibt eine leere Zeile aus. Ein \n innerhalb einer Zeichenkette erzeugt einen Zeilenumbruch innerhalb dieser Zeichenkette, wie in print("Line 1\nLine 2"). Wiederholter Text kann eine Trennlinie bilden: print("=" * 20) zeigt zwanzig Gleichheitszeichen.
Python zeigt eine Gleitkommazahl in einer kurzen Form, die ihren gespeicherten Wert darstellt. print(1 / 3) zeigt 0.3333333333333333. Um einen gerundeten Wert anzuzeigen, berechne ihn zuerst innerhalb des Aufrufs: print(round(1 / 3, 2)) zeigt 0.33.
Die Rundung garantiert keine feste Anzahl sichtbarer Nachkommastellen. round(2.50, 2) wird als 2.5 angezeigt, weil die Gleitkommazahl abschließende Nullen nicht als Anzeigeanweisung speichert. Verwende beim Prüfen eines Programms die Ausgabe genau so, wie Python sie erzeugt.
Wichtige Erkenntnisse
print()wertet seine Argumente aus und zeigt Zeichenketten ohne ihre umgebenden Anführungszeichen.- Standardmäßig steht ein Leerzeichen zwischen den Argumenten und ein Zeilenumbruch am Ende.
sepändert das Leerzeichen zwischen Argumenten;endändert, was auf das letzte Argument folgt.print()ohne Argumente fügt eine leere Zeile hinzu.- Die Rundung ändert die Genauigkeit eines Werts, legt aber keine feste Anzahl ausgegebener Nachkommastellen fest.
5.3 Ein Eingabe–Verarbeitung–Ausgabe-Programm erstellen und testen
input() zeigt eine Eingabeaufforderung, wartet auf eine Eingabe und das Drücken der Eingabetaste und gibt dann den eingegebenen Text ohne die Eingabetaste als Zeichenkette zurück. Ein vollständiges kurzes Programm liest die benötigten Daten, verarbeitet sie und zeigt ein Ergebnis an.
Text lesen und Zahlen umwandeln
name = input("What is your name? ")
print("Hello", name)
Das Leerzeichen am Ende der Eingabeaufforderung trennt die eingegebene Antwort von der Frage. Die Variable speichert Text als Text, auch wenn Ziffern eingegeben werden. Die Eingabe von 30 bei input() erzeugt "30", nicht die ganze Zahl 30.
Wähle vor einer arithmetischen Berechnung eine Umwandlung:
age = int(input("Age in whole years: "))
print("Next year:", age + 1)
Der innere Aufruf von input() wird zuerst ausgeführt. Bei der Eingabe von 30 gibt er "30" zurück; int() wandelt das in 30 um; die Zuweisung speichert die ganze Zahl. Die Addition ergibt dann 31.
Verwende float(input(...)), wenn Werte mit Bruchteilen zulässig sind. Eine Eingabeaufforderung sollte angeben, welche Art von Antwort erwartet wird. Die Eingabe von 2.5 oder thirty für eine Umwandlung mit int() löst einen ValueError aus. Auch die Eingabe von 98,6 für eine Umwandlung mit float() schlägt fehl; das Dezimaltrennzeichen muss ein Punkt sein.
Eine fehlende Umwandlung löst nicht immer einen Fehler aus. Erhalten zwei input-Aufrufe die Eingaben 5 und 3, werden ihre nicht umgewandelten Werte als Zeichenketten addiert und ergeben 53. Beide Operanden haben einen Datentyp, der + unterstützt, aber es ist die falsche Operation, um Mengen zu addieren.
Eine vollständige Berechnung durcharbeiten
Das Eingabe–Verarbeitung–Ausgabe-Muster macht die Hauptschritte leicht nachvollziehbar:
# Convert a temperature from Fahrenheit to Celsius.
fahrenheit = float(input("Temperature in °F: "))
celsius = (fahrenheit - 32) * 5 / 9
print(fahrenheit, "°F is", round(celsius, 1), "°C")
Bei der Eingabe 98.6 liest das Programm den float 98.6. Es subtrahiert 32 und erhält 66.6, multipliziert mit 5 und erhält 333.0 und dividiert durch 9 und erhält 37.0. Die angezeigte Zeile lautet 98.6 °F is 37.0 °C. Die Eingabe 50 wird zu 50.0, sodass die Zeile 50.0 °F is 10.0 °C lautet.
Hier ist ein Programm mit ganzzahligen Daten:
total_minutes = int(input("Enter a whole number of minutes: "))
hours = total_minutes // 60
minutes = total_minutes % 60
print("Hours:", hours, "Minutes:", minutes)
Die Eingabe 135 erzeugt Hours: 2 Minutes: 15. Die Beschriftungen funktionieren für null, eins und größere Ergebnisse, ohne den Wortlaut zu ändern. Die beiden Verarbeitungszeilen verwenden dieselbe ursprüngliche Gesamtzahl; die Zuweisung an hours entfernt nichts aus total_minutes.
Gewöhnliche Werte und Grenzwerte testen
Wähle Eingaben, deren Ergebnisse du von Hand berechnen kannst. Für das Temperaturprogramm sollte 32 den Wert 0.0 °C und 212 den Wert 100.0 °C ergeben. Teste für Minuten 0, 59 und 60: Diese prüfen den Anfangswert und den Übergang von keiner vollen Stunde zu einer vollen Stunde.
Teste auch einen typischen Wert wie 135. Vergleiche die genauen Beschriftungen, Abstände, Zahlenergebnisse und Datentypen mit deiner Vorhersage. Läuft der Code, aber das Ergebnis ist falsch, verfolge die gespeicherten Werte und die Reihenfolge der Rechenoperationen. Schlägt eine Umwandlung fehl, untersuche den eingegebenen Text und den Datentyp, den deine Eingabeaufforderung verlangt.
Wichtige Erkenntnisse
input()gibt Text zurück, auch wenn Ziffern eingegeben werden.- Wandle Eingaben um, bevor du mit ihnen rechnest.
- Verwende klare Eingabeaufforderungen und beschrifte die Ausgabe.
- Trenne das Lesen der Daten, die Berechnung und die Anzeige des Ergebnisses.
- Prüfe gewöhnliche Werte und Grenzwerte anhand von Antworten, die du von Hand berechnet hast.
Variablen in Python: Beispiele
1Ein kleines Programm ausführen und reparieren
13 Schritte
- 1EinführungMit einer sichtbaren Vorhersage beginnen
Ein Programm kann einen Wert berechnen, ohne ihn anzuzeigen. Sage vor der Ausführung von Code zwei Dinge voraus: was Python tun wird und was ein Mensch sehen wird.
Wir vergleichen zuerst einen Versuch in der Shell mit einem gespeicherten Skript. Dann untersuchen wir Fehler und Kommentare. Behalte den Unterschied zwischen Codeausführung und sichtbarer Ausgabe im Blick: Eine Zeile kann erfolgreich ausgeführt werden, ohne Text auf dem Bildschirm zu erzeugen.
- 2BeispielEinen Ausdruck in der Shell ausprobieren
Gib an der Eingabeaufforderung
>>>der Python-Shell den Ausdruck9 * 3ein. Python wertet den Ausdruck aus und zeigt automatisch27an.Die Eingabeaufforderung wird von der Shell bereitgestellt; du gibst nur den Ausdruck ein. Eine Eingabeaufforderung
...bedeutet, dass Python auf den Rest derselben Anweisung wartet. Die Shell ist für eine solche schnelle Prüfung praktisch, während ein gespeichertes Skript eine Folge von Anweisungen für die erneute Ausführung bereithält. - 3ErklärungEin Skript seine Berechnung anzeigen lassen
Ein Skript, das nur
9 * 3enthält, berechnet das Produkt, zeigt aber nichts an. Um es anzuzeigen, schreibe:print(9 * 3) print("Calculation finished")Die Ausgabe ist
27, gefolgt vonCalculation finishedin der nächsten Zeile. Der Interpreter folgt der Reihenfolge der Anweisungen. Führe das Skript mit dem Ausführungsbefehl des Editors oder einem Terminalbefehl aus; gib diesen Terminalbefehl nicht an der Python-Eingabeaufforderung ein. - 4HerausforderungVorhersagen, was tatsächlich angezeigt wird
Ein gespeichertes Skript enthält diese beiden Zeilen. Was wird angezeigt?
11 + 5 print("Ready to check")---reveal---
Nur
Ready to checkerscheint. Die erste Zeile berechnet 16, gibt den Wert aber nicht aus. Wenn du diesen ersten Ausdruck direkt in die interaktive Shell eingeben würdest, würde die Shell seinen Wert automatisch anzeigen. Der Unterschied ergibt sich daraus, wo der Ausdruck ausgeführt wird. - 5ErklärungEinen abgebrochenen Lauf von einer falschen Antwort unterscheiden
Ein Syntaxfehler bedeutet, dass Python das Skript nicht lesen kann und die Ausführung deshalb nie beginnt. Ein Laufzeitfehler tritt auf, nachdem die Ausführung begonnen hat, und stoppt sie bei der fehlschlagenden Operation.
Bei einem Logikfehler kann das Programm ohne Meldung laufen. Eine falsche Gruppierung in einer Formel erzeugt zum Beispiel trotzdem eine zulässige Berechnung. Vergleiche ihr Ergebnis mit einer Rechnung von Hand, statt darauf zu warten, dass Python den Fehler erkennt.
- 6BeispielZuerst die letzte Fehlerzeile lesen
Betrachte diesen Code:
distance = 21 print(distnace)Ein Traceback endet mit der Angabe von
NameErrorund dem nicht definierten Namendistnace. Lies diese letzte Meldung und untersuche dann die gemeldete Zeile darüber. Der Name, dem zuvor ein Wert zugewiesen wurde, istdistance; die beiden Schreibweisen unterscheiden sich. Korrigiere den Zugriff zuprint(distance), was21anzeigt. - 7TippDie nächste hilfreiche Prüfung wählen
Lass den Fehlertyp deine Suche eingrenzen. Prüfe bei
NameErrordie Schreibweise, Groß- und Kleinschreibung und ob der Variablen zuvor ein Wert zugewiesen wurde. Untersuche beiTypeErrordie Datentypen, die die Operation verwendet. Untersuche beiValueErrorden Text, der an eine Umwandlung übergeben wurde.Scheint die gemeldete Zeile richtig zu sein, prüfe die vorherige Zeile auf ein nicht geschlossenes Anführungszeichen oder eine nicht geschlossene Klammer. Behebe einen Fehler und führe das Programm erneut aus, um das nächste erreichbare Problem zu finden.
- 8HerausforderungBleibt die erste Nachricht sichtbar?
Was wird ausgegeben, bevor dieses Programm stoppt?
itemswurde kein Wert zugewiesen.print("Checking") print(items) print("Finished")---reveal---
Checkingwird ausgegeben. Die nächste Zeile löst einenNameErroraus, sodass die letzte Zeile nicht ausgeführt wird. Das ist ein Laufzeitfehler: Python konnte das Skript lesen, aber während der Ausführung keinen Wert nachschlagen. Frühere Ausgaben bleiben sichtbar. - 9ErklärungDie nötige Bedeutung für Lesende ergänzen
Ein Kommentar beginnt mit
#außerhalb einer Zeichenkette und reicht bis zum Ende der Zeile. Er kann den Grund für einen Wert erklären:service_rate = 0.03 # 3% processing feeDer Kommentar erklärt den Lesenden, wofür der Satz steht. Python ignoriert ihn bei der Ausführung der Zuweisung. Lass mindestens zwei Leerzeichen vor dem Kommentarzeichen am Zeilenende und ein Leerzeichen danach. Ein klarer Name und ein nützlicher Kommentar ergänzen sich.
- 10HerausforderungDie Grenze des Kommentars finden
Was gibt diese Zeile aus und welche Wörter ignoriert Python?
print("Order #16") # Packing label---reveal---
Sie gibt
Order #16aus. Das Rautezeichen innerhalb der Anführungszeichen gehört zur Zeichenkette. Das zweite Rautezeichen beginnt den Kommentar, daher wirdPacking labelignoriert. Ob ein Zeichen innerhalb oder außerhalb einer Zeichenkette steht, ändert, wie Python es liest. - 11TippEinen Kommentar nach einer Änderung aktuell halten
Wenn sich die Bearbeitungsgebühr von 3 Prozent auf 5 Prozent ändert, ändere sowohl
service_rateauf0.05als auch den Kommentar auf5% processing fee.Python warnt dich nicht vor einem veralteten Kommentar, weil Kommentare nicht ausgeführt werden. Lesende können dadurch trotzdem in die Irre geführt werden. Für vorübergehende Tests kann
#eine Anweisung deaktivieren; entferne alte deaktivierte Zeilen, wenn sie dir beim Verständnis des Programms nicht mehr helfen. - 12HerausforderungAusgabe, Kommentare und einen Fehler kombinieren
Was erscheint bei der Ausführung dieses gespeicherten Skripts? Nimm an, dass zuvor keine Namen definiert wurden.
print("Status #1") # Show the status. Print("Done")---reveal---
Der Kommentar wird ignoriert und
Status #1wird ausgegeben.Printlöst dann einenNameErroraus, weil Python bei Namen zwischen Groß- und Kleinschreibung unterscheidet. Der eingebaute Name lautetprint. Die gültige erste Ausgabe bleibt sichtbar, weil der Fehler während der Ausführung auftritt. - 13ZusammenfassungDie Ausgabe als Beleg nutzen
Die Shell zeigt Ausdruckswerte an, während ein Skript einen ausdrücklichen Ausgabeaufruf benötigt. Ein Laufzeitfehler lässt frühere Ausgaben sichtbar; ein Syntaxfehler verhindert den Start des Skripts.
Schreibe für dein nächstes kurzes Programm vor der Ausführung eine erwartete Ausgabe auf. Trifft die Vorhersage nicht zu, nutze den Fehlertyp oder verfolge die Werte, um die nächste Prüfung zu wählen. Konzentriere Kommentare auf Bedeutungen, die der Code nicht bereits erklärt.
2Den Datentyp an der Schreibweise eines Werts erkennen
14 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungÄhnlich aussehende Werte können sich unterschiedlich verhalten
- 2BeispielDrei Formen derselben Ziffern untersuchen
- 3VerbindungDaten passend zu ihrem Zweck wählen
- 4HerausforderungBooleschen Text von einem booleschen Wert unterscheiden
- 5ErklärungEinen float mit Exponentenschreibweise skalieren
- 6KernaussageEin Komma verändert die Daten
- 7HerausforderungEinen kleinen Dezimalwert schreiben
- 8TippDie kleinen zusätzlichen Ziffern deuten
- 9BeispielZur Nachricht passende äußere Anführungszeichen wählen
- 10ErklärungEinen Zeilenumbruch zum Teil einer Zeichenkette machen
- 11HerausforderungNamen mit und ohne Anführungszeichen vorhersagen
- 12KernaussageAuch ein Leerzeichen zählt als Datum
- 13HerausforderungVon der Schreibweise zum Verhalten
- 14ZusammenfassungDen Wert vor der Operation prüfen
3Einen Wert durch Zuweisungen verfolgen
14 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungEinen Zeitpunkt nach dem anderen verfolgen
- 2BeispielZuerst auswerten, dann zuweisen
- 3KernaussageEin gespeichertes Ergebnis enthält keine Formel
- 4HerausforderungEine Kopie vor der erneuten Zuweisung verfolgen
- 5VerbindungEinen lesbaren Namen wählen
- 6BeispielEingebaute Namen verfügbar halten
- 7HerausforderungEinen Namen korrigieren, ohne seine Bedeutung zu ändern
- 8ErklärungAusgehend von einem vorhandenen Wert aktualisieren
- 9BeispielNur die Änderungen aufschreiben
- 10HerausforderungBeobachten, wie eine Aktualisierung den Datentyp ändert
- 11ErklärungEinen ursprünglichen Wert vor dem Überschreiben erhalten
- 12ErklärungEinen gleichzeitigen Tausch lesen
- 13HerausforderungNamen, Kopien und Aktualisierungen kombinieren
- 14ZusammenfassungAktuelle Werte statt Absichten verfolgen
4Ausdrücke Operation für Operation auswerten
18 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungReihenfolge und Datentyp verfolgen
- 2ErklärungDas Zeichen der Operation zuordnen
- 3BeispielDen Datentyp zum Quotienten notieren
- 4HerausforderungEine Potenz und ihr Ergebnis bestimmen
- 5BeispielDie Operation mit dem höchsten Vorrang zuerst ausführen
- 6KernaussageGleicher Vorrang bedeutet von links nach rechts
- 7ErklärungPotenzen werden in die andere Richtung gruppiert
- 8HerausforderungEine gruppierte Berechnung korrigieren
- 9BeispielEine Menge in volle Gruppen aufteilen
- 10ErklärungAbrunden bedeutet nach unten, auch unter null
- 11VerbindungZiffern als Zehnergruppen nutzen
- 12HerausforderungBeide Teile der Zeit bestimmen
- 13ErklärungText verwendet dieselben Zeichen anders
- 14BeispielEinen Rahmen vor der Verkettung erstellen
- 15HerausforderungDas innere Ergebnis in Text umwandeln
- 16TippEine nicht kompatible Operation finden
- 17HerausforderungRest, Potenz und Text kombinieren
- 18ZusammenfassungDas Zwischenergebnis prüfen
5Eingegebene Daten in ein geprüftes Ergebnis umwandeln
15 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungLesen, berechnen und dann das Ergebnis erklären
- 2ErklärungDen neuen Wert einer Umwandlung behalten
- 3BeispielEin float und Dezimaltext werden unterschiedlich umgewandelt
- 4HerausforderungAbschneiden und Runden unterscheiden
- 5ErklärungGetrennte Werte an print übergeben
- 6BeispielTrennzeichen und Abschluss ändern
- 7HerausforderungZwei print-Aufrufe zusammen vorhersagen
- 8TippEinen Wert runden, ohne aufgefüllten Text zu versprechen
- 9BeispielEine ganzzahlige Eingabe lesen
- 10BeispielZwei Ergebnisse aus derselben Gesamtzahl berechnen
- 11BeispielDie endgültigen Werte beschriften
- 12HerausforderungDie fehlende Umwandlung finden
- 13VerbindungDie Stelle testen, an der sich die Antwort ändert
- 14HerausforderungUmwandlung, Division und Ausgabe kombinieren
- 15ZusammenfassungJeden Schritt einzeln prüfen
Variablen in Python: Übungsaufgaben
Set 1: Kurze Programme lesen und ihre Ergebnisse vorhersagen10 Übungsfragen
Frage 1 von 10
18 - 6. Was erscheint bei seiner Ausführung?Antwort zeigenAntwort ausblenden
12 anzeigen, was leicht verwechselt werden kann. Verwende in einem Skript print(18 - 6), wenn das Ergebnis sichtbar sein soll.Frage 2 von 10
Ein Skript enthält diesen Code. Welche Ausgabe erscheint, bevor es stoppt?
print("Ready")
print(missing_total)
print("Done")
missing_total wurde kein Wert zugewiesen.
Antwort zeigenAntwort ausblenden
Ready aus. Die nächste Anweisung löst einen NameError aus, sodass die Ausführung den letzten print-Aufruf nie erreicht. Das ist ein Laufzeitfehler, bei dem frühere Ausgaben erhalten bleiben; ein Syntaxfehler würde den Start des gesamten Skripts verhindern.Frage 3 von 10
type("False")?Antwort zeigenAntwort ausblenden
"False" zu einer Zeichenkette mit fünf Zeichen, daher ist ihr Datentyp str. Das boolesche Literal False hat keine Anführungszeichen und einen großen Anfangsbuchstaben. Ein Wort, das innerhalb einer Zeichenkette wie ein boolescher Wert aussieht, ist weiterhin Text; Python deutet die Zeichen nicht als Code um.Frage 4 von 10
Antwort zeigenAntwort ausblenden
** ist Pythons Potenzoperator, daher berechnet 5 ** 3 den Wert 125. Das Zirkumflexzeichen ^ führt eine andere Operation aus und bedeutet keine Potenzierung. Eine Multiplikation mit drei würde fünf dreimal addieren, während eine dritte Potenz drei Fünfen miteinander multipliziert.Frage 5 von 10
print("North\nSouth") an?Antwort zeigenAntwort ausblenden
\n steht innerhalb der Zeichenkette für einen Zeilenumbruch, daher beginnt South in einer zweiten Zeile. Python gibt den umgekehrten Schrägstrich und das n hier nicht als zwei sichtbare Zeichen aus. Um einen wörtlichen umgekehrten Schrägstrich vor n zu erhalten, müsste die Zeichenkette im Code einen doppelten umgekehrten Schrägstrich enthalten.Frage 6 von 10
Was gibt dies aus?
stock = 14
saved = stock
stock = 9
print(stock, saved)
Antwort zeigenAntwort ausblenden
saved = stock erhält der Name saved den aktuellen Wert 14. Die erneute Zuweisung an stock lässt dann nur diesen Namen auf 9 verweisen, sodass die Ausgabe 9 14 lautet. Das Ergebnis 9 9 würde die frühere Zuweisung als dauerhafte Verbindung zwischen den Namen behandeln, was sie nicht ist.Frage 7 von 10
Antwort zeigenAntwort ausblenden
available_seats verbindet kleingeschriebene Wörter mit einem Unterstrich und beginnt mit einem Buchstaben. Ein Bindestrich wird als Subtraktion gelesen, daher ist available-seats kein einzelner Variablenname. Leerzeichen dürfen nicht innerhalb eines Namens vorkommen und eine Ziffer darf nicht sein erstes Zeichen sein.Frage 8 von 10
24 / 6?Antwort zeigenAntwort ausblenden
/ ergibt bei ganzzahligen Operanden einen float, daher erzeugt 24 / 6 den Wert 4.0. Dass die Division aufgeht, ändert diese Datentypregel nicht. 24 // 6 würde dagegen die ganze Zahl 4 erzeugen, während % den Rest null statt des Quotienten bestimmen würde.Frage 9 von 10
40 - 18 / 3 * 2 + 1?Antwort zeigenAntwort ausblenden
18 / 3 ergibt 6.0, die anschließende Multiplikation mit 2 ergibt 12.0. Die verbleibende Berechnung ist 40 - 12.0 + 1, also 29.0. Würde man 3 * 2 zuerst multiplizieren, entstünde fälschlich ein Nenner von sechs.Frage 10 von 10
print("Zone", 4, sep="-") an?Antwort zeigenAntwort ausblenden
sep="-" setzt einen Bindestrich zwischen die beiden angezeigten Argumente und ergibt Zone-4. Es setzt den Bindestrich nicht hinter den letzten Wert; der Abschluss bleibt der standardmäßige Zeilenumbruch. Ohne das benannte Argument sep bliebe das übliche Leerzeichen zwischen den Argumenten.Set 2: Mit veränderlichen Werten und Daten verschiedener Typen arbeiten10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
Was zeigt dies an?
print("Bay #7") # Pickup point
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
"00482" und wird nicht für Berechnungen verwendet. Welcher Datentyp erhält sie am besten?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
Welchen Wert hat cost am Ende?
units = 6
rate = 4
cost = units * rate
units = 8
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Was gibt dies aus?
points = 12
points -= 5
points *= 3
print(points)
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
6e2?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
print("Go" * 2 + "!") an?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
int(-8.9)?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Was erscheint in der ersten Ausgabezeile?
print("P", "Q", sep=":", end="|")
print("R", "S", sep="-")
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
Bei der ersten Eingabeaufforderung wird 7 und bei der zweiten 4 eingegeben. Was gibt dieses Programm aus?
first = input("First: ")
second = input("Second: ")
print(int(first + second) + 2)
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Set 3: Ausdrücke nachvollziehen und Fehler erkennen10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
amount = 11 und dann amount + 4 ein. Was zeigt die Shell für diese beiden Eingaben an?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
Ein Skript enthält diesen Code. Welche Ausgabe erscheint vor der Fehlermeldung?
print("Loading")
value = 6
print("Value:", value
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
print('He said "yes"') an?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
MAX_ATTEMPTS = 5. Was teilen die Großbuchstaben mit?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Was gibt dies aus?
a = 4
b = 9
a, b = b, a
a += b
print(a, b)
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
(-3) ** 2 + 2 ** 3?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
-17 // 5 und -17 % 5 in dieser Reihenfolge?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
int("12.0") auswertet?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
Es wird 84.5 eingegeben. Das Programm soll Fahrenheit in Celsius umrechnen. Welcher Ersatz für die Berechnungszeile korrigiert das Ergebnis?
fahrenheit = float(input("Temperature in °F: "))
celsius = fahrenheit - 32 * 5 / 9
print(round(celsius, 1))
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Set 4: Die zur Aufgabe passende Operation wählen10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
n = 6, n * 3, print(n). Welcher Unterschied erscheint?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
Warum schlägt die letzte Zeile fehl?
input = "Leah"
name = input("Name: ")
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
print("Row", 8, "|", end="!") an, bevor der Cursor stehen bleibt?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Ein Programm zur Umrechnung von Minuten in Stunden liefert für die Eingabe 145 das erwartete Ergebnis. Als Nächstes wird 119 eingegeben. Was gibt es aus und welche Änderung lässt hours volle Stunden zählen?
total_minutes = int(input("Whole minutes: "))
hours = round(total_minutes / 60)
minutes = total_minutes % 60
print(hours, minutes)
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
Ein Skript enthält die folgenden Zeilen. Welche Nachricht erscheint?
# print("Check")
print("Open #2")
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
3 + 2.0?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
print("label", label, sep=":") nach label = "Desk" an?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
Was gibt dies aus?
base = 8
double = base * 2
copy = double
base = 10
double = base * 2
print(copy, double)
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
int(-6.5), round(-6.5) und -13 // 2 in dieser Reihenfolge?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
9.0 // 4 und 9 // 4 in dieser Reihenfolge?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Set 5: Abläufe, Umwandlungen und Programmprüfungen kombinieren10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
print("6" + str(2 + 3) * 2) an?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
Es wird 4 eingegeben. Was erscheint außer der Eingabeaufforderung und der Fehlermeldung?
count = input("Count: ")
print("Received")
next_count = count + 1
print(next_count)
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
fee_rate = 0.04 # 4% service fee zu fee_rate = 0.06 # 4% service fee. Was sollte korrigiert werden?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
0.1 + 0.2 als 0.30000000000000004 angezeigt werden?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
Was gibt dies aus?
rate = 6
hours = 4
pay = rate * hours
rate += 2
pay += rate
hours /= 2
print(pay, hours)
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
-2 ** 3 ** 2 + 20 // 3 % 4?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
-23. Ihr Quotient und Rest bei Division durch 6 müssen zusammen wieder diesen Wert ergeben. Wie lauten die beiden Ergebnisse?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
print("Code: " + str(3 * 4)) an?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Was gibt dies aus?
reading = "18"
float(reading)
print(reading + "2")
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
Ein Automat berechnet 3 Dollar für jeden vollständigen 15-Minuten-Block und 1 Dollar für jede übrige Minute. Was soll die Berechnungszeile ersetzen, um die Gebühr für eine ganzzahlige Eingabe zu berechnen?
minutes = int(input("Minutes: "))
charge = 0
print("Charge in dollars:", charge)
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe
Schlüsselbegriffe
A
Ablauftabelle
price = 10 ändert die Preisspalte, während eine früher gespeicherte Summe unverändert bleibt.abrundende Division
-10 // 3 ergibt -4, weil −3,333… nach unten und nicht in Richtung null gerundet wird.Abschneiden der Nachkommastellen
int() bei einer Gleitkommazahl, ohne auf die nächste ganze Zahl zu runden.-9.8 mit int() ergibt -9, während das Abrunden desselben negativen Werts -10 ergeben würde.Akkumulator
total = 0, bevor du Aktualisierungen wie total += cost verwendest, um mehrere Beträge zu sammeln.Anweisung
count = 6 einen Wert zu, bevor die spätere Anweisung print(count) ihn verwendet.Argument
print("Score:", 9) sind die Beschriftung und die ganze Zahl getrennte Argumente, die in dieser Reihenfolge angezeigt werden.Assoziativität
16 / 4 * 2 wird als (16 / 4) * 2 gruppiert, sodass das Ergebnis 8.0 und nicht 2.0 ist.Ausdruck
print(7 * 6) wird der Ausdruck 7 * 6 ausgewertet, bevor sein Wert auf dem Bildschirm angezeigt wird.Ausdruck mit gemischten Datentypen
2 + 0.5 funktioniert numerisch, während "2" + 0.5 ohne ausdrückliche Umwandlung fehlschlägt.Ausgabe
Distance: 18 miles gibt sowohl einen Wert als auch die Einheit an, die für seine Deutung benötigt wird.Auskommentieren
# vor einem vorübergehenden print-Aufruf deaktiviert diese Ausgabe, ohne die Zeile aus dem Editor zu löschen.B
Beachtung der Groß- und Kleinschreibung
total schlägt print(Total) fehl, sofern dieser eigenständige großgeschriebene Name nicht ebenfalls existiert.Begrenzungszeichen einer Zeichenkette
"We're ready" erlauben es, dass der Apostroph innerhalb der Zeichenkette bleibt.Bezeichner
seat_count2 ist gültig, ein Name, der mit einer Ziffer beginnt oder ein Leerzeichen enthält, jedoch nicht.boolescher Wert
bool und hat einen von zwei Werten, True oder False, die mit großem Anfangsbuchstaben und ohne Anführungszeichen geschrieben werden.4 < 9 erzeugt den booleschen Wert True, während der Text "True" in Anführungszeichen eine Zeichenkette ist.D
Datentyp
"25" ist str, daher verbindet die Addition einer weiteren Zeichenkette Text, statt Zahlenwerte zu addieren.Docstring
# markierten Kommentar.dynamische Typisierung
entry = 3 gefolgt von entry = "three", obwohl eine gleichbleibende Bedeutung klarer ist.E
Eingabe
input() liest eine eingegebene Zeile und gibt ihre Zeichen als Zeichenkette zurück.45 erzeugt den Text "45", der umgewandelt werden muss, bevor er als ganze Zahl verwendet werden kann.Eingabe–Verarbeitung–Ausgabe
Eingabeaufforderung
"Whole minutes: " signalisiert, dass das Programm Text in Form einer ganzen Zahl erwartet, und lässt Platz für die Eingabe.eingebaute Funktion
print() oder input(), deren Name durch eine Zuweisung verdeckt werden kann.item_total hält den eingebauten Namen int für Umwandlungen verfügbar.erneute Zuweisung
level = 2 und anschließend level = 5 ergibt das Lesen von level fünf statt der früheren zwei.erweiterte Zuweisung
score += 6 sechs zum aktuellen Wert und weist die Summe demselben Namen wieder zu.Escape-Sequenz
"Up\nDown" erzeugt die Escape-Sequenz bei der Ausgabe der Zeichenkette einen Zeilenumbruch zwischen den beiden Wörtern.F
Fehlersuche und Fehlerbehebung
G
ganze Zahl
int ohne Bruchteil; ganze Zahlen in Python haben keine feste Begrenzung der Stellenzahl.item_count = 24 für eine Anzahl und schreibe große ganzzahlige Literale bei Bedarf mit Unterstrichen.gleichzeitige Zuweisung
x, y = 4, 8 erhält der erste Name vier und der zweite acht in einer einzigen Anweisung.Gleitkommazahl
6.0 ist ein float, obwohl sein Zahlenwert genau der ganzen Zahl sechs entspricht.Grenzwert
I
Inkrement
visits = 4 erfasst die Aktualisierung visits += 1 einen weiteren Besuch und erhöht den Zähler auf fünf.interaktive Shell
>>> zeigt die Shell nach der Eingabe von 14 + 2 den Wert 16 ohne print-Aufruf an.Interpreter
print(6 * 7) wertet der Interpreter 6 * 7 aus und übergibt den resultierenden Wert an den print-Aufruf.K
Kommentar
# außerhalb einer Zeichenkette beginnt und am Zeilenende endet; Python ignoriert sie bei der Ausführung des Programms.Kommentar am Zeilenende
rate = 0.07 # 7% tax wird die Zuweisung ausgeführt und die letzten Wörter erklären die Bedeutung des Satzes.Konstante
FEE_RATE zeigt den Lesenden, dass sie diesen Satz beim Nachvollziehen des Programms als fest behandeln sollen.L
Laufzeitfehler
leere Zeichenkette
"" oder '' geschrieben; sie unterscheidet sich von einer Zeichenkette mit einem Leerzeichen." " ein Leerzeichen einfügt.Literal
12, 12.0 und "12" sind jeweils eine ganze Zahl, eine Gleitkommazahl und eine Zeichenkette.Logikfehler
O
Operand
hours * rate sind die aktuellen Werte von hours und rate die Operanden der Multiplikation.Operator
+ für eine Addition oder ** für eine Potenzierung.6 * 2 zu 6 ** 2 ändert die Operation von einer Multiplikation zu einer Potenzierung.P
Parität
-5 % 2 ist eins. Das zeigt, dass minus fünf nach derselben Restregel ungerade ist.Potenzierung
** in eine Potenz; bei ganzzahligen Operanden und einem nicht negativen Exponenten ist das Ergebnis eine ganze Zahl.4 ** 3 multipliziert drei Vieren miteinander und ergibt die ganze Zahl 64.Programm
Programmfehler
Q
Quotient
22 // 5 ist der abgerundete Quotient vier und der zugehörige Rest zwei.R
Rest
%, der eine Division ergänzt; bei ganzen Zahlen und einem positiven Divisor ist er nicht negativ und kleiner als der Divisor.43 % 8 die 3 Elemente, die nach fünf vollständigen Gruppen übrig bleiben.runde Klammern
(10 + 6) / 4 sorgen die Klammern dafür, dass die ganze Summe durch vier dividiert wird und 4.0 ergibt.Rundung
round() wählt bei Werten genau in der Mitte den geraden Nachbarwert.round(6.5) ergibt sechs, während round(7.5) acht ergibt, weil beide gewählten Nachbarwerte gerade sind.S
Schlüsselwort
class als Ziel einer Zuweisung verursacht einen Syntaxfehler, bevor das Skript ausgeführt werden kann.Skript
snake_case
total_seconds folgt snake_case und bezeichnet die Einheit, die bei einer Zeitberechnung verwendet wird.Syntaxfehler
T
temporäre Variable
temp = left den alten linken Wert, bevor left überschrieben wird.Traceback
Trennzeichen
print() zwischen angezeigte Argumente einfügt. Es wird durch das benannte Argument sep gesteuert und ist standardmäßig ein Leerzeichen.print("A", "B", sep="-") verwendet einen Bindestrich als Trennzeichen und zeigt A-B in der Ausgabezeile.type()
type() gibt den Datentyp ihres Arguments an, sodass du einen gespeicherten Wert oder das Ergebnis eines Ausdrucks untersuchen kannst.type("12") zeigt eine Zeichenkette an, obwohl die angezeigten Zeichen wie eine Zahl aussehen.TypeError
"Count: " + 7 schlägt fehl, weil die Verkettung auf beiden Seiten von + Text benötigt.Typumwandlung
int(text) in einer Variablen, wenn eine spätere Berechnung den umgewandelten Wert statt des Textes benötigt.U
unäres Minus
10 - -2 macht das zweite Minus die zwei zu minus zwei, sodass deren Subtraktion den Wert 12 ergibt.V
ValueError
"ten" ist Text, aber int("ten") schlägt fehl, weil dieser Text keine ganze Zahl beschreibt.Variable
length = 6 liest der Ausdruck length * 2 den aktuellen Wert über den Namen length.Verkettung
+ aneinander, erhält ihre Zeichenreihenfolge und fügt keine zusätzlichen Leerzeichen oder Satzzeichen ein."Room " und "12" erhält das bereits in der ersten Zeichenkette enthaltene Leerzeichen und ergibt "Room 12".Vorrang
4 + 3 * 5 hat die Multiplikation Vorrang vor der Addition, daher ist das Ergebnis neunzehn.W
Wert
25 und "25" sehen bei der Ausgabe ähnlich aus, unterstützen aber unterschiedliche Operationen in einem Programm.Wiederholung einer Zeichenkette
* mit einer Zeichenkette und einer ganzzahligen Anzahl, um die gewünschte Anzahl direkt aneinandergehängter Kopien zu erzeugen."ab" * 3 erzeugt "ababab"; zwischen den wiederholten Kopien wird kein Leerzeichen eingefügt.wissenschaftliche Schreibweise
e und einer Zehnerpotenz dar und macht sehr große oder sehr kleine Zahlenwerte kompakt.8e-3 bedeutet acht dividiert durch eintausend und stellt den float 0.008 dar.Z
Zeichenkette
str und enthält Text wie Buchstaben, Ziffern, Leerzeichen, Satzzeichen und Symbole."Bus 09" erhält seine Buchstaben, das Leerzeichen und den Identifikator mit führender null als einen Textwert.Zeilenabschluss
end gesteuert und ist standardmäßig ein Zeilenumbruch.end="" werden keine abschließenden Zeichen ausgegeben, sodass der nächste print-Aufruf in derselben Zeile fortfährt.Zuweisung
= mit dem Namen auf der linken Seite.area = width * height wird die Multiplikation ausgewertet, bevor ihr Ergebnis unter area gespeichert wird.Über diese Einheit
Erstelle deine eigenen Lernmaterialien
Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.