Seite 1 von 1

parameterwerte aktualisieren.. ich brauch hilfe....

Verfasst: Mittwoch 18. Januar 2006, 10:11
von 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()

Verfasst: Mittwoch 18. Januar 2006, 11:41
von modelnine
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.

Verfasst: Mittwoch 18. Januar 2006, 11:51
von jens
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: