# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# # Einführung in die Programmierung mit Python

# ## Die Funktionsweise von Programmen
#
# Programme funktionieren nach dem gleichen Prinzip:
#
# 1. Es werden Daten geladen.
# 2. Diese Daten werden verarbeitet.
# 3. Das Ergebnis der Verarbeitung wird ausgegeben.
#
# Die Daten können aus verschiedenen Quellen kommen. Die Verarbeitung kann ganz unterschiedlich ablaufen. Und das Ergebnis kann auf verschiedene Weisen ausgegeben werden.
#
# Daten können aus Dateien, von einer grafischen Benutzeroberfläche, aus dem Internet, von Sensoren oder aus ganz anderen Quellen stammen.
#
# Bei der Verarbeitung kommt es einerseits darauf an, was für Daten man hat, und andererseits, was man damit anstellen will. Vielleicht will man die Daten sortieren, gruppieren, umsrukturieren, umformatieren, überprüfen oder sonst etwas mit ihnen anstellen.
#
# Die Ausgabe kann wiederum auf verschiedenste Weise erfolgen. Informationen können auf den Bildschirm ausgegeben, in Dateien abgespeichert, auf Papier ausgedruckt, oder per Internet weitergeleitet werden.

# ### Daten einlesen
# Mithilfe der Funktion `input()` können Daten direkt vom Benutzer eingelesen werden. Dieser tippt die Informationen über die Tastatur ein, und die Funktion `input()` liefert die eingegebenen Daten an das Programm zurück.
#
# Das folgende Programm fragt den Benutzer nach dem Namen und speichert diesen nach der Eingabe in der Variablen `name` ab.
#
# Markiere den untenstehenden Code, sodass ein Rahmen darum herum erscheint. Drücke dann `Ctrl`+`Return`, um das Programm auszuführen. Gib dann deinen Namen ein, und bestätige mit `Return`:

name = input("Wie heisst du? ")

# ### Daten verarbeiten
#
# Das Programm hat nun die Daten eingelesen. Es handelt sich dabei nur um eine einzelne Information: Den Namen des Benutzers. Dieser kann aber bereits zur Verarbeitung verwendet werden.
#
# Eine mögliche Verarbeitung besteht darin, den Namen in Grossbuchstaben zu schreiben. Hierzu gibt es eine sogenannte "Methode" namens `upper()`, welche direkt auf dem Namen ausgeführt werden kann:

name_in_grossbuchstaben = name.upper()

# Eine zusätzliche Variable namens `name_in_grossbuchstaben` enthält nun den eingegebenen Namen, jedoch komplett in Grossbuchstaben geschrieben.
#
# ### Daten ausgeben
#
# Als letzter Schritt kann dieser Name nun ausgegeben werden. Hierzu ruft man die Funktion `print()` auf und übergibt ihr die auszugebende Variable als Argument:

print(name_in_grossbuchstaben)

# ## Ein nützlich(er)es Programm
#
# Nach dem Prinzip "Eingabe, Verarbeitung, Ausgabe" lassen sich verschiedenste Programme entwickeln. Natürlich ist es möglich, die eingelesenen Programme auf eine andere Art zu verarbeiten, um dann eine andere Ausgabe zu erzeugen.
#
# Das Grossschreiben eines eingegebenen Namens ist nicht besonders nützlich. Es wäre aber bereits interessanter, wenn man erfahren würde, wie viele Buchstaben ein eingegebener Name hat.
#
# Der Name kann wieder gleich eingelesen werden:

name = input("Wie heisst du? ")

# Um die Anzahl Buchstaben zu zählen, kommt die Funktion `len()` zum Einsatz (kurz für "length"). Hierbei handelt es sich nicht um eine "Methode" wie zuvor `upper()`, welche direkt auf dem Namen aufgerufen werden kann, sondern um eine Funktion, der man eine Variable übergeben muss (ähnlich wie `print()`):

anzahl_buchstaben = len(name)

# Die ermittelte Anzahl Buchstaben, die der eingegebene Name hat, kann nun mittels `print()` ausgegeben werden:

print(anzahl_buchstaben)

