Angenommen ich habe folgende Funktion:
Code: Alles auswählen
def stand_abb(phi=1.0,p=1.0):
i=0
while i<10:
phi=phi+p
p=p+1*sin(phi)
i=i+1
return
Code: Alles auswählen
def stand_abb(phi=1.0,p=1.0):
i=0
while i<10:
phi=phi+p
p=p+1*sin(phi)
i=i+1
return
Ich benutze eine Vorlage in Textform, in dem die Grundlagen drin stehen. "stand_abb" steht für Standard-Abbildung. Ich brauche Python für mein Physikstudium und eine erste Aufgabe besteht darin ein Programm zu schreiben, was einen Plot macht, bei welchem mit einem Klick ein Startpunkt festgelegt wird, von welchem ausgehend nach meiner definierten Funktion, 1000 Punkte berechnet werden, welche dann gezeichnet werden sollen. Da ich aber keine 1000 Plotbefehle haben möchte, möchte ich die Werte, die meine Funktion nach jedem mal ausgibt in einem Array speichern, welches dann geplottet wird. Da aber weder ich eine Komplettlösung meiner Aufgabe möchte, noch Ihr mir diese geben werdet, versuche ich mich heranzutasten. Den Plot erzeugen, das Event mit dem Mausklick definieren stellt kein Problem dar. Die Fnktion vom Prinzip her definieren auch. Ich brauche jetzt wie gesagt die richtige herangehensweise wie ich das ganze als Array ausgegeben bekomme. Leider habe ich dazu nichts entsprechendes gefunden. Wahrscheinlich suche ich nach den falschen Begriffen.BlackJack hat geschrieben:@alex2007: Listen sind ein Grunddatentyp von Python. Die sollten dementsprechend in jedem Grundlagentutorial vorkommen. Welches benutzt Du denn um Python zu lernen?
Edit: Statt der ``while``-Schleife hätte sich hier übrigens eine ``for``-Schleife mit `range()` bzw. `xrange()` angeboten. Und das ``return`` ist überflüssig. Was soll `stand_abb` bedeuten?
Code: Alles auswählen
def stand_abb(phi=1.0,p=1.0):
i=0
x=range(0)
y=range(0)
while i<10:
phi=phi+p
p=p+1*sin(phi)
x.append(phi)
y.append(p)
i=i+1
return x,y
Schon getanBlackJack hat geschrieben:@alex2007:
Man sollte die beiden Listen vielleicht als Rückgabewert verwenden, sonst ist die Funktion ein wenig sinnfrei.
Würdest du das als stilistisch "schlecht" ansehen?BlackJack hat geschrieben:@alex2007:Eine leere Liste mit ``range(0)`` zu erstellen ist, äh, ungewöhnlich. Sehe ich das erste mal das das jemand macht. Direkter wäre ``list()`` oder ``[]``.
Die 1 ist eigentlich ein K und kann variiert werden. Wir sollen uns für verschiedene K die Plots anschauen und unsere Beobachtungen erklären. Bei der Abgabe der Aufgabe, soll da eine 2.6 hin. Ich hab da nur eine 1 zum rumprobieren hingeschrieben.BlackJack hat geschrieben:@alex2007:
Bist Du sicher das Zeile 7 so aussehen soll? Was ist der Sinn von der Multiplikation mit 1?
Bei ``list()`` oder ``[]`` ist sofort ersichtlich, dass es sich um eine leere Liste handelt. Bei ``range(0)`` muss man zunächst über die Bedeutung, wenn auch nur kurz, nachdenken. Hinzu kommt, dass Python 3 keine Liste mehr zurückgibt.alex2007 hat geschrieben:Würdest du das als stilistisch "schlecht" ansehen?BlackJack hat geschrieben:@alex2007:Eine leere Liste mit ``range(0)`` zu erstellen ist, äh, ungewöhnlich. Sehe ich das erste mal das das jemand macht. Direkter wäre ``list()`` oder ``[]``.
Dann gib der Funktion am besten einen entsprechenden Parameter. Solche Kleinigkeiten werden sehr leicht übersehen und führen nur zu nervigen Fehlern und der Suche danach.alex2007 hat geschrieben:Die 1 ist eigentlich ein K und kann variiert werden. Wir sollen uns für verschiedene K die Plots anschauen und unsere Beobachtungen erklären. Bei der Abgabe der Aufgabe, soll da eine 2.6 hin. Ich hab da nur eine 1 zum rumprobieren hingeschrieben.
Code: Alles auswählen
def standard_abbildung(phi=1.0, p=1.0, k=2.6, count=10):
x, y = list(), list()
for _ in xrange(count):
phi += p
x.append(phi)
p += k * sin(phi)
y.append(p)
return x, y