Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss14:python-einfuehrung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ss14:python-einfuehrung [2014/04/17 13:53]
stefanborn [Kleine Einführung in Python]
ss14:python-einfuehrung [2016/05/10 14:46] (aktuell)
Zeile 53: Zeile 53:
 print "Das Ergebnis ist : ", 2**10 print "Das Ergebnis ist : ", 2**10
 </​code>​In eine ''​print''​-Anweisung können Sie alle möglichen durch Kommata getrennten Objekte schreiben. Der Python-Interpreter weiß, wie diese darzustellen sind. (Man kann die Formatierung etwa von Zahlen genauer bestimmen, aber das brauchen Sie einstweilen nicht.) </​code>​In eine ''​print''​-Anweisung können Sie alle möglichen durch Kommata getrennten Objekte schreiben. Der Python-Interpreter weiß, wie diese darzustellen sind. (Man kann die Formatierung etwa von Zahlen genauer bestimmen, aber das brauchen Sie einstweilen nicht.)
 +
 +**Aufgabe: ** Um das Ausführen von Programmen zu testen, sollen Sie ein
 +kleines Programm erstellen. Geben Sie ihm einen Namen, der mit ihren
 +Namen anfängt, also etwa in meinem Fall `stefanbornprog.py`. Öffnen Sie
 +ein so genanntes Terminal und geben Sie in der Kommandozeile `geany`,
 +Leerzeichen,​ Programmname ein, also etwa in meinem Fall:
 +
 +    geany  stefanbornprog.py ​
 +
 +Schreiben Sie nun ein kleines Programm, das mit Hilfe von
 +`print`-Anweisungen etwas ausgibt. Speichern Sie die Datei mit Strg$+$S
 +und verlassen Sie `geany` anschließend mit Strg$+$Q.\
 +Probieren Sie die beiden Weisen aus, ihr Programm aufzurufen. Was
 +passiert, wenn Sie von der Kommandozeile anstelle von
 +`python -i Programmname` nur `python Programmname` eingeben?
 +
 +
  
 ====== Module ====== ====== Module ======
Zeile 370: Zeile 387:
 </​code>​Die Variable ''​i''​ durchläuft den Block in der Schleife mit den Werten 0,1,2,3. Zuletzt wird ''​i''​ auf 4 erhöht, die Bedingung ist nicht mehr erfüllt, und das Programm fährt mit dem Code fort, der nach dem Block kommt. </​code>​Die Variable ''​i''​ durchläuft den Block in der Schleife mit den Werten 0,1,2,3. Zuletzt wird ''​i''​ auf 4 erhöht, die Bedingung ist nicht mehr erfüllt, und das Programm fährt mit dem Code fort, der nach dem Block kommt.
  
-====== Ein Modellierungsbeispiel:​ Schall ====== +==== Ein Modellierungsbeispiel:​ Schall ====
- +
- +
-  - Kurze Einführung:​ Was ist Schall überhaupt?​ +
- +
- +
-  - python -i schallwerkzeuge.py+
  
 +== ==
 +1. Kurze Einführung:​ Was ist Schall überhaupt?
 +  ​
 +== ==  ​
 +2. Geben Sie python -i schallwerkzeuge.py
 ein. Geben Sie als nächstes ein. Geben Sie als nächstes
- 
 <​code>​ <​code>​
 y=recordsnd(None,​4)  ​ y=recordsnd(None,​4)  ​
 </​code>​ein. Sie können nun nach einem weiteren Drücken der Eingabetaste ein 4 Sekunden langes Stück Schall aufnehmen. Was Sie erhalten, ist eine Liste von Zahlen (ein Vektor, bzw ein array). unknown{u'​Math':​ [u'​DisplayMath',​ u'​y[0],​\\ldots,​ y[ANZAHL-1] \\;']} aus reellen Zahlen. Pro Sekunde werden RATE viele Werte gemessen. Dabei ist jedes \(y[i]\) eine reelle Zahl zwischen \(-1\) und \(1\). </​code>​ein. Sie können nun nach einem weiteren Drücken der Eingabetaste ein 4 Sekunden langes Stück Schall aufnehmen. Was Sie erhalten, ist eine Liste von Zahlen (ein Vektor, bzw ein array). unknown{u'​Math':​ [u'​DisplayMath',​ u'​y[0],​\\ldots,​ y[ANZAHL-1] \\;']} aus reellen Zahlen. Pro Sekunde werden RATE viele Werte gemessen. Dabei ist jedes \(y[i]\) eine reelle Zahl zwischen \(-1\) und \(1\).