# ## Ein einfacher Taschenrechner
#
# Mit einer einzigen Information lassen sich kaum nützliche Programme schreiben. Die Stärke von Comptern ist, dass sie mit sehr vielen und grossen Daten umgehen können. Computer werden teilweise auch als "Rechner" bezeichnet. Dies kommt daher, dass Computer Maschinen sind, die sich besonders zum Rechnen eignen.
#
# Eine einfache Rechnung ist die Addition, z.B. 3 + 5 = 8. Hierzu braucht man keinen Computer. Das Eingeben der beiden Zahlen 3 und 5 dauert schliesslich länger, als wenn man die Berechnung im Kopf anstellen würde.
#
# Etwas anders ist es bei grösseren Zahlen. Hier ist es effizienter, wenn man den Computer diese berechnen lässt. Hierzu müssen diese Zahlen aber zunächst wieder eingelesen werden:

zahl_1 = input("Bitte gib eine Zahl ein: ")
zahl_2 = input("Bitte gib noch eine Zahl ein: ")

# Diese beiden Zahlen können nun mit dem Plus-Operator `+` addiert werden:

summe = zahl_1 + zahl_2

# Das Ergebnis kann wieder mit `print()` ausgegeben werden:

print(summe)

# 1000 + 2000 = 10002000
#
# Hier kann etwas nicht stimmen! Das Programm funktioniert nicht so, wie es sollte! Statt die beiden Zahlen zusammenzurechnen, werden sie einfach aneinandergehängt! Kann der Computer etwa nicht rechnen?
#
# Tatsächlich hat der Computer genau das getan, was wir ihm gesagt haben. Das Problem ist, dass wir offenbar etwas anderes von ihm wollten, als wir es eingegeben haben.
#
# Der Computer unterscheidet nämlich zwischen verschiedenen _Datentypen_. Liest man Daten über `input()` ein, wird immer _Text_ zurückgegeben. Mit Text lässt sich jedoch schlecht rechnen. Der Text muss zunächst in eine Zahl umgewandelt werden, damit wir damit rechnen können. Diesen Vorgang nennt man _Konvertieren_.
#
# Um Text in eine Zahl zu konvertieren, kann man `int()` verwenden, das praktisch wie eine Funktion verwendet wird:

zahl_1 = int(zahl_1)
zahl_2 = int(zahl_2)

# Nun hat man es mit richtigen Zahlen zu tun, mit denen man auch rechnen kann:

summe = zahl_1 + zahl_2
print(summe)

# Die Berechnung funktioniert nun korrekt!

# ### Weitere Rechenarten
#
# Neben der Addition gibt es noch viele weitere Möglichkeiten, wie zwei Zahlen miteinander verrechnet werden können. Da gibt es z.B. die weiteren Grundrechenarten (Subtraktion, Multiplikation und Division). Das Potenzieren ist eine weitere Möglichkeit (Zahl 1 "hoch" Zahl 2 nehmen).
#
# Für diese weiteren Rechenarten bietet Python die folgenden Operatoren an:
#
# - Subtraktion: `-`
# - Multiplikation: `*`
# - Division: `/`
# - Potenz: `**`
#
# Probiere diese Operatoren unten aus. Die Zahlen sind vordefiniert. Die `print()`-Aufrufe, um die Ergebnisse mitsamt Berechnung auszugeben, sind auch schon vorgegeben.

# +
zahl_1 = 5
zahl_2 = 3

# Ab hier musst du den Code erweitern:
summe = 
differenz = 
produkt = 
quotient = 
potenz = 
# Ab hier kannst du den Code so lassen, wie er ist:

print(f'{zahl_1} + {zahl_2} = {summe}')
print(f'{zahl_1} - {zahl_2} = {differenz}')
print(f'{zahl_1} * {zahl_2} = {produkt}')
print(f'{zahl_1} / {zahl_2} = {quotient}')
print(f'{zahl_1} ** {zahl_2} = {potenz}')
# -

# Hat das geklappt? Sehr gut! Damit kannst du bereits einen einfachen Taschenrechner schreiben!

StarcoderdataJupyterScriptsDedupFiltered