parameterwerte aktualisieren.. ich brauch hilfe....

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
edistar

Guten Morgen,
Ich habe ein Programm für physik geschrieben und hab ein problem.
Den ersten Schleifendurchgang macht er noch wie gewünscht, aber dann nimmt er nicht die neuen berechneten werte für Hoehe, Zeit usw. sondern die alten. Wie kann ich ihn dazu bringen die neuen zu nehmen?
Und bitte keine rekursionen vorschlagen!
#Hoehe=liste[0],Zeit=liste[1],v=liste[2],a=liste[3],rho=liste[4],g=liste[5] klappt nicht weil er dann meckert: TypeError: unpack non-sequence
Ich hoffe ihr könnt mir helfen!

Regards,
Edistar

Code: Alles auswählen


def rechnungen(rho0,Hoehe,gamma,mErde,rErde,cw,A,m,v,deltaT,Zeit):
    rho=rho0*(10**(-Hoehe/8000))
    g=gamma*(mErde/((Hoehe+rErde)**2))
    a=g-((.5*cw*A*rho)/m)*v**2
    v=a*deltaT
    s=v*deltaT
    Hoehe-=s
    Zeit+=deltaT
    return Hoehe, Zeit, v, a, rho, g




def main():
    deltaT=.1                           #Zeitintervall
    cw=0.9                              #Luftwiderstandsbeiwert
    A=.5                                #Oberflaeche
    m=70                                #Masse des Fallschirmspringers
    rho0=1013.25                        #Luftdichte auf Meereshoehe
    mErde=5.9736*(10**24)               #Masse der Erde
    rErde=6378.1                        #Radius der Erde
    gamma=6.6742*(10**(-11))            #Gravitationskonstante
    v=0                                 #Geschwindigkeit beim Absprung
    Hoehe=40000                         #Hoehe am Anfang
    Zeit=0                              #Gefallene Zeit, am Anfang
    while (Hoehe >0):
        liste=rechnungen(rho0,Hoehe,gamma,mErde,rErde,cw,A,m,v,deltaT,Zeit)
       #Hoehe=liste[0],Zeit=liste[1],v=liste[2],a=liste[3],rho=liste[4],g=liste[5]
        print liste
        save(liste)



def save(liste):
    speicherdatei=open('data/gespeichert.txt','a')
    for i in range (0,len(liste)):
        wert=str(liste[i])+'\t'
        speicherdatei.write(wert)
    speicherdatei.write('\n')
    speicherdatei.close()

main()
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Tuple unpack geht auch so nicht.

Entweder:

Code: Alles auswählen

x,y,z,a,b,c = <tuple>
oder

Code: Alles auswählen

x = <tuple>[0]
y = <tuple>[1]
...
<edit>
Vergiss das folgende. Ich hab nicht genau genug geguckt dass Du nämlich die Ausgabe einer Funktion entpacken willst. Da bietet sich Methode 1 an:

Code: Alles auswählen

x,y,z,a,... = <funktion>(<parameter>)
</edit>

Und, wie der Name schon sagt: es geht um einen tuple unpack. Das bedeutet dass Du ein Tupel entpackst, also entweder machst Du das Tupel on the fly mittels

Code: Alles auswählen

(Hoehe,breite,weite,dichte,...)
oder aber Du baust die Liste, und konvertierst die dann mit

Code: Alles auswählen

tuple(<liste>)
in ein Tupel.

Unabhängig davon hab ich Dein Programm nicht weiter auf Fehler durchgeguckt; es schien mir aber noch ein paar andere logische Fehler zu haben.

--- Heiko.
Zuletzt geändert von modelnine am Mittwoch 18. Januar 2006, 12:15, insgesamt 1-mal geändert.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Also das hier:

Code: Alles auswählen

    for i in range (0,len(liste)):
        wert=str(liste[i])+'\t'
        speicherdatei.write(wert) 
dürfte auch einfach so gehen:

Code: Alles auswählen

    for i in liste:
        speicherdatei.write("%s\t" % i) 
:lol:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten