Upload
krimhilde-landherr
View
111
Download
3
Embed Size (px)
Citation preview
SFZ Sj 13/14 GZG FN W.Seyboldt1
SFZ FN Sj. 13/14
Python Grundlagen
SFZ Sj 13/14 GZG FN W.Seyboldt2
Start von EcPy / Doku
Doku im Internet: w2.gzg-fn.de/sfz – Download von EcPy– Python für SFZ – Die Unterlagen vom letzten Jahr
In P:\Freigabe\Sey\SFZ stehen ebenfalls die Unterlagen. Kopiere sie bei Bedarf auf Deinen Stick.
Die wichtigsten Grundlagen zu Pyth stehen in aa_PythonInfos_Grundlagen.doc
Kopiere bei Bedarf EcPy von P:\Freigabe\Informatik nach H: und auf Deinen Stick (oder von der HP)
SFZ 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
SFZ 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.
SFZ 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
SFZ 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
SFZ 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
SFZ 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
SFZ 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
SFZ 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.
SFZ 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
SFZ 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