Sie sind auf Seite 1von 51

Die Python Einführung

bit.ly/2v7Tznq
Am besten lernt man eine
Programmiersprache durch Programmieren!

Ziel ist es, dass Ihr in 2 Stunden kleinere Programme selbst schreiben
könnt.

Auch solltet Ihr in der Lage sein, Programme zu verstehen.

Versucht zuerst die Übungen selbst zu lösen. (Ohne die Lösungen


anzuschauen)
Interactive Mode
Öffnet die IDLE

Funktioniert wie ein Rechner(*,+,/,-)


Division ohne Rest = //
Power-Funktion = **
Modulo-Operator = %
Der Modulo Operator (%) zeigt den Rest einer Division an.
z.B. 100 % 10 = 0, aber 101 % 10 = 1, 42 % 10 = 2
Import math für weitere Funktionen wie z.B. cos(x)
math.cos(math.pi)
Python-Zen
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
Now is better than never.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Strukturierung durch Einrücken
Readability counts. Wo lebt eine Variable?
Definiert in Block 1, lebt sie überall

Definiert in Block 3, lebt sie


NUR in Block 3
Vernünftige Namen geben!

asdoansdfpnlkwenfpk.cijasodknae()!= number.add()

#Kommentieren!
number.add() #Dies ist ein Kommentar, Beschreibung was die
#Funktion macht, jede Kommentarzeile braucht ein #
Errors should never pass silently.

In welchem Auf welcher Zeile tritt der


Statement ist der Fehler auf ?
Fehler?

Was ist der Fehler?


Das erste Python Programm

Die Funktion input gibt das in der Klammer aus, und erwartet
vom User einen Input, welcher in n gespeichert wird.
n = input("Gib einen Input ein: ") Bestimmt das Trennzeichen
print("Danke") zwischen den Variablen, optional

print("Dein Input war", n)


print(Variable1,Variable2,Variable3, sep=", ")

Print gibt etwas in der Bestimmt mit was die Printfunktion


Konsole aus, Text immer abgeschlossen wird, optional
mit "blabla" print(Variable1,Variable2,Variable3, end="+ ")
Datentypen
Python bestimmt Datentypen selbst.
Welcher Datentyp etwas ist, kann man herausfinden mit:
Das Gleichheitszeichen weist n einen
Wert zu. Dies kann eine Zahl sein, aber
auch ein Text oder eine Liste.

n=...
print(type(n))

Type(n) bestimmt den


Datentypen von n
Datentypen
Integer(int) für ganze Zahlen. Z.B. a = 42 # a ist jetzt ein int.
Datentypen
Fliesskommazahl(float) für Fliesskommazahlen. Z.B. a = 3.14 # a ist ein float

Komplexe Zahl(complex) für komplexe Zahlen. Z.B. a =3+4j # a ist ein complex
Regeln für Fliesskommazahlen
− Teste niemals zwei errechnete Fliesskommazahlen auf Gleichheit
a == b, tritt nie ein obwohl a = 1 und b = 0.9 + 0.1, immer mit der
Differenz arbeiten, z.B. a-b < 0.0000001.

−Addiere keine zwei Zahlen sehr unterschiedlicher Grösse.


Weil 100000000 + 0.000001 = 100000000

−Subtrahiere keine zwei Zahlen sehr ähnlicher Grösse!


100000000 - 100000000.000001 = 0
Datentypen
Bool(bool) speichert wahr oder falsch. Z.B. a = bool(1) # a ist jetzt ein bool
Bool(1) = true, bool(0) = false
Logische Verknüpfungen mit and, not , or möglich.
String(str) Datentyp speichert Zeichenkette. Z.B. a = "hallo" # a ist ein string
Die input()-Funktion speichert alles im Datentypen str, mit welchem sich
schlecht rechnen lässt.
n = input("Nummer bitte ") #n hat den Datentypen String.
n = eval(n) #Jetzt hat n den Datentypen int.

Eval(n) nimmt n und wandelt ihn in ein int um,


danach wird er in n zurückgespeichert.
Funktioniert nur für Zahlen.
Eure erste Aufgabe
Fragt nach zwei Zahlen n und p, berechnet danach n^p (n hoch p) und
gebt das Resultat aus.

Tipps
Wir verwenden das Programm PyCharm. Start, Suchen: PyCharm
New Project-> File -> New python file
Potenz-Funktion = **
Das grüne Dreieck lässt
euren Code laufen
Lösung Aufgabe 1

n = input("Gib eine erste Zahl ein ") # Erste Zahl einlesen


n = eval(n) # Erste Zahl umwandeln
p = input("Gib eine zweite Zahl ein ") # Zweite Zahl einlesen
p = eval(p) # Zweite Zahl umwandeln
c = n**p # n^p berechnen und in c speichern
print(n,"hoch",p,"ist gleich",c,sep=" ") #Ausgabe
While-loop
Für Repetitives:
Abbruchbedingung, bzw. führe die
Zuerst Counter initialisieren. Schlaufe aus, solange das wahr ist.

x=1
while x < 10:
print("42") Schleifenrumpf, was soll
x=x+1
ausgeführt werden.
Counter erhöhen damit
Abbruchbedinung nach 9
Schritten erfüllt wird.

Doppelpunkt am Ende von Schlaufen/IF-Bedingungen = Es wird auf der


nächsten Zeile eingerückt fortgefahren!
Zweite Aufgabe
Rechnet die Zahlen 42, 43 … bis 62 zusammen und gebt nur das
Resultat aus.
Lsg(1092)

Tipps
While Schlaufe verwenden, wie strukturiere ich?
Lösung Aufgabe 2

x = 42
z=0
while x <= 62:
z=z+x
x=x+1
print(z)
For-loop
Startwert wählen,
optional sonst Endwert wählen, nicht
wird 0 gewählt. inklusive.
Schrittgrösse, optional
Geht die Zahlen durch von start sonst wird 1 gewählt.
bis und ohne stop durch = range(start,stop,step)

Für jedes Element x


in der range,

for x in range(1,10): for x in range(3,7,2):


print("42") print(x)
Welche Zahlen werden
mach dies. ausgegeben?
(Schleifenrumpf)
If-Statement

Falls Bedingung1
eintrifft, führe if Bedingung1:
Anweisung1 und 2 aus
Anweisung1
Elif = else if,
Anweisung2
ansonsten falls elif Bedingung2: Else, ist zu verstehen als
Bedingung2 eintrifft Anweisung3 Rest. Falls Bedingung1
führe Anweisung3 und Bedingung2 nicht
aus
else: eingetroffen sind, führe
Anweisung4 Anweisung 4 aus.
Aufgabe 3
Geht die Zahlen von 1 bis 100 mit einer Forschlaufe durch, für die
Zahlen 30-40 gebt ihr aus: Zahl, "zu klein"
Für die Zahl 41 wird nichts ausgegeben.
Für die Zahl 42 gebt ihr aus: Zahl, "Die Antwort"
Für die Zahlen > 42 gebt ihr aus: Zahl,"zu gross"

Tipps
Ausgeben mit print, if-Bedingungen verwenden,
if Bedingung1 and Bedingung2:
Lösung Augabe 3

for x in range(1,101):
if x >= 30 and x <= 40:
print(x,"zu klein",sep = " ")
elif x == 42:
print(x,"die Antwort", sep=" ")
elif x > 42:
print(x,"zu gross", sep=" ")

Was würde passieren,


wenn hier ein else steht
anstelle eines elif?
Schlaufen if-break and if-continue

for x in range(1,10):
Break, beendet den umgebenden #Code innerhalb der Schlaufe
if x == 5: #condition
Loop. break
#Code innerhalb der Schlaufe

#Code ausserhalb der Schlaufe

for x in range(1,10):
#Code innerhalb der Schlaufe
if x == 5: #condition
Continue, überspringt den Rest continue
des Programmcodes im Loop und print(x)
#Code innerhalb der Schlaufe
macht mit der nächsten Iteration
weiter.
#Code ausserhalb der Schlaufe
Aufgabe 4
Schreiben Sie ein Programm, welches alle Zahlen ausgibt, ausser die
durch 4 teilbaren nicht. Zudem sollte sich das Programm bei i = 20
beenden. Benutzen Sie folgende for-Schleife: for x in range(0,100)