- 
 Um sich ein Bild zu machen, sehen Sie sich die Daten mal an (die \(x\)-Koordinate ist die Zeit in Sekunden, die \(y\)-Koordinate ist durch unseren Vektor gegeben.) Um sich ein Bild zu machen, sehen Sie sich die Daten mal an (die \(x\)-Koordinate ist die Zeit in Sekunden, die \(y\)-Koordinate ist durch unseren Vektor gegeben.)
- 
 <​code>​ <​code>​
 inspectsnd(y)  ​ inspectsnd(y)  ​
 </​code>​Sie können mit dem Lupensymbol Teile des Graphen vergrößern und mit dem ’Home’-Symbol wieder zur ursprünglichen Darstellung zurückkehren. </​code>​Sie können mit dem Lupensymbol Teile des Graphen vergrößern und mit dem ’Home’-Symbol wieder zur ursprünglichen Darstellung zurückkehren.
- 
 Nehmen Sie nun auf diese Weise verschiedene Geräusche auf und inspizieren Sie das Signal. Können Sie verschiedene Geräusche an ihrem Graphen unterscheiden. Nehmen Sie nun auf diese Weise verschiedene Geräusche auf und inspizieren Sie das Signal. Können Sie verschiedene Geräusche an ihrem Graphen unterscheiden.
- 
 Wenn Sie sich das Geräusch noch einmal anhören wollen, können Sie das mit Wenn Sie sich das Geräusch noch einmal anhören wollen, können Sie das mit
- 
 <​code>​ <​code>​
 playsnd(y, RATE)  ​ playsnd(y, RATE)  ​
 </​code>​tun. Mit </​code>​tun. Mit
- 
 <​code>​ <​code>​
 playsnd(y, 2*RATE) playsnd(y, 2*RATE)
Zeile 403: Zeile 412:
 </​code>​können Sie es sich doppelt, bzw. halb so schnell anhören. </​code>​können Sie es sich doppelt, bzw. halb so schnell anhören.
  
- +== == 
-  ​- ​Das im Intervall \([0,T]\) am Lautsprecher eintreffende Schallsignal lässt sich nach Wahl von Einheiten als Funktion \(f:​[0,​T]\to\mathbb{R}\) verstehen. Solche Funktionen kann man addieren und mit reellen Zahlen multiplizieren. Bezüglich dieser Operationen bilden diese Signale einen //​Vektorraum//​ \(V\). Ebenso bilden die diskretisierten Signale \(\tilde{f}:​\{0,​\ldots,​ ANZAHL-1\}\to\mathbb{R}\) einen Vektorraum \(V_d\). Die Messung ist eine lineare Abbildung \(V\to V_d\). Wenn man davon spricht, dass sich zwei Schallsignale überlagern,​ ist nichts anderes gemeint als die Summe. +4. Das im Intervall \([0,T]\) am Lautsprecher eintreffende Schallsignal lässt sich nach Wahl von Einheiten als Funktion \(f:​[0,​T]\to\mathbb{R}\) verstehen. Solche Funktionen kann man addieren und mit reellen Zahlen multiplizieren. Bezüglich dieser Operationen bilden diese Signale einen //​Vektorraum//​ \(V\). Ebenso bilden die diskretisierten Signale \(\tilde{f}:​\{0,​\ldots,​ ANZAHL-1\}\to\mathbb{R}\) einen Vektorraum \(V_d\). Die Messung ist eine lineare Abbildung \(V\to V_d\). Wenn man davon spricht, dass sich zwei Schallsignale überlagern,​ ist nichts anderes gemeint als die Summe.
 Da die Übertragung eines Schallsignals von einem Ort \(P\) zu einem Ort \(Q\) (mit allen Reflexionen,​ Schwächungen etc.) ebenfalls eine lineare Abbildung ist, lässt sich aus einer Zerlegung des Ausgangssignals als Summe auch eine solche Zerlegung des Endsignals gewinnen. Da die Übertragung eines Schallsignals von einem Ort \(P\) zu einem Ort \(Q\) (mit allen Reflexionen,​ Schwächungen etc.) ebenfalls eine lineare Abbildung ist, lässt sich aus einer Zerlegung des Ausgangssignals als Summe auch eine solche Zerlegung des Endsignals gewinnen.
