2. Ihre ersten Python-Programme
In Kapitel 1 haben Sie gelernt, wie Sie Python installieren, die interaktive Shell (REPL) verwenden und einfache Skriptdateien ausführen. Sie haben auch einen ersten Blick auf Fehler und Tracebacks geworfen. Jetzt ist es Zeit, Ihre ersten echten Python-Programme zu schreiben – Programme, die Informationen anzeigen, Eingaben von Benutzern annehmen und sinnvolle Ergebnisse erzeugen.
Dieses Kapitel führt die grundlegenden Bausteine ein, die Sie in nahezu jedem Python-Programm verwenden werden, das Sie schreiben: die print()-Funktion (function) zur Anzeige von Ausgabe, Kommentare zur Dokumentation Ihres Codes, Variablen zum Speichern von Daten und die input()-Funktion (function), um Informationen von Benutzern zu erhalten. Am Ende dieses Kapitels werden Sie in der Lage sein, einfache, aber vollständige interaktive Programme zu erstellen, die dem klassischen Input-Process-Output-Muster folgen.
2.1) Text mit der print()-Funktion ausgeben
Die print()-Funktion (function) ist eines der wichtigsten Werkzeuge in Python. Sie zeigt Text (und andere Informationen) auf dem Bildschirm an und ermöglicht es Ihren Programmen, mit Benutzern zu kommunizieren. Sie haben print() in Kapitel 1 bereits kurz gesehen, aber jetzt werden wir es ausführlich untersuchen.
2.1.1) Einfache Ausgaben
Im einfachsten Fall zeigt print() Text an, der in Anführungszeichen steht. Erstellen wir eine Skriptdatei, um zu sehen, wie das funktioniert:
# hello.py
print("Hello, World!")Wenn Sie dieses Skript ausführen, zeigt Python Folgendes an:
Hello, World!Der Text in den Anführungszeichen – "Hello, World!" – wird String genannt. Ein String ist eine Folge von Zeichen (Buchstaben, Zahlen, Symbole, Leerzeichen), die Python als Text behandelt. Wir werden Strings in Kapitel 5 viel ausführlicher untersuchen, aber fürs Erste können Sie sie als die Art und Weise betrachten, wie Sie Text in Python darstellen.
Sie können jeden beliebigen Text ausgeben, indem Sie ihn in Anführungszeichen setzen:
# greetings.py
print("Welcome to Python programming!")
print("This is your first real program.")
print("Python makes programming fun and accessible.")Ausgabe:
Welcome to Python programming!
This is your first real program.
Python makes programming fun and accessible.Beachten Sie, dass jede print()-Anweisung die Ausgabe in einer eigenen Zeile erzeugt. Python fügt nach jedem print()-Aufruf automatisch einen Zeilenumbruch (Newline) hinzu und setzt den Cursor in die nächste Zeile.
2.1.2) Mehrere Elemente ausgeben
Die print()-Funktion (function) kann mehrere Elemente in einem einzigen Aufruf ausgeben, wenn Sie diese durch Kommas trennen:
# multiple_items.py
print("Python", "is", "awesome!")
print("I", "am", "learning", "to", "code")Ausgabe:
Python is awesome!
I am learning to codeWenn Sie Elemente mit Kommas trennen, fügt print() automatisch ein Leerzeichen zwischen ihnen ein. Das ist praktisch, um mehrere Textteile zu kombinieren, ohne Leerzeichen manuell hinzufügen zu müssen.
Sie können auch verschiedene Datentypen mischen. Zum Beispiel können Sie sowohl Text als auch Zahlen ausgeben:
# mixed_output.py
print("The answer is", 42)
print("Python version", 3.12, "is powerful")Ausgabe:
The answer is 42
Python version 3.12 is powerfulPython wandelt Zahlen bei der Ausgabe automatisch in Text um, sodass Sie sich noch keine Gedanken über die technischen Details machen müssen. Wir lernen in Kapitel 3 mehr über verschiedene Datentypen.
2.1.3) Einfache vs. doppelte Anführungszeichen
Python akzeptiert sowohl einfache (') als auch doppelte (") Anführungszeichen für Strings. Für einfachen Text sind sie vollständig austauschbar:
# quotes.py
print("This uses double quotes")
print('This uses single quotes')
print("Both work exactly the same way")Ausgabe:
This uses double quotes
This uses single quotes
Both work exactly the same wayAnführungszeichen werden jedoch wichtig, wenn Ihr Text Apostrophe oder Anführungszeichen enthält. Wenn Ihr Text einen Apostroph enthält (das ist dasselbe Zeichen wie ein einfaches Anführungszeichen), verwenden Sie doppelte Anführungszeichen, um ihn zu umschließen:
# apostrophes.py
print("It's a beautiful day!")
print("Python's syntax is clean")Ausgabe:
It's a beautiful day!
Python's syntax is cleanWenn Sie hier einfache Anführungszeichen verwenden würden, käme Python durcheinander:
# This causes an error:
print('It's a beautiful day!') # Error! Python sees three separate quotesDer Fehler tritt auf, weil Python den Apostroph in "It's" als Ende des Strings ansieht und "s a beautiful day!" als ungültigen Code zurücklässt.
Ähnlich gilt: Wenn Ihr Text doppelte Anführungszeichen enthält, verwenden Sie einfache Anführungszeichen, um ihn zu umschließen:
# quotations.py
print('She said, "Hello!"')
print('The book is called "Python Basics"')Ausgabe:
She said, "Hello!"
The book is called "Python Basics"Praktische Richtlinie: Wählen Sie einen Stil (einfach oder doppelt) und verwenden Sie ihn konsistent in Ihrem Code. Die meisten Python-Programmierer bevorzugen doppelte Anführungszeichen für normale Strings, aber beide Varianten sind in Ordnung. Wechseln Sie nur dann zum anderen Stil, wenn Ihr Text das Anführungszeichenzeichen enthält, das Sie normalerweise verwenden.
2.1.4) Leere Zeilen ausgeben
Manchmal möchten Sie leere Zeilen in Ihre Ausgabe einfügen, um sie lesbarer zu machen. Das können Sie tun, indem Sie print() ohne Argumente aufrufen:
# spacing.py
print("First section of output")
print("More information here")
print() # Empty line
print("Second section of output")
print("This is separated from the first section")Ausgabe:
First section of output
More information here
Second section of output
This is separated from the first sectionDer leere print()-Aufruf erzeugt eine Leerzeile und macht die Ausgabe leichter lesbar, indem er verschiedene Abschnitte optisch voneinander trennt.
2.1.5) Sonderzeichen in Strings
Manchmal müssen Sie Sonderzeichen in Ihre Ausgabe aufnehmen, die Sie nicht direkt eingeben können oder die in Python eine besondere Bedeutung haben. Wie erstellen Sie zum Beispiel einen Zeilenumbruch in der Mitte eines Strings? Oder fügen einen Tabulator zur Ausrichtung ein? Python stellt Escape-Sequenzen bereit – spezielle Zwei-Zeichen-Kombinationen, die mit einem Backslash (\) beginnen –, um diese Zeichen darzustellen.
Diese Escape-Sequenzen sind besonders nützlich, wenn Sie Ausgabe auf bestimmte Weise formatieren müssen – mehrzeilige Meldungen erstellen, Spalten mit Daten ausrichten oder mit Dateipfaden unter Windows arbeiten. Sie werden \n häufig verwenden, wenn Sie mehr Programme schreiben.
Die gebräuchlichste Escape-Sequenz ist \n, die einen Zeilenumbruch (Newline) darstellt:
# newlines.py
print("First line\nSecond line\nThird line")Ausgabe:
First line
Second line
Third lineDas \n weist Python an, an dieser Stelle des Strings in eine neue Zeile zu wechseln. Das ist nützlich, wenn Sie mehrere Ausgabelinien mit einem einzigen print()-Aufruf erzeugen möchten.
Eine weitere nützliche Escape-Sequenz ist \t, die einen Tabulator (horizontale Abstände) darstellt:
# tabs.py
print("Name:\tJohn")
print("Age:\t25")
print("City:\tNew York")Ausgabe:
Name: John
Age: 25
City: New YorkDas \t erzeugt konsistente Abstände und richtet die Werte in einer spaltenähnlichen Form aus.
Wenn Sie einen tatsächlichen Backslash in Ihrer Ausgabe benötigen, verwenden Sie \\:
# backslash.py
print("The file path is C:\\Users\\Documents")Ausgabe:
The file path is C:\Users\DocumentsWir werden Escape-Sequenzen und den Umgang mit Strings in Kapitel 5 viel ausführlicher behandeln. Fürs Erste sollten Sie nur wissen, dass \n neue Zeilen erzeugt und \t Tabulatoren.
2.2) Kommentare verwenden, um Code zu erklären
Wenn Ihre Programme komplexer werden, wird es wichtig zu erklären, was Ihr Code macht – sowohl für andere, die ihn lesen, als auch für Ihr zukünftiges Ich. Python stellt dafür Kommentare bereit: Notizen in Ihrem Code, die Python bei der Ausführung des Programms vollständig ignoriert.
2.2.1) Einzeilige Kommentare
In Python ist jeder Text, der einem #-Symbol auf einer Zeile folgt, ein Kommentar. Python ignoriert alles vom # bis zum Ende dieser Zeile:
# comment_example.py
# This is a comment. Python ignores this line completely.
print("This line runs") # This comment explains the print statement
# print("This line does NOT run because it's commented out")
print("This line also runs")Ausgabe:
This line runs
This line also runsBeachten Sie, dass die zweite print()-Anweisung nicht ausgeführt wurde, da die gesamte Zeile auskommentiert war. Das ist nützlich, wenn Sie Code vorübergehend deaktivieren möchten, ohne ihn zu löschen.
Kommentare können in einer eigenen Zeile oder am Ende einer Codezeile stehen. Beide Stile sind üblich:
# display_info.py
# Display a welcome message to the user
print("Welcome to the program!")
print("Processing data...") # Inform the user of progress2.2.2) Wann und wie man gute Kommentare schreibt
Kommentare sollten erklären, warum Sie etwas tun, nicht nur was der Code macht. Hier ein Beispiel für einen schlechten Kommentar:
# Bad comment - just repeats what the code obviously does
print("Hello") # Print "Hello"Dieser Kommentar fügt keinen Mehrwert hinzu, da jeder, der den Code liest, bereits sehen kann, dass er "Hello" ausgibt.
Hier ist ein besserer Ansatz:
# Good comment - explains the purpose or context
# Greet the user before requesting their information
print("Hello")Dieser Kommentar erklärt, warum wir "Hello" ausgeben – es ist Teil einer größeren Interaktion mit dem Benutzer.
Richtlinien für hilfreiche Kommentare:
- Erklären Sie den Zweck: Warum existiert dieser Code? Welches Problem löst er?
- Klären Sie komplexe Logik: Wenn etwas nicht sofort offensichtlich ist, erklären Sie es
- Notieren Sie wichtige Entscheidungen: Erklären Sie, warum Sie einen Ansatz einem anderen vorgezogen haben
- Warnen Sie vor Stolperfallen: Weisen Sie auf alles hin, was verwirrend oder unerwartet sein könnte
- Halten Sie Kommentare aktuell: Aktualisieren Sie Kommentare, wenn Sie den Code ändern
Hier ein Beispiel, das effektive Kommentare zeigt:
# temperature_converter.py
# This program converts temperatures from Fahrenheit to Celsius
# Formula: C = (F - 32) × 5/9
# Display program title
print("Temperature Converter")
print("Fahrenheit to Celsius")
print()
# We'll learn how to get user input in section 2.4
# For now, we'll use a fixed temperature value
fahrenheit = 75 # Temperature in Fahrenheit to convert
# Perform the conversion using the standard formula
# Subtract 32 first (order matters due to the formula)
celsius = (fahrenheit - 32) * 5 / 9
# Display the result
print("Temperature:", fahrenheit, "°F =", celsius, "°C")Ausgabe:
Temperature Converter
Fahrenheit to Celsius
Temperature: 75 °F = 23.88888888888889 °CBeachten Sie, wie die Kommentare den Zweck des Programms, die verwendete Formel und die Logik hinter der Berechnung erklären. Sie machen den Code deutlich leichter verständlich, besonders für jemanden, der ihn zum ersten Mal sieht.
2.2.3) Mehrzeilige Kommentare und Docstrings
Für längere Erklärungen könnten Sie mehrere einzeilige Kommentare verwenden:
# multi_line_comments.py
# This program demonstrates a longer explanation
# that spans multiple lines. Each line starts
# with a # symbol.
print("Program starts here")Python hat keine spezielle Syntax für mehrzeilige Kommentare wie manche andere Sprachen. Es gibt jedoch einen alternativen Ansatz mit dreifach gesetzten Anführungszeichen. Wir werden in Kapitel 19 mehr darüber lernen, wenn wir Docstrings (documentation strings for functions) besprechen, aber hier ist eine Vorschau:
# docstring_preview.py
"""
This is a multi-line string that can serve as a comment.
It's not technically a comment—it's a string that Python
creates but doesn't use. However, it's often used for
longer explanations at the beginning of files.
"""
print("Program starts here")Verwenden Sie vorerst # für Kommentare. Wir werden dreifach gesetzte Strings und ihre richtige Verwendung in späteren Kapiteln untersuchen.
2.2.4) Code zum Testen auskommentieren
Kommentare sind auch nützlich, um Code vorübergehend während des Testens zu deaktivieren:
# testing.py
print("This always runs")
# print("This is disabled for testing")
print("This also always runs")Diese Technik wird "Code auskommentieren" genannt. Sie ist hilfreich, wenn Sie testen möchten, wie sich Ihr Programm ohne bestimmte Zeilen verhält, diese Zeilen aber nicht dauerhaft löschen wollen.
2.3) Einführung in Variablen und Zuweisung (Vorschau)
Programme werden viel nützlicher, wenn sie Daten speichern und verarbeiten können. Variablen sind benannte Behälter, die Werte halten. Stellen Sie sich eine Variable als beschriftete Box vor, in der Sie Informationen speichern und später wieder abrufen können.
Wichtiger Hinweis: Dieser Abschnitt gibt eine Vorschau auf Variablen, damit Sie die Beispiele in diesem Kapitel besser verstehen. Wir werden Variablen in Kapitel 3 vollständig und im Detail behandeln, einschließlich Benennungsregeln, Datentypen und wie Python Variablen intern verwaltet. Fürs Erste konzentrieren wir uns auf das grundlegende Konzept und die Verwendung.
2.3.1) Variablen mit Zuweisung erstellen
Sie erstellen eine Variable mithilfe des Zuweisungsoperators (=). Das grundlegende Muster ist:
variable_name = valueDer Variablenname steht links, der Wert rechts, und das = verbindet beide:
# variables_basic.py
message = "Hello, Python!"
print(message)Ausgabe:
Hello, Python!Was hier passiert:
- Python erstellt eine Variable namens
message - Python speichert den String
"Hello, Python!"in dieser Variable - Wenn wir
messagein derprint()-Funktion (function) verwenden, ruft Python den gespeicherten Wert ab und zeigt ihn an
Variablen können unterschiedliche Datentypen speichern. Hier einige Beispiele:
# variable_types.py
greeting = "Welcome!" # A string (text)
age = 25 # A number (integer)
price = 19.99 # A number with a decimal point (float)
is_student = True # A boolean (True or False)
print(greeting)
print(age)
print(price)
print(is_student)Ausgabe:
Welcome!
25
19.99
TrueWir werden diese verschiedenen Datentypen (Strings, Integers, Floats, Booleans) in Kapitel 3 kennenlernen. Fürs Erste sollten Sie verstehen, dass Variablen verschiedene Arten von Informationen halten können.
2.3.2) Warum Variablen nützlich sind
Variablen machen Ihren Code flexibler und leichter zu warten. Vergleichen Sie diese zwei Ansätze:
Ohne Variablen:
# no_variables.py
print("Welcome, John!")
print("John, your account balance is $1000")
print("Thank you for banking with us, John!")Mit Variablen:
# with_variables.py
name = "John"
balance = 1000
print("Welcome,", name + "!")
print(name, "your account balance is $", balance)
print("Thank you for banking with us,", name + "!")Beide Programme erzeugen eine ähnliche Ausgabe, aber die Version mit Variablen hat erhebliche Vorteile:
- Einfache Änderungen: Um den Namen zu ändern, müssen Sie nur eine Zeile (
name = "John") statt drei ändern - Weniger Fehler: Sie können sich nicht versehentlich in einer Stelle im Namen vertippen
- Mehr Flexibilität: Sie können später ändern, wie
nameseinen Wert erhält (zum Beispiel, indem Sie den Benutzer fragen)
2.3.3) Variablen neu zuweisen
Variablen können ihren Wert während der Programmausführung ändern. Dies wird Neuzuweisung genannt:
# reassignment.py
score = 0
print("Initial score:", score)
score = 10
print("After first update:", score)
score = 25
print("After second update:", score)Ausgabe:
Initial score: 0
After first update: 10
After second update: 25Jedes Mal, wenn Sie einer Variable einen neuen Wert zuweisen, ersetzt Python den alten Wert durch den neuen. Der vorherige Wert wird verworfen.
Sie können sogar den aktuellen Wert einer Variable verwenden, um ihren neuen Wert zu berechnen:
# updating_values.py
count = 5
print("Starting count:", count)
count = count + 1 # Add 1 to count
print("After adding 1:", count)
count = count + 10 # Add 10 to count
print("After adding 10:", count)Ausgabe:
Starting count: 5
After adding 1: 6
After adding 10: 16Dieses Muster – count = count + 1 – ist in der Programmierung äußerst verbreitet. Es bedeutet: "Nehmen Sie den aktuellen Wert von count, addieren Sie 1 und speichern Sie das Ergebnis wieder in count." Wir lernen in Kapitel 4 eine Kurzschreibweise dafür (count += 1) kennen.
2.3.4) Vorschau auf Variablennamen
Variablennamen in Python müssen bestimmten Regeln folgen:
- Sie dürfen Buchstaben, Zahlen und Unterstriche (
_) enthalten - Sie müssen mit einem Buchstaben oder Unterstrich beginnen (nicht mit einer Zahl)
- Sie dürfen keine Leerzeichen oder Sonderzeichen wie
@,$,%etc. enthalten - Sie dürfen keine Python-Schlüsselwörter (reservierte Wörter wie
print,if,forusw.) sein
Hier sind einige gültige Variablennamen:
# valid_names.py
user_name = "Alice"
age2 = 30
_private_value = 42
totalPrice = 99.99Und einige ungültige Namen:
# These cause errors:
# 2age = 30 # Cannot start with a number
# user-name = "Alice" # Cannot contain hyphens
# total price = 99.99 # Cannot contain spaces
# print = "Hello" # Cannot use Python keywordsBest Practice: Verwenden Sie aussagekräftige Namen, die erklären, was die Variable repräsentiert. user_age ist besser als a, und total_price ist besser als tp. Wir werden Benennungskonventionen in Kapitel 3 ausführlich besprechen.
2.3.5) Variablen machen Programme dynamisch
Die wahre Stärke von Variablen zeigt sich, wenn Sie sie verwenden, um Programme dynamischer zu machen:
# dynamic_greeting.py
name = "Alice"
age = 28
city = "Seattle"
print("Personal Information")
print("====================")
print("Name:", name)
print("Age:", age)
print("City:", city)
print()
print("Summary:", name, "is", age, "years old and lives in", city)Ausgabe:
Personal Information
====================
Name: Alice
Age: 28
City: Seattle
Summary: Alice is 28 years old and lives in SeattleIndem Sie die Werte von name, age und city oben im Programm ändern, können Sie die gesamte Ausgabe anpassen, ohne die print()-Anweisungen zu verändern. Diese Trennung von Daten und Logik ist ein grundlegendes Prinzip guter Programmierung.
Ausblick: In Kapitel 3 werden wir Variablen umfassend untersuchen, einschließlich Datentypen, Typumwandlung, Benennungsregeln und wie Python Variablen intern verwaltet. Fürs Erste haben Sie genug Verständnis, um Variablen in einfachen Programmen zu verwenden.
2.4) Tastatureingaben mit input() einlesen
Bisher waren alle Daten in unseren Programmen fest im Code hinterlegt – direkt hineingeschrieben. Echte Programme müssen jedoch oft mit Benutzern interagieren und Informationen akzeptieren, die diese bereitstellen. Pythons input()-Funktion (function) macht dies möglich.
2.4.1) Einfache Eingabe
Die input()-Funktion (function) zeigt eine Nachricht (genannt Prompt) an und wartet, bis der Benutzer etwas eingibt und Enter drückt. Das Grundmuster lautet:
# basic_input.py
name = input("What is your name? ")
print("Hello,", name + "!")Wenn Sie dieses Programm ausführen, passiert Folgendes:
What is your name? Alice
Hello, Alice!Schauen wir uns das im Detail an:
- Python führt
input("What is your name? ")aus - Python zeigt den Prompt an:
What is your name? - Das Programm pausiert und wartet, bis der Benutzer etwas eingibt
- Der Benutzer tippt
Aliceund drückt Enter - Python speichert den Text
"Alice"in der Variablename - Das Programm läuft weiter und gibt die Begrüßung aus
Der Text, den Sie an input() übergeben, ist der Prompt – also das, was der Benutzer vor der Eingabe sieht. Fügen Sie am Ende Ihres Prompts immer ein Leerzeichen ein (beachten Sie das Leerzeichen nach dem Fragezeichen), um den Prompt von der Benutzereingabe zu trennen und die Ausgabe lesbarer zu machen.
2.4.2) input() gibt immer einen String zurück
Das ist entscheidend zu verstehen: input() gibt immer einen String zurück, selbst wenn der Benutzer Zahlen eingibt:
# input_as_string.py
age = input("How old are you? ")
print("You entered:", age)
print("The type is:", type(age))Wenn Sie dies ausführen und 25 eingeben:
How old are you? 25
You entered: 25
The type is: <class 'str'>Auch wenn der Benutzer 25 eingibt, speichert Python dies als String "25" und nicht als Zahl 25. Die Funktion (function) type() bestätigt dies – sie zeigt, dass age ein String (str) ist und kein Integer.
Das ist wichtig, wenn Sie Berechnungen durchführen möchten. Sie können mit Strings nicht direkt rechnen:
# This causes an error:
age = input("How old are you? ")
next_year_age = age + 1 # Error! Can't add a number to a stringDies führt zu einem Fehler, weil Python nicht weiß, wie es die Zahl 1 zu dem String "25" addieren soll.
2.4.3) Eingaben in Zahlen umwandeln
Um Eingaben als Zahl zu verwenden, müssen Sie sie explizit mit int() (für ganze Zahlen) oder float() (für Kommazahlen) umwandeln:
# input_conversion.py
age_string = input("How old are you? ")
age = int(age_string) # Convert string to integer
next_year = age + 1
print("Next year, you will be", next_year, "years old")Wenn Sie dies ausführen und 25 eingeben:
How old are you? 25
Next year, you will be 26 years oldSie können Eingabe und Umwandlung auch in einer Zeile kombinieren:
# input_conversion_compact.py
age = int(input("How old are you? "))
next_year = age + 1
print("Next year, you will be", next_year, "years old")Das ist kompakter und der Stil, den Sie am häufigsten sehen werden. Es funktioniert von innen nach außen:
input("How old are you? ")holt die Eingabe des Benutzers als Stringint(...)wandelt diesen String in einen Integer um- Der Integer wird in der Variable
agegespeichert
Hier ein Beispiel mit float() für Kommazahlen:
# float_input.py
price = float(input("Enter the price: $"))
tax_rate = 0.08
tax = price * tax_rate
total = price + tax
print("Price: $", price)
print("Tax: $", tax)
print("Total: $", total)Wenn Sie dies ausführen und 19.99 eingeben:
Enter the price: $19.99
Price: $ 19.99
Tax: $ 1.5992
Total: $ 21.5892Wichtig: Wenn der Benutzer Text eingibt, der nicht in eine Zahl umgewandelt werden kann, löst Python einen Fehler aus. Wenn Sie beispielsweise int(input("Enter a number: ")) verwenden und der Benutzer "hello" eingibt, kann Python "hello" nicht in einen Integer umwandeln und zeigt eine Fehlermeldung an. Wir werden in Kapitel 27 lernen, wie wir mit solchen Situationen elegant umgehen können, wenn wir Exception Handling behandeln.
2.4.4) Mehrere Eingaben
Programme benötigen oft mehrere Informationen vom Benutzer. Rufen Sie einfach input() mehrfach auf:
# multiple_inputs.py
print("Please enter your information:")
print()
first_name = input("First name: ")
last_name = input("Last name: ")
age = int(input("Age: "))
city = input("City: ")
print()
print("Summary")
print("=======")
print("Name:", first_name, last_name)
print("Age:", age)
print("Location:", city)Beispielinteraktion:
Please enter your information:
First name: John
Last name: Smith
Age: 30
City: Boston
Summary
=======
Name: John Smith
Age: 30
Location: BostonBeachten Sie, wie das Programm nacheinander nach jeder Information fragt. So ist für den Benutzer klar, was er eingeben soll und in welcher Reihenfolge.
2.4.5) Aussagekräftige Prompts erstellen
Gute Prompts machen Ihre Programme einfacher zu bedienen. Hier einige Richtlinien:
Seien Sie konkret, was Sie möchten:
# Good prompts
name = input("Enter your full name: ")
temperature = float(input("Enter temperature in Fahrenheit: "))
quantity = int(input("How many items do you want to purchase? "))Geben Sie erwartetes Format oder Einheiten an:
# format_prompts.py
date = input("Enter date (MM/DD/YYYY): ")
phone = input("Enter phone number (XXX-XXX-XXXX): ")
price = float(input("Enter price in dollars (without $): "))Verwenden Sie klare, freundliche Sprache:
# friendly_prompts.py
print("Welcome to the Temperature Converter!")
print()
temp = float(input("Please enter a temperature in Fahrenheit: "))Klar formulierte Prompts verringern die Verwirrung der Benutzer und machen Ihre Programme professioneller.
2.5) Einfache Input-Process-Output-Programme
Die meisten Programme folgen einem häufigen Muster, dem Input-Process-Output (IPO):
- Input: Daten vom Benutzer oder einer anderen Quelle holen
- Process: Berechnungen oder Umwandlungen mit den Daten durchführen
- Output: Die Ergebnisse anzeigen
Dieses Muster ist so grundlegend, dass Sie es in unzähligen Programmen während Ihrer Programmierreise verwenden werden. Schauen wir es uns mit mehreren vollständigen Beispielen an.
2.5.1) Beispiel: Temperaturumrechner
Erstellen wir ein vollständiges Programm, das Temperaturen von Fahrenheit nach Celsius umrechnet:
# temperature_converter.py
# This program converts a temperature from Fahrenheit to Celsius
# Formula: C = (F - 32) × 5/9
print("Temperature Converter")
print("Fahrenheit to Celsius")
print("=" * 30) # Print a line of equal signs
print()
# INPUT: Get temperature from user
fahrenheit = float(input("Enter temperature in Fahrenheit: "))
# PROCESS: Convert using the formula
celsius = (fahrenheit - 32) * 5 / 9
# OUTPUT: Display the result
print()
print("Result:", fahrenheit, "°F =", celsius, "°C")Beispielinteraktion:
Temperature Converter
Fahrenheit to Celsius
==============================
Enter temperature in Fahrenheit: 75
Result: 75.0 °F = 23.88888888888889 °CBeachten Sie, wie das Programm klar dem IPO-Muster folgt:
- Input: Die Fahrenheit-Temperatur einlesen
- Process: Die Umrechnungsformel anwenden
- Output: Das Celsius-Ergebnis anzeigen
Die Kommentare im Code markieren diese drei Abschnitte ausdrücklich und machen die Struktur des Programms deutlich.
2.5.2) Beispiel: Flächenberechnung für ein Rechteck
Hier ist ein weiteres IPO-Beispiel, das die Fläche eines Rechtecks berechnet:
# rectangle_area.py
# Calculate the area of a rectangle
# Formula: Area = length × width
print("Rectangle Area Calculator")
print("=" * 30)
print()
# INPUT: Get dimensions from user
length = float(input("Enter the length: "))
width = float(input("Enter the width: "))
# PROCESS: Calculate area
area = length * width
# OUTPUT: Display the result
print()
print("A rectangle with length", length, "and width", width)
print("has an area of", area, "square units")Beispielinteraktion:
Rectangle Area Calculator
==============================
Enter the length: 5.5
Enter the width: 3.2
A rectangle with length 5.5 and width 3.2
has an area of 17.6 square units2.5.3) Beispiel: Einkaufs-Gesamtsumme berechnen
Dieses Beispiel berechnet eine Einkaufssumme inklusive Steuer:
# shopping_total.py
# Calculate total cost including tax
print("Shopping Total Calculator")
print("=" * 30)
print()
# INPUT: Get price and tax rate
price = float(input("Enter item price: $"))
tax_rate = float(input("Enter tax rate (as decimal, e.g., 0.08 for 8%): "))
# PROCESS: Calculate tax and total
tax_amount = price * tax_rate
total = price + tax_amount
# OUTPUT: Display itemized breakdown
# Note: Comma in print() adds a space after $
print()
print("Purchase Summary")
print("-" * 30)
print("Item price: $", price)
print("Tax rate: ", tax_rate * 100, "%")
print("Tax amount: $", tax_amount)
print("-" * 30)
print("Total: $", total)Beispielinteraktion:
Shopping Total Calculator
==============================
Enter item price: $49.99
Enter tax rate (as decimal, e.g., 0.08 for 8%): 0.08
Purchase Summary
------------------------------
Item price: $ 49.99
Tax rate: 8.0 %
Tax amount: $ 3.9992
------------------------------
Total: $ 53.98922.6) Einfaches Debugging durch Lesen einfacher Fehlermeldungen
Selbst erfahrene Programmierer machen Fehler. Zu lernen, wie man Fehlermeldungen liest und versteht, ist eine grundlegende Fähigkeit, die Ihnen unzählige Stunden Frustration ersparen wird. Pythons Fehlermeldungen sind tatsächlich recht hilfreich – sie sagen Ihnen, was schiefgelaufen ist und wo das Problem aufgetreten ist.
Die Begriffe "Fehlermeldung" und "Traceback" hängen zusammen, sind aber leicht unterschiedlich: Ein Traceback ist der vollständige Bericht, den Python anzeigt, wenn ein Fehler auftritt, einschließlich Fehlertyp, Beschreibung und dem Pfad durch Ihren Code, der zum Fehler geführt hat. Die Fehlermeldung ist die letzte Zeile des Tracebacks, die beschreibt, was schiefgelaufen ist. Im informellen Gespräch verwenden Programmierer oft "Fehlermeldung", wenn sie den gesamten Traceback meinen.
2.6.1) Fehlermeldungen verstehen
Wenn Python auf einen Fehler stößt, zeigt es einen Traceback an – einen detaillierten Bericht darüber, was schiefgelaufen ist. Schauen wir uns ein einfaches Beispiel an:
# error_example.py
print("Starting the program")
print("This line works fine"
print("This line might not be reached")Wenn Sie versuchen, dies auszuführen, zeigt Python Folgendes an:
File "error_example.py", line 2
print("This line works fine"
^
SyntaxError: '(' was never closedSchauen wir uns an, was Ihnen diese Fehlermeldung mitteilt:
- Dateiname:
error_example.py– die Datei, in der der Fehler aufgetreten ist - Zeilennummer:
line 2– wo Python das Problem erkannt hat - Codeausschnitt: Zeigt die problematische Zeile mit einem
^, das auf die Stelle zeigt, an der Python das Problem bemerkt hat - Fehlertyp:
SyntaxError– welche Art von Fehler aufgetreten ist - Beschreibung:
'(' was never closed– eine menschenlesbare Erklärung
Der Fehler ist aufgetreten, weil wir die schließende Klammer in Zeile 2 vergessen haben. Python hat versucht, die nächste Zeile als Teil derselben print()-Anweisung zu lesen und wurde durcheinandergebracht.
2.6.2) Häufige Fehlertypen für Anfänger
Schauen wir uns die häufigsten Fehler an, die Ihnen am Anfang begegnen, und wie Sie sie beheben können.
SyntaxError: Invalid Syntax
Dies ist der häufigste Fehler für Anfänger. Er bedeutet, dass Python Ihren Code nicht verstehen konnte, weil er nicht den Grammatikregeln von Python entspricht.
Fehlender Doppelpunkt:
# missing_colon.py
name = input("What is your name? ")
if name == "Alice" # Missing colon
print("Hello, Alice!")Fehler:
File "missing_colon.py", line 2
if name == "Alice"
^
SyntaxError: expected ':'Hinweis: Wir haben if-Anweisungen noch nicht gelernt – wir behandeln sie in Kapitel 8. Dieses Beispiel zeigt nur, wie der Fehler aussieht.
Nicht übereinstimmende Anführungszeichen:
# mismatched_quotes.py
message = "Hello, world!'
print(message)Fehler:
File "mismatched_quotes.py", line 1
message = "Hello, world!'
^
SyntaxError: unterminated string literal (detected at line 1)Der Fehler tritt auf, weil der String mit einem doppelten Anführungszeichen (") beginnt, aber mit einem einfachen (') endet. Python erwartet denselben Anführungszeichen-Typ am Anfang und am Ende.
NameError: Name Not Defined
Dieser Fehler tritt auf, wenn Sie versuchen, eine Variable zu verwenden, die nicht existiert:
# name_error.py
print("Starting calculation")
result = total + 10 # 'total' was never created
print(result)Fehler:
Traceback (most recent call last):
File "name_error.py", line 2, in <module>
result = total + 10
^^^^^
NameError: name 'total' is not definedPython teilt Ihnen mit, dass es nicht weiß, was total ist, weil Sie diese Variable nie erstellt haben. Die Korrektur besteht darin, total zu definieren, bevor Sie es verwenden:
# name_error_fixed.py
print("Starting calculation")
total = 0 # Define the variable first
result = total + 10
print(result)Häufige Ursachen für NameError:
- Tippfehler in Variablennamen (
totlastatttotal) - Verwendung einer Variable, bevor ihr ein Wert zugewiesen wurde
- Vollständiges Vergessen, eine Variable zu erstellen
TypeError: Unsupported Operand Type(s)
Dieser Fehler tritt auf, wenn Sie versuchen, eine Operation mit inkompatiblen Typen auszuführen:
# type_error.py
age = input("How old are you? ")
next_year = age + 1 # Can't add a number to a string
print("Next year:", next_year)Fehler:
Traceback (most recent call last):
File "type_error.py", line 2, in <module>
next_year = age + 1
~~~~^~~
TypeError: can only concatenate str (not "int") to strPython teilt Ihnen mit, dass age ein String ist (weil input() Strings zurückgibt) und dass Sie keine Zahl zu einem String addieren können. Die Lösung besteht darin, die Eingabe in einen Integer umzuwandeln:
# type_error_fixed.py
age = int(input("How old are you? ")) # Convert to integer
next_year = age + 1
print("Next year:", next_year)ValueError: Invalid Literal
Dieser Fehler tritt auf, wenn Sie versuchen, einen String in eine Zahl umzuwandeln, der String aber keine gültige Zahl darstellt:
# value_error.py
age = int(input("How old are you? "))
print("You are", age, "years old")Wenn der Benutzer statt einer Zahl Text eingibt:
How old are you? twenty
Traceback (most recent call last):
File "value_error.py", line 1, in <module>
age = int(input("How old are you? "))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: 'twenty'Python teilt Ihnen mit, dass es den String "twenty" nicht in einen Integer umwandeln kann. Der Benutzer muss stattdessen eine Zahl wie 20 eingeben.
Wichtig: Im Moment wird Ihr Programm abstürzen, wenn Benutzer ungültige Eingaben machen, und eine Fehlermeldung anzeigen. Das ist für Anfängerprogramme normal. In Kapitel 27 werden wir lernen, wie wir mit solchen Situationen durch Exception Handling elegant umgehen, damit Ihr Programm sich von Fehlern erholen und den Benutzer erneut um Eingabe bitten kann.
2.6.3) Tracebacks sorgfältig lesen
Wenn ein Fehler auftritt, zeigt Python einen Traceback an, der den Fehler durch Ihren Code zurückverfolgt. Für einfache Programme ist der Traceback kurz:
# simple_traceback.py
print("Starting program")
name = input("Enter your name: ")
age = int(input("Enter your age: "))
print("Hello,", name)
print("Next year you'll be", age + 1)Wenn der Benutzer eine ungültige Eingabe für age macht:
Starting program
Enter your name: Alice
Enter your age: abc
Traceback (most recent call last):
File "simple_traceback.py", line 3, in <module>
age = int(input("Enter your age: "))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: 'abc'Der Traceback zeigt:
- Den Dateinamen und die Zeilennummer, in der der Fehler aufgetreten ist
- Die tatsächliche Codezeile, die das Problem verursacht hat
- Den Fehlertyp und eine Beschreibung
Lesestrategie: Beginnen Sie am unteren Ende des Tracebacks und arbeiten Sie sich nach oben. Die letzte Zeile sagt Ihnen, was schiefgelaufen ist. Die Zeilen darüber zeigen, wo in Ihrem Code der Fehler aufgetreten ist.
2.6.4) Häufige Debugging-Strategien
Wenn Sie auf einen Fehler stoßen, gehen Sie folgendermaßen vor:
1. Lesen Sie die Fehlermeldung sorgfältig
Keine Panik! Die Fehlermeldung versucht, Ihnen zu helfen. Lesen Sie sie vollständig und versuchen Sie zu verstehen, was sie sagt.
2. Schauen Sie auf die Zeilennummer
Die Fehlermeldung sagt Ihnen, welche Zeile Python für problematisch hält. Manchmal liegt der eigentliche Fehler jedoch in der vorherigen Zeile. Zum Beispiel könnte eine fehlende schließende Klammer in Zeile 2 erst erkannt werden, wenn Python Zeile 3 liest.
3. Prüfen Sie auf häufige Fehler
- Fehlende oder nicht übereinstimmende Anführungszeichen
- Fehlende schließende Klammern oder eckige Klammern
- Fehlende Doppelpunkte (bei Anweisungen, die wir später wie
if,for,whilekennenlernen) - Tippfehler in Variablennamen
- Vergessen, Eingaben in Zahlen umzuwandeln
4. Verwenden Sie print(), um Werte zu untersuchen
Wenn Sie nicht sicher sind, was falsch läuft, fügen Sie print()-Anweisungen hinzu, um zu sehen, welche Werte Ihre Variablen haben:
# debugging_with_print.py
price = input("Enter price: ")
print("DEBUG: price =", price, "type =", type(price)) # Debugging line
tax = price * 0.08 # This will cause an error
print("Tax:", tax)Die Debug-Zeile zeigt Ihnen, dass price ein String und keine Zahl ist, und hilft Ihnen so, das Problem zu erkennen.
5. Kommentieren Sie Code aus, um das Problem einzugrenzen
Wenn Sie mehrere Zeilen haben und nicht sicher sind, welche den Fehler verursacht, kommentieren Sie Zeilen aus, bis der Fehler verschwindet:
# isolating_error.py
name = input("Enter name: ")
# age = int(input("Enter age: ")) # Commented out for testing
# city = input("Enter city: ") # Commented out for testing
print("Name:", name)Sobald der Fehler verschwindet, wissen Sie, dass das Problem in einer der auskommentierten Zeilen liegt.
6. Beginnen Sie mit einer einfachen Version
Wenn Ihr Programm nicht funktioniert, vereinfachen Sie es auf das Minimum:
# simplified_version.py
# Start with just the basic structure
print("Program starting")
# Add one feature at a time and testSobald die einfache Version funktioniert, fügen Sie schrittweise Funktionen hinzu und testen nach jeder Erweiterung.
2.6.5) Fehler verhindern
Während Debugging wichtig ist, ist es noch besser, Fehler von vornherein zu vermeiden:
Schreiben Sie Code schrittweise
Schreiben Sie nicht Ihr gesamtes Programm und führen es dann zum ersten Mal aus. Schreiben Sie ein paar Zeilen, führen Sie das Programm aus, stellen Sie sicher, dass diese Zeilen funktionieren, und fügen Sie dann mehr hinzu. So wissen Sie, dass ein neu auftretender Fehler in dem Code liegt, den Sie gerade hinzugefügt haben.
# incremental_development.py
# Step 1: Get input and test
name = input("Enter name: ")
print("DEBUG: Got name:", name)
# Step 2: Add more input and test
# age = int(input("Enter age: "))
# print("DEBUG: Got age:", age)
# Step 3: Add processing and test
# ... and so onVerwenden Sie aussagekräftige Variablennamen
Klar benannte Variablen helfen, Fehler zu vermeiden:
# Clear variable names make errors less likely
user_age = int(input("Enter your age: "))
next_year_age = user_age + 1Fügen Sie Kommentare hinzu, um Ihre Logik zu erklären
Kommentare helfen Ihnen (und anderen) zu verstehen, was der Code tun soll, und erleichtern es, zu erkennen, wenn er etwas anderes tut:
# temperature_with_comments.py
# Get temperature in Fahrenheit from user
fahrenheit = float(input("Enter temperature in Fahrenheit: "))
# Convert to Celsius using the standard formula: C = (F - 32) × 5/9
celsius = (fahrenheit - 32) * 5 / 9
# Display the result
print(fahrenheit, "°F =", celsius, "°C")Testen Sie mit unterschiedlichen Eingaben
Testen Sie Ihr Programm nicht nur einmal. Probieren Sie verschiedene Eingaben, einschließlich Randfällen:
- Normale Werte:
25,100 - Null:
0 - Negative Zahlen:
-10 - Kommazahlen:
3.14 - Sehr große Zahlen:
1000000
So entdecken Sie Probleme, bevor Benutzer auf sie stoßen.
2.6.6) Wann Sie um Hilfe bitten sollten
Manchmal stoßen Sie auf Fehler, die Sie nicht alleine lösen können. Bevor Sie um Hilfe bitten:
- Lesen Sie die Fehlermeldung sorgfältig – Stellen Sie sicher, dass Sie verstehen, was sie sagt
- Suchen Sie nach dem Fehler – Kopieren Sie die Fehlermeldung (ohne Ihre spezifischen Variablennamen) und suchen Sie online. Viele Fehler sind bereits aufgetreten und wurden von anderen gelöst
- Überprüfen Sie Ihren Code sorgfältig – Achten Sie auf Tippfehler, fehlende Satzzeichen und häufige Fehler
- Erstellen Sie ein minimales Beispiel – Reduzieren Sie Ihren Code auf die kleinste Version, die den Fehler noch erzeugt
Wenn Sie dann um Hilfe bitten, geben Sie an:
- Die vollständige Fehlermeldung
- Den Code, der den Fehler erzeugt
- Was Sie erwartet haben
- Was tatsächlich passiert ist
- Was Sie bereits ausprobiert haben
Denken Sie daran: Fehler sind ein normaler Teil der Programmierung. Jeder Programmierer, von Anfängern bis zu Experten, stößt täglich auf Fehler. Der Unterschied ist, dass erfahrene Programmierer gelernt haben, Fehlermeldungen effizient zu lesen und kennen häufige Lösungen. Diese Fähigkeiten werden Sie mit der Zeit entwickeln.
Sie haben nun die grundlegenden Bausteine der Python-Programmierung kennengelernt: Ausgabe mit print() anzeigen, Code mit Kommentaren dokumentieren, Daten in Variablen speichern, Benutzereingaben mit input() einholen, das Input-Process-Output-Muster anwenden und einfache Fehler debuggen.
Diese Konzepte bilden die Grundlage für alles Weitere, was Sie in Python lernen werden. Im nächsten Kapitel tauchen wir tiefer in Variablen ein und erkunden Pythons grundlegende Datentypen, sodass Sie ein vollständigeres Verständnis davon bekommen, wie Python verschiedene Arten von Informationen speichert und verarbeitet.
Wichtige Erkenntnisse aus diesem Kapitel:
- Verwenden Sie
print(), um Text und andere Informationen für Benutzer anzuzeigen - Verwenden Sie Kommentare (
#), um Ihren Code zu erklären und Ihr Denken zu dokumentieren - Speichern Sie Daten in Variablen mit Hilfe der Zuweisung (
=) - Holen Sie Benutzereingaben mit
input()und wandeln Sie sie bei Bedarf in Zahlen um - Strukturieren Sie Programme mit dem Input-Process-Output-Muster
- Lesen Sie Fehlermeldungen sorgfältig – sie sollen Ihnen helfen, Probleme zu beheben
- Schreiben Sie Code schrittweise und testen Sie häufig, um Fehler frühzeitig zu finden
Mit diesen Fähigkeiten können Sie nun einfache, aber vollständige interaktive Programme schreiben. Während Sie weiterlernen, werden Sie auf diesen Grundlagen aufbauen und immer anspruchsvollere Anwendungen erstellen.