Python Intro

Werbung
Python Intro
Vorsemesterkurs Informatik
Praktischer Teil
WS2012/13
2.Oktober 2012
Vorkurs Informatik - WS 2012/13
Let's get started
Vorkurs Informatik - WS 2012/13
}
Skript,
Übungen,
Folien...
Alles zum Praxisteil
auf http://vorkurs.cs.unifrankfurt.de
Bücher:
Vorkurs Informatik - WS 2012/13
Fragen! Fragen! Fragen!
Vorkurs Informatik - WS 2012/13
So wird gecoded!
Vorkurs Informatik - WS 2012/13
Python
• Höhere Programmiersprache
o Sie ist für Menschen einfacher zu verstehen, als die
"Muttersprache" des Computers
• Aber: der Computer versteht sie nicht (direkt):
o Wir brauchen einen "Übersetzer" (Interpreter)
• http://www.python.org
o Kostenlos für Win/Mac/Linux
o
Text → Magie → 101010101...
Vorkurs Informatik - WS 2012/13
Idle3
Vorkurs Informatik - WS 2012/13
REPL (Read Evaluate Print Loop)
Vorkurs Informatik - WS 2012/13
Syntax
Vorkurs Informatik - WS 2012/13
Invalid Syntax?
Sprachen haben Syntax und Semantik
Syntax: Wie Sätze gebaut sein müssen, damit sie (in
dieser Sprache) richtig sind
Semantik: Bestimmt was der Satz bedeutet.
'Hallo Vorkurs' ist also wohl falsch gebaut
Vorkurs Informatik - WS 2012/13
Nicht Aufgeben!
Fehler können vor allem am Anfang frustrieren.
Nicht aufgeben - das geht jedem so!
Hier findet ihr Hilfe:
Vorkurs Informatik - WS 2012/13
Zahlen
Vorkurs Informatik - WS 2012/13
Einfache Rechenoperationen
Vorkurs Informatik - WS 2012/13
Einfache Rechenoperationen
Aber es geht noch weiter, was ist eigentlich wenn ich // oder % benutze?
Vorkurs Informatik - WS 2012/13
Vorrang
Es gilt: Modulo vor Punkt vor Strich und von links nach rechts!
Vorkurs Informatik - WS 2012/13
Float VS Integer
Integer
Integer → Ganze Zahl im Computer
Float
Float → Zahl in der ein Komma (bei uns Punkt) vorkommt
Bemerkung
Float und Integer sind zwei verschiede Dinge! Aber es sind beides Zahlen.
Vorkurs Informatik - WS 2012/13
Float VS Integer
Ich will aber...
Integer haben:
int() zur Rettung!
int(x) wandelt x in einen Integer um!
Float haben:
float(x) wandelt x in eine Float um!
Definition
Umwandeln von einer Art in eine ander Art nennt man casten.
Vorkurs Informatik - WS 2012/13
Strings
Vorkurs Informatik - WS 2012/13
Der String aka Text
Wir sagen dem Interpreter, dass etwas Text (und kein
Code ist) indem wir es in Hochkomma setzen:
>>> 'Hallo Vorkurs!'
'Hallo Vorkurs!'
>>> "Ich bin normaler Text"
'Ich bin normaler Text'
Vorkurs Informatik - WS 2012/13
Escape-Sequenzen
Vorkurs Informatik - WS 2012/13
Bool und Vergleiche
Vorkurs Informatik - WS 2012/13
Bool
Es gibt genau zwei Wahrheitswerte:
True (wahr) und False (falsch).
Beispielsweise ist das Ergebnis eines Vergleiches ein
Wahrheitswert (bool)
In Python heißt dieser Datentyp bool nach George Boole, der sich viel
mit Wahrheitswerten beschäftigte.
Vorkurs Informatik - WS 2012/13
Booltabelle
"Und" Kombiniert (Konjunktion) "Oder" Kombiniert (Disjunktion)
>>> True and True
True
>>> True and False
False
>>> False and True
False
>>> False and False
False
>>> True or True
True
>>> True or False
True
>>> False or True
True
>>> False or False
False
Vorkurs Informatik - WS 2012/13
Negationen
Vorkurs Informatik - WS 2012/13
Typen
Vorkurs Informatik - WS 2012/13
Was ist das?
Wir kennen schon Typen!
Integer und Float sind Typen!
String ist auch ein Typ!
Alles HAT einen Typ!
Vorkurs Informatik - WS 2012/13
Wofür brauch ich sowas?
Wofür man Typen braucht, sieht man an einem einfachen Beispiel:
Wir lernen: Man kann Typen mixen, aber nicht alle.
Vorkurs Informatik - WS 2012/13
Ich brauch aber...
Man kann auch Typen “erzwingen” und auch Dinge umwandeln, dies
nennt sich “casten”.
Vorkurs Informatik - WS 2012/13
Aber ACHTUNG!
“Casten” verbraucht viel Rechenleistung und es können sich “Fehler”
einschleichen!
Wichtig
So viel casten wie nötig aber so wenig wie möglich!
Vorkurs Informatik - WS 2012/13
Variable
Vorkurs Informatik - WS 2012/13
Variablen
Variablen geben einem Wert einen
Namen.
>>> meaning_of_life = 40 + 2
Statt den Wert zu wiederholen, kann
man dann den Namen an seiner Stelle
verwenden:
>>> 1 + meaning_of_life
43
Vorrang
Die Zuweisung = hat den niedrigsten Vorrang aller Operatoren. Die "rechte
Seite" wird also zuerst ausgewertet und dann das Ergebnis gespeichert!
Vorkurs Informatik - WS 2012/13
Namensregeln
Wählst du Namen sorgfältig, kannst du damit
Programme lesbarer und deine Absichten deutlich
machen!
>>> meaning_of_life = 42 >>> var001 = 42 Python erlaubt jede Kombination aus Buchstaben,
Nummern und Unterstrichen (_), die nicht mit einer
Zahl beginnt.
>>> 001var = 42 ← Ungültig!!! Vorkurs Informatik - WS 2012/13
Kommentare
Vorkurs Informatik - WS 2012/13
Unser Freund die #
Die Raute leitet einen Kommentar ein.
Alles ab der Raute bis zum
Zeilenende wird vom Interpreter
ignoriert.
#
↵
Vorkurs Informatik - WS 2012/13
Warum die Raute benutzen?
Kommentare sorgen dafür, dass der Code besser zu
lesen ist und ist daher primär für den Menschen gedacht
und nicht für den Computer.
Beschreibt nicht jeden Befehl, sondern sagt was ihr
euch dabei gedacht habt und was das im Großen und
Ganzen macht.
Vorkurs Informatik - WS 2012/13
Die .py Datei
Vorkurs Informatik - WS 2012/13
Wie komm ich dahin?
Vorkurs Informatik - WS 2012/13
Wie sieht es aus?
Vorkurs Informatik - WS 2012/13
Unterschied zum Interpreter
Doch wo ist jetzt der Unterschied zum Interpreter?
Der Code ist gespeichert.
Der Code ist nun immer wieder benutzbar und steht in einer .py
Datei
Man kann den Code ansehen ohne ihn auszuführen.
Es gibt jetzt jedoch keine Möglichkeit mehr, im laufenden Programm
etwas einzugeben und man sieht auch nicht mehr was der Rechner
macht.
Keine Sorge! Input und Output kommen später und helfen uns!
Vorkurs Informatik - WS 2012/13
Bedingungen
Vorkurs Informatik - WS 2012/13
Bedingtes Ausführen
Bisher hatten alle unsere Beispiele etwas gemeinsam.
Der Computer hat die Anweisungen in der Reihenfolge
abgearbeitet, in der wir sie eingegeben haben.
"Erste Zeile"
"Zweite Zeile"
"Dritte Zeile"
"Vierte Zeile"
Vorkurs Informatik - WS 2012/13
Bedingtes Ausführen
Gewisse Dinge passieren aber nur unter Bedingungen.
z.B. Wenn du zur dunklen Seite der Macht überläufst,
bekommst du Kekse.
In Python:
if you_come_to_the_dark_side:
⌴⌴⌴⌴you_get_cookies = True
Wenn you_come_to_the_dark_side
nicht True ist,
wird you_get_cookies = True
nicht ausgeführt.
Vorkurs Informatik - WS 2012/13
If... then...
Blöcke markieren den Bereich der bedingt ausgeführt
wird:
"Vor dem Block"
if True:
⌴⌴⌴⌴"Wir sind im Block"
"Nicht mehr im Block"
Eingeleitet wird ein Block von einem :
Der Block selbst ist mit vier Leerzeichen (⌴⌴⌴⌴) eingerückt.
Er endet, wenn diese Einrückung endet.
Vorkurs Informatik - WS 2012/13
Blöcke
"Arbeit, Arbeit!"
if you_train_me: # False
⌴⌴⌴⌴you_get_a_solider
"Seid ihr der König?"
if you_are_the_king: # True
⌴⌴⌴⌴print(“Also ich hab euch nicht gewählt.”)
Man nennt diese roten Pfeile den Kontrollfluss.
Anweisungen die den Kontrollfluss ändern, heissen
Kontrollstrukturen.
Vorkurs Informatik - WS 2012/13
Else...
Trifft eine Bedingung nicht zu, soll evtl. eine alternative
Anweisung ausgeführt werden. Dafür gibt es das
Schlüsselwort else:
if you_come_to_the_dark_side: # False
⌴⌴⌴⌴you_get_cookies
else:
⌴⌴⌴⌴you_will_be_killed
Vorkurs Informatik - WS 2012/13
Elif
Gibt es mehrere Bedinungen, können
wir elif verwenden:
x = 3
if x < 0:
⌴⌴⌴⌴"Negative Zahl"
elif x > 0:
⌴⌴⌴⌴"Positive Zahl"
else:
⌴⌴⌴⌴"Die Zahl ist Null"
"Block ist zuende"
Vorkurs Informatik - WS 2012/13
Schleifen
Vorkurs Informatik - WS 2012/13
Wiederholtes Ausführen
Stellen wir uns einmal vor, wir wollen die Zahlen
von 0 bis 99 ausgeben:
print(0)
print(1)
print(2)
print(3)
# usw...
print(99)
Geht das nicht einfacher?
Vorkurs Informatik - WS 2012/13
While-Schleife
Einfacher geht es mithlife einer while-Schleife:
x = 0
while x < 100:
print(x)
x = x + 1
Wurde der Block ausgeführt, wird die Bedingung
wieder geprüft. Solange sie wahr ist, wird er erneut
ausgeführt.
ACHTUNG
Wenn du hier nicht aufpasst, wirds eine Endlosschleife!
Vorkurs Informatik - WS 2012/13
For-Schleife
Und so sieht das Zählen bis 100 als for-Schleife
aus:
for x in range(100):
print(x)
Jetzt 50%
weniger
Zeilen
Code!
Vorkurs Informatik - WS 2012/13
range()
Mit Hilfe der for-Schleife und der range() Funktion
können wir das Zählen bis 100 noch eleganter
gestalten:
range() erzeugt eine Liste aller Zahlen in einem
Bereich:
Syntax: range(start, stop, step)
start: Anfang der Liste (optional)
stop: Ende der Liste (nicht eingeschlossen!)
step: Schrittweite (optional)
Vorkurs Informatik - WS 2012/13
Ausbrechen aus der Schleife
Mittels break lässt sich eine Schleife abbrechen:
x = 0
while True:
if x == 3:
break
print(x)
x = x + 1
http://www.flickr.com/photos/ladybeames/2896787167/
Hier wird eine vermeintliche Endlosschleife beendet.
Vorkurs Informatik - WS 2012/13
Etwas überspringen
Mittels continue überspringt man den Rest des Blocks:
x = 0
while x < 100:
x = x + 1
if x % 2 != 0:
continue
print(x)
http://www.flickr.com/photos/rcameraw/453644988/
Hier werden alle geraden Zahlen ausgegeben, die
ungeraden werden übersprungen.
Vorkurs Informatik - WS 2012/13
Input/Output
Vorkurs Informatik - WS 2012/13
Input/Output, wie versprochen!
Wir wollen jetzt aber, dass der Nutzer etwas eingeben kann.
Der Nutzer gibt Strings ein!
Man kann somit mit dem Benutzer “reden”.
Der Benutzer kann aber nicht einfach Pythonbefehle benutzen und
unseren Code sprengen.
Wir benutzen die Befehle:
print(x) und input(“Hier kann ein String stehn”)
Vorkurs Informatik - WS 2012/13
print()
Vorkurs Informatik - WS 2012/13
input()
Vorkurs Informatik - WS 2012/13
Good Style
Vorkurs Informatik - WS 2012/13
Don't repeat yourself
Es kommt oft vor, dass du bestimmte Werte immer wieder
brauchst.
(Stell dir ein Programm vor, das 100 Zahlen auf Teilbarkeit
durch 2 testet.)
Wenn sich ein solcher Wert (2) ändert, müssen alle
Stellen an der er Vorkommt angepasst werden...
(In unserem Beispiel wohl an 100 Stellen. Yikes!)
Vorkurs Informatik - WS 2012/13
We need dry code
Good Code is
DRY
Don't Repeat Yourself
Vorkurs Informatik - WS 2012/13
Danke für die
Aufmerksamkeit!
Vorkurs Informatik - WS 2012/13
Herunterladen