Tipps
Verwendet break und continue, Modulo-Operator %
Lösung Aufgabe 4

for x in range(1,100):
if x == 20:
break

if x % 4 == 0:
continue
print(x)
Was macht folgendes Programm ?
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print (n, 'equals', x, '*', n/x)
break
else:
# loop geht durch ohne einen Factor zu finden
print(n, 'is a prime number')

Der else Zweig wird genau dann durchlaufen, wenn die for-
Schlaufe leer geworden ist.
Inhalt meiner Liste, kann Achtung Listen
List, eine Art Stapel gemischte Elemente enthalten
wie Zahlen und Wörter etc.
beginnen beim
0’ten Element.
Name meiner Liste
mylist = ["ham","cheese",3,4,5+3j,"banana"]
print(mylist[0:4]) #mylist[:] für die ganze Liste
Zugriff auf #mylist[2] Zugriff auf ein
mylist #einzelenes Element
von bis

mylist.append(x) #anfügen des Elementes x ans Ende der Liste


# geht auch mit mylist + [x]

mylist.pop() #entfernen und liefern des letzen Elementes der Liste


#optional pop(i) i'tes Element entfernen und liefern
List
mylist = ["ham","cheese",3,4,5+3j,"banana"]
L2=["Burger", 23,"Fish"]
mylist.extend(L2) #Extend verbindet die beiden Listen
print(mylist[:])
#['ham', 'cheese', 3, 4, (5+3j), 'banana', 'Burger', 23, 'Fish']

mylist = ["ham","cheese",3,4,5+3j,"banana"]
mylist.insert(3,"Beef Burger") #Einfügen eines Elementes an einer Stelle
print(mylist[:])
Aufgabe 5
Schreiben Sie ein Programm, welches eine Liste mit den Zahlen 1-6
füllt. Geben Sie zur Kontrolle Ihre Liste aus.

Danach berechnen Sie den Durchschnitt der Liste und geben nur diesen
aus. Lsg(3.5)

Tipps
For-Schlaufe, print(list[:])
Lösung Aufgabe 5

mylist = []
for x in range(1,7):
mylist = mylist + [x] #Liste füllen

print(mylist[:]) #Liste ausgeben

durchschnitt = 0
for x in mylist:
durchschnitt += x #Alle Zahlen der Liste zusammenzählen und in
#Durchschnitt speichern
durchschnitt = durchschnitt/len(mylist) #Durchschnitt teilen durch die
#Länge der Liste
print(durchschnitt)
Grundregel, alles was Sie mehr als 2 mal
brauchen wird in eine Funktion gepackt, um

Funktionen Parameterübergabe, bei mehreren


Fehlerquellen/Änderungsbegehren zu
minimieren.
mit Komma trennen.

Definition einer Funktion.


def bis10(x):
Namen geben, Parameter
übergeben. for i in range(0,x):
print(i) Funktionsrumpf, was
macht die Funktion?
#more code
Danach Aufruf der bis10(12)
Funktion, mit #more code
Übergabe eines bis10() Funktionen ohne
gültigen Parameters. bis10(32) Parameterübergabe
sind auch möglich.
Vorbelegung von Parameter, def bis10(x=11).
Falls die Funktion ohne Parameterübergabe
(bis10()) aufgerufen wird, wird die Funktion bis 10
zählen.
Print vs. Return
def bis10(x=11):
Was gibt die
for i in range(0,x): Funktion zurück ?
print(i)

#more code
bis10() def sum(x):
#more code k=0
bis10() for i in range(0,x):
bis10(32) k=k+i
return k #Rückgabe ans Betriebssystem,
#k kann jetzt verwendet werden.

p=sum(29)
#more code with p or sum(...)
print(sum(10))#was würdet Ihr ohne dieses
#Print sehen?
Aufgabe 6
Schreiben Sie eine Funktion, die das Volumen eines Quaders
berechnet. Danach rufen Sie diese Funktion auf. Es sollte das Resultat
nur ans Betriebssystem zurückgeben.

Modifizieren Sie Ihr Programm so, dass es nun einen Input aus der
Konsole für Länge, Breite und Höhe erwartet und mit diesem rechnet
und danach das Resultat ausgibt durch print(quader()).

Tipps
Def funktion, eval(), input
Lösung unmodifiziert

Definition def quader(x,y,z):


k = x*y*z
der return k
Funktion
quader(2,3,4)

Aufruf der
Funktion
Lösung modifiziert

def quader():
x = input("Gib eine Länge ein: ")
x= eval(x)
y = input("Gib eine Breite ein: ")
y=eval(y)
z = input("Gib eine Höhe ein: ")
z=eval(z)
k = x*y*z
return k

print(quader())
Hier wird die Klasse definiert, es muss

Class Das sind


Klassenvariablen.
bestimmt werden welche Attribute sie enthält,
dazu auch welche Funktionen. Funktionen
werden mit self eingeführt.
class kiste:
h = 0
b = 0
t = 0
def getvolumen(self):
vol=self.b*self.h*self.t
return vol

meinekiste= kiste()#Ein Objekt namens


#meinekiste der Klasse
#Kiste wird erstellt
meinekiste.h = 3 Hier wird die Klasse aufgerufen,
meinekiste.b = 2 danach werden neue Werte für Höhe,
meinekiste.t= 1 Breite, Tiefe angegeben.
print(meinekiste.getvolumen())
Class __init__ __init__ sorgt dafür, dass jetzt höhe,
breite und tiefe übergeben werden
müssen, ansonsten führt dies zu einer
Fehlermeldung. Das sind
Instanzvariablen.
class kiste:
def __init__(self,höhe,breite,tiefe):
self.h = höhe Achtung __init__
self.b = breite wird mit zwei
self.t = tiefe Unterstrichen
def getvolumen(self):
vol=self.b*self.h*self.t geschrieben.
return vol

meinekiste= kiste(1,2,3)
print(meinekiste.getvolumen())
Klassenvariablen und Instanzvariablen
class klasse: class klasse:
zahl = 42 zahl = 42
list = [] Der Unterschied
def __init__(self,text): liegt in der Zeile, wo def __init__(self,text):
self.text = text List definiert wird. self.text = text
Einmal als self.list = []
def funk(self, numb): Klassenvariable, def funk(self, numb):
einmal als
self.zahl = numb self.zahl = numb
Instanzvariable. List
self.list.append(numb) gehört zu den self.list.append(numb)
sogenannten
obj1 = klasse("a") mutable Variable. obj1 = klasse("a")
obj2 = klasse("z") obj2 = klasse("z")
obj1.funk(3) Was wird obj1.funk(3)
ausgegeben ?
print(obj1.list, obj2.list) print(obj1.list, obj2.list)
Lebewesen ist die Grundklasse.
Vererbung Ererbte Sachen können
überschrieben werden.
class lebewesen:
augen = 2
def __init__(self):
self.art = "Säugetier"
Die Klasse hund erbt
von der Klasse
class hund(lebewesen): lebewesen die Attribute
Fell = "blond" augen und art.

def __init__(self):
name = "H." Der Konstruktor der Klasse lebewesen muss hier
aufgerufen werden, da ein anderer Konstruktor der
lebewesen.__init__(self) Klasse hund vorhanden ist.

fluffy = hund() Das Objekt fluffy hat


print(fluffy.Fell,fluffy.art) Augen, Art, Fell und
einen Namen.
Aufgabe 7
Schreiben Sie eine Klasse Fahrzeug, welche einen Preis und einen
Kilometerstand beinhaltet. Danach eine Klasse Auto, welche von der
Klasse Fahrzeug erbt, aber noch eine Farbe und eine Marke beinhaltet.

In der Klasse Fahrzeug sollte es eine Funktion geben, die den Preis
ausgibt. In der Klasse Auto soll es noch eine Funktion geben, welche die
Marke ausgibt.