- 
 Versuchen Sie einmal das Folgende: Versuchen Sie einmal das Folgende:
- 
 <​code>​ <​code>​
 ya=recordsnd{None,​ 6) ya=recordsnd{None,​ 6)
Zeile 417: Zeile 423:
 playsnd((ya+10*yb)/​11,​RATE) playsnd((ya+10*yb)/​11,​RATE)
 </​code>​ </​code>​
-  - Erzeugen Sie nun ein kurzes Knackgeräusch (wie erzeugen Sie einen besonders kurzen Knall?). Gelingt es Ihnen, an dem Graphen die Zeit ausfindig zu machen, die bis zum ersten Echo vergeht? Schlagen Sie einen ungefähren Wert für die Schallgeschwindigkeit nach, um diese Zeit auf eine Entferung umzurechnen. Sie können den Computer zu anderen Stellen des Gebäudes tragen, um zu sehen, wie sich das Echo verändert. 
  
 +== ==
  
-  - Nehmen ​Sie nun eine Stimmgabel auf, die sie kurz vor die kleine Mikrofoneoben über dem Bildschirm der Laptops halten müssen.+5. Erzeugen ​Sie nun ein kurzes Knackgeräusch (wie erzeugen Sie einen besonders kurzen Knall?). Gelingt es Ihnenan dem Graphen ​die Zeit ausfindig zu machen, ​die bis zum ersten Echo vergeht? Schlagen Sie einen ungefähren Wert für die Schallgeschwindigkeit nachum diese Zeit auf eine Entferung umzurechnen. Sie können den Computer zu anderen Stellen des Gebäudes tragen, um zu sehen, wie sich das Echo verändert.
  
 +== ==
 +
 +6. Nehmen Sie nun eine Stimmgabel auf, die sie kurz vor die kleine Mikrofone, oben über dem Bildschirm der Laptops halten müssen.
 Wie sieht das Signal aus? Warum hat es einen Sinn, von der Frequenz zu sprechen? Bestimmen Sie diese. Wie sieht das Signal aus? Warum hat es einen Sinn, von der Frequenz zu sprechen? Bestimmen Sie diese.
- 
 Wiederholen Sie diese Bestimmung der Frequenz drei Mal und notieren Sie die Frequenz. Wiederholen Sie diese Bestimmung der Frequenz drei Mal und notieren Sie die Frequenz.
  
 +== ==
  
-  - Starten Sie das Programm ''​dualscope.py'',​ das ein Oszilloskop zur verfügung stellt. (im Terminal: ''​python dualscope.py''​). Experimentieren Sie damit rum. +7. Starten Sie das Programm ''​dualscope.py'',​ das ein Oszilloskop zur verfügung stellt. (im Terminal: ''​python dualscope.py''​). Experimentieren Sie damit rum.
  
-  - Programmieren Sie eine Funktion ''​entrausche(y)'',​ die ein Signal zurückgibt,​ das weniger rauscht. (Machen Sie zunächst ein kleines Brainstorming mit Ihrer Gruppe, um auf eine Idee zu kommen, was es bedeuten kann, das Rauschen zu vermindern. Um diese dann umzusetzen, müssen sich dafür erinnern, wie man Funktionen in ''​python''​ definiert, und an einiges mehr: Fragen Sie Dozenten und Tutoren, wenn Ihnen was fehlt. )+== ==
  
 +8. Programmieren Sie eine Funktion ''​entrausche(y)'',​ die ein Signal zurückgibt,​ da weniger rauscht. (Machen Sie zunächst ein kleines Brainstorming mit Ihrer Gruppe, um auf eine Idee zu kommen, was es bedeuten kann, das Rauschen zu vermindern. Um diese dann umzusetzen, müssen sich dafür erinnern, wie man Funktionen in ''​python''​ definiert, und an einiges mehr: Fragen Sie Dozenten und Tutoren, wenn Ihnen was fehlt. )
  
 ====== Funktionen ====== ====== Funktionen ======
