12
InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

Embed Size (px)

Citation preview

Page 1: InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

InfK12 Sj 13/14 GZG FN W.Seyboldt1

SFZ FN Sj. 13/14

Python Grundlagen

Page 2: InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

InfK12 Sj 13/14 GZG FN W.Seyboldt2

Start von EcPy / Doku

Doku im Internet: w2.gzg-fn.de/info – Download von EcPy (steht auch in P:\Freigabe\Informatik) – Python Lösungen – die Programme in den Moduln *_loes,

im Internet src.zip, am GZG in P:\Freigabe\sey\inf\src zum direkten Kopieren in Ecpy

In P:\Freigabe\Sey\Inf stehen ebenfalls die Unterlagen.

Die wichtigsten Grundlagen zu Python stehen in aa_PythonInfos_Grundlagen.doc

Page 3: InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

InfK12 Sj 13/14 GZG FN W.Seyboldt3

Grundlegende Elemente

In Python müssen Variable nicht deklariert werden – im Gegensatz zu den meisten Programmier-sprachen. Sie werden beim ersten Zuweisen angelegt.

Aber bei Variablen das Zuweisen nicht vergessen: Im Speicherplatz der linken Seite einer „Gleichung“ wird das abgespeichert, was mit der rechten Seite berechnet wird.

Man unterscheidet zwischen Strings, Int (beliebig große Zahlen und float-Variablen (endliche Genauigkeit – sonst Decimals

int(2.33)# liefert 2 float(3)# liefert 3.0 str(53)# liefert die Zahl 53 als Zeichenkette

Page 4: InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

InfK12 Sj 13/14 GZG FN W.Seyboldt4

Listen

Listen sind eine sehr flexible Variante, viele Variable zu verketten (Array)

L = [1,7,“sieben“,[9,4]] fo=[a,b]; i=2 while i<bis: i+=1 if i%2==1: c=a+b ;

else: c=float(b)/a fo.append(c) ; a,b=b,c

L = [x * 3 for x in range(4)] L1 = L[3:-1] #Von 3 bis vors letzte El.

Page 5: InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

InfK12 Sj 13/14 GZG FN W.Seyboldt5

Schleifen– sum=0

for i in range(1,27): sum+=i*i

– # Liste in umgekehrter Richtung abarbeiten.for i in reversed(range(1,4)): # oder reversed(list), print i

– # Auf Nr und Element gleichzeitig zugreifenfor nr,el in enumerate(liste): print i,j

– sum=0i=1while sum<1000:

sum+=i*i i+=1

– while b!=0: r=a%b a,b=b,r

– break # beendet die Schleife – continue # beendet >nächste Schleife

Page 6: InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

InfK12 Sj 13/14 GZG FN W.Seyboldt6

Bedingungen

– if i>30: s=i*ielif i>20: s=i*i*ielse: s=i*i*i*i

– if a>b: # sorge dafür, dass a<b ist. a,b=b,a

– if betrag(a-x*x)<genauigkeit: return x

Page 7: InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

InfK12 Sj 13/14 GZG FN W.Seyboldt7

Funktionen

def f(x):return 3*x*x+3*x-2

def note(punkte):if punkte > 23: return 15if punkte > 19: return 13…

def fakultaet(n):if n==1: return 1return n*fakultaet(n-1)

def fakultaet(n):erg=1for i in range(2,n): erg*=i return erg*n

Page 8: InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

InfK12 Sj 13/14 GZG FN W.Seyboldt8

Element am Beginn einer Liste

Die Methode li.append(el) fügt in einer Liste li das neue Element hinten bei der Liste dazu.

Programmiere eine Methode vorne(el, liste), die ein Element an der ersten Stelle der Liste einfügt.

def vorne(el, liste): if len(liste)==0: return [el] li=[0 for i in range(len(liste)+1)] for i in range(len(liste)): li[i+1]=liste[i] li[0]=el return li

Page 9: InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

InfK12 Sj 13/14 GZG FN W.Seyboldt9

Geschachtelte Schleifen

Berechne alle pythagoräischen Zahlen, d.h. alle Zahlentripel (a,b,c) mit a2+b2=c2

def pythagoraeischeZahlen(n):

pyZahlen=[]

for a in range(1,n):

for b in range(a,n):

c_square = a**2 + b**2

c = int(sqrt(c_square))

if ((c_square - c**2) == 0):

pyZahlen.append([a, b, c])

return pyZahlen

Page 10: InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

InfK12 Sj 13/14 GZG FN W.Seyboldt10

Nullstellenverfahren

Ist f stetig (d.h. f hat keine Sprungstellen, dies ist normalerweise in der Schule erfüllt)und f(a)*f(b)<0, dann gibt es im Intervall [a,b] mindestens eine Nullstelle.

Intervallschachtelung: Wähle iterativ die Intervallhälfte, für die das Produkt der Funktionswerte an den Grenzen kleiner Null ist.

Newtonverfahren: Ersetze die Funktion durch eine lineare Funktion, die die Steigung der Funktion f im Punkt a hat, der nahe der Nullstelle ist.

Page 11: InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

InfK12 Sj 13/14 GZG FN W.Seyboldt11

Intervallschachtelung

while abs(b-a)>eps: m=(a+b)/2 iterationenAnz+=1 if f(m)==0: # Nullstelle gefunden break elif f(a)*f(m)<0: b=m else: a=m if iterationenAnz>200: # Abbruch iterationenAnz=-2 ; breakreturn m,iterationenAnz

Page 12: InfK12 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Grundlagen

InfK12 Sj 13/14 GZG FN W.Seyboldt12

Newtonverfahren

while abs(a-aAlt)>eps: an=a-f(a)/fs(f,a) # die neue Näherung

aAlt=a

a=an

iterationen+=1

if iterationen>50: # Abbruch

iterationen=0

break