Tipps
Initialisieren mit __init__, Konstruktor auch beim ERBEN aufrufen.
class Fahrzeug:
def __init__(self,km,preis):
Lösung Aufgabe 7 self.kilo = km
self.p = preis

def getprice(self):
print(self.p)

class Auto(Fahrzeug):
def __init__(self,Farbe,Marke,km,preis):
self.c = Farbe
self.m = Marke
Fahrzeug.__init__(self,km,preis)
def getbrand(self):
print(self.m)

mini = Auto("GRAU","TESLA",39294,100000)

mini.getprice()
mini.getbrand()
Daten einlesen Open öffnet eine Text Datei und speichert
diese in f. Achtung Text Datei muss sich im
Projektordner befinden.

f = open("pykurs.txt","r")
print(f.read())

f.read() liest, was in


dieser Text Datei
Das r zeigt Python an, welche
gespeichert ist.
Berechtigungen Python hat, die Datei
zu verändern. Es gibt r = READ, w =
Öffnet ein file mit Schreibberechtigung, falls write, a = append, r+ für write und
das File nicht vorhanden ist wird, es erstellt. read.
Achtung, falls das File schon existiert
f = open("pykurs2.txt","w") wird die Write-Berechtigung das File
f.write("hi darling") zuerst löschen.
f.close
Schreibt etwas ins File und
schliesst es wieder.
Aufgabe 8
Erstellt mit Python ein Text-File, schreibt ein Gedicht rein.
Anschliessend gebt ihr es aus. Verwendet dazu open... und close

Tipps
f=open(….,w
f.close
f = open(…,r
f = open("pykurs2.txt","w")
f.write("So,\n")
f.write("Please take this seat \n")
f.write("and close your eyes, \n")
f.write("open your mind \n")
f.write("and we will learn how to fly \n")
f.close()

f = open("pykurs2.txt","r")
print(f.read())
Exceptions bringen Programme zum Absturz.
Try and Exception Dies kann wie folgt verhindert werden:

try:

#Code der möglicherweise eine Exception wirft


Name der Exception die erwartet
except NameError: #Name der Exception wird. Unschön except Exception
für alle möglichen Exceptions.
#Code der ausgeführt wird, wenn die Exception geworfen
wurde
except .. #Name der 2. Exception
else:
#Code der ausgeführt wird, falls keine Exception auftritt

#mehr Code der ausgeführt wird, falls alle Exceptions


#aufgefangen wurden
Aufgabe 9
Schreibt eine Funktion die einen Zahl aus dem Input entgegen nimmt,
es soll solange nach einem Input gefragt werden, bis eine Zahl
eingegeben wird. Falls Text eingegeben wird, soll die Exception
aufgefangen werden.

Die Zahl sollte nachher ausgegeben werden.

Tipps
Try, except NameError, while true, break, eval…
Lösung Aufgabe 9
while True:
try:
n=eval(input("Gib eine Zahl ein "))

except NameError:
print("Das war keine Zahl, nochmal")

else:
break

print(n)
Tensorflow
https://developers.google.com/machine-learning/crash-course/

Machinelearning mit Tensorflow von Google in Python.

https://www.tensorflow.org/tutorials/keras
pyautogui
Nützliches
NumPy’s array type augments the Python language with an efficient
data structure useful for numerical work, e.g., manipulating
matrices. NumPy also provides basic numerical routines, such as tools
for finding eigenvectors.
SciPy contains additional routines needed in scientific work: for
example, routines for computing integrals numerically, solving
differential equations, optimization, and sparse matrices.
The matplotlib module produces high quality plots. With it you can turn
your data or your models into figures for presentations or articles. No
need to do the numerical work in one program, save the data, and plot
it with another program.
Nützliches
https://www.jetbrains.com/pycharm/ # Pycharm

https://stackoverflow.com/ #Forum für Programmierfragen

https://py-tutorial-de.readthedocs.io/de/python-3.3/index.html
#aktuelles Python Tutorial
https://www.python.org/doc/
#offizielle Webseite mit einer Dokumentation
Ende

Das könnte Ihnen auch gefallen