Zeile 477: Zeile 486:
 Die ’Schildkröte’ war ein Beispiel eines Objekts, das etwas //tun// kan, vorwärts gehen, zeichnen, etc. (’Methoden’),​ dass aber auch innere Zustände (’Attribute’) hat, auf die es dabei zugreif. Wenn Sie nochmals Ihr ''​polygon...''​-Programm öffnen und durchführen,​ können Sie mit ''​tim.x''​ und ''​tim.y''​ den gegenwärtigen Ort abfragen. Diese Kapselung der Daten und der Funktionen in ein Objekt liegt in der Natur vieler Probleme, die wir lösen wollen. Die ’Schildkröte’ war ein Beispiel eines Objekts, das etwas //tun// kan, vorwärts gehen, zeichnen, etc. (’Methoden’),​ dass aber auch innere Zustände (’Attribute’) hat, auf die es dabei zugreif. Wenn Sie nochmals Ihr ''​polygon...''​-Programm öffnen und durchführen,​ können Sie mit ''​tim.x''​ und ''​tim.y''​ den gegenwärtigen Ort abfragen. Diese Kapselung der Daten und der Funktionen in ein Objekt liegt in der Natur vieler Probleme, die wir lösen wollen.
  
-In ''​toene_template.py''​ wird die Klasse ''​ton''​ definiert. Sie hat zunächst eine Methode ​''​__init__'' ​und eine Methode ''​abspielen'',​ die noch nichts tut:+In ''​toene_template.py''​ wird die Klasse ''​ton''​ definiert. Sie hat zunächst eine Methode ​%%__init__%% und eine Methode ''​abspielen'',​ die noch nichts tut:
  
 <​code>​ <​code>​
Zeile 501: Zeile 510:
 </​code>​Dabei wird Zunächst ein abstraktes Objekt erzeugt und an die Variable ''​t''​ gebunden. (Achtung: Für alle Methoden, die wir in der Objektdefinition geben, heißt das jeweilige Objekt ''​self''​. Für ''​self''​ setzt der Interpreter immer das Objekt ein, um dass es gerade geht, also hier ''​t''​.) </​code>​Dabei wird Zunächst ein abstraktes Objekt erzeugt und an die Variable ''​t''​ gebunden. (Achtung: Für alle Methoden, die wir in der Objektdefinition geben, heißt das jeweilige Objekt ''​self''​. Für ''​self''​ setzt der Interpreter immer das Objekt ein, um dass es gerade geht, also hier ''​t''​.)
  
-Anschließend wird die Methode ​''​ton.__init__(self,​ '​a',​0.,​2.,​1.)'' ​aufgerufen, der so genannte //​Konstruktor//​. Nun werden die Attribute des Objekts ''​self''​ gemäß den übergebenen Werten zugewiesen. Anschließend liefert ''​t''​ das so erzeugte Objekt.+Anschließend wird die Methode ​%%ton.__init__(self,​ '​a',​0.,​2.,​1.)%% aufgerufen, der so genannte //​Konstruktor//​. Nun werden die Attribute des Objekts ''​self''​ gemäß den übergebenen Werten zugewiesen. Anschließend liefert ''​t''​ das so erzeugte Objekt.
  
 Nun können Sie durch ''​t.frequenz''​ etwa diesen Wert abfragen. Die Methoden ''​wavedaten''​ und ''​abspielen''​ tn noch nichts im Template, d.h. es geschieht nichts, wenn ''​t.abspielen''​ aufgerufen wird. Nun können Sie durch ''​t.frequenz''​ etwa diesen Wert abfragen. Die Methoden ''​wavedaten''​ und ''​abspielen''​ tn noch nichts im Template, d.h. es geschieht nichts, wenn ''​t.abspielen''​ aufgerufen wird.
ss14/python-einfuehrung.1397735599.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)