120 likes | 288 Views
SFZ FN Sj. 13/14. Python Grundlagen. Start von EcPy / Doku. Doku im Internet: w2.gzg-fn.de/info Download von EcPy (steht auch in P:FreigabeInformatik)
E N D
SFZ FN Sj. 13/14 Python Grundlagen GZG FN W.Seyboldt
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 GZG FN W.Seyboldt
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 GZG FN W.Seyboldt
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. GZG FN W.Seyboldt
Schleifen • sum=0for 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 GZG FN W.Seyboldt
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 GZG FN W.Seyboldt
Funktionen • def f(x): return 3*x*x+3*x-2 • def note(punkte): if punkte > 23: return 15 if punkte > 19: return 13 … • def fakultaet(n): if n==1: return 1 return n*fakultaet(n-1) • def fakultaet(n): erg=1 for i in range(2,n): erg*=i return erg*n GZG FN W.Seyboldt
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 GZG FN W.Seyboldt
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 GZG FN W.Seyboldt
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. GZG FN W.Seyboldt
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 ; break return m,iterationenAnz GZG FN W.Seyboldt
Newtonverfahren while abs(a-aAlt)>eps: an=a-f(a)/fs(f,a) # die neueNäherung aAlt=a a=an iterationen+=1 if iterationen>50: # Abbruch iterationen=0 break GZG FN W.Seyboldt