top-down-design: Funktionen allgemein definieren
Verfasst: Freitag 16. August 2013, 21:23
Eine allgemeine Frage als Programmierneuling. Ich benuetze fuer das Programm, an dem ich schreibe das top- down design. Nun moechte ich aber eine vorgefertigte Funktion abhaengig von vorher nicht definierten Parametern definieren und erst spaeter ausfuehren(mit bestimmten Parametern).
Ich dachte, das muesste so gehen:
nun haengt es sich aber an der computeEnergy-Funktion auf.. das Programm gibt einen NameError: global name 'geff' is not defined zurueck, da ich die Parameter nicht verwenden kann ohne sie vorher zu definieren..
Vielen Dank im Vorraus!
Gruss,
Peter
Ich dachte, das muesste so gehen:
Code: Alles auswählen
def main():
Qcont, A1, Around, nameiso, abu, qdivbya, abu2, information = readcontaminationfile()
cavmaxCSS, cavmaxreal, factor = readcavmaxfile()
betaS, geff, Lambda, phi, Qin, A, E, Ein, minimumf, maximumf, Vebitmax, check2, check1, check3, check4, checks,\
number, minnumber, maxnumber, diffqa0, cavlist, combo = getInputs(A1, Around, nameiso, Qcont, factor)
alarm(cavlist, cavmaxCSS, number)
decision(betaS, geff, Lambda, phi, Qin, A, E, Ein, minimumf, maximumf, Vebitmax, check2, check1, check3, check4, checks,\
number, minnumber, maxnumber, cavlist, factor, cavmaxCSS, cavmaxreal)
clickrow(table1, Qcont, A1, nameiso, abu, qdivbya, abu2, information, A, diffqa0, check3, check4, factor, \
betaS, geff, Lambda, phi, minimumf, maximumf, cavmaxreal, combo)
def readcavmaxfile():
do something
def readcontaminationfile():
do something
def getInputs(A1, Around, nameiso, Qcont, factor):
do something
def alarm(cavlist, cavmaxCSS, number):
for i in range(1, number + 1):
if number >= i and cavlist[i-1] > cavmaxCSS[i-1]:
display.getWidget("cav" + str(i)).setPropertyValue("foreground_color",RED)
#define function that writes values in cells
def set_cells(table1, row, *args):
for i, value in enumerate(args):
table1.setCellText(row, i, str(value))
# define function that refreshes output
def refresh():
table.setContent([[" ", " ", " ", " "]])
table1.setContent([[" ", " ", " ", " ", " ", " "]])
def computeEnergy(number):
v = sqrt(2*600*1.602177*10**(-16)/1.6726*10**27)
c = 299792458.0
beta = v/c
T = sin(pi*geff/(beta*Lambda))/(pi*geff/(beta*Lambda))*sin(pi*betaS/(2*beta))
E0 = (600*A + i*27.98*cavlist[0]/factor[0]*T*cos(phi))/A
# go from 1,6, because you do not want cavlist[0], factor[0] included
for k in range(1,number + 1):
# 10**(-16), because keV
v = sqrt(2*E0*1.602177*10**(-16)/1.6726*10**27)
beta = v/c
T = sin(pi*geff/(beta*Lambda))/(pi*geff/(beta*Lambda))*sin(pi*betaS/(2*beta))
E0 = E0 + (i*27.98*cavlist[k]/factor[k])/A*T*cos(phi)
if all(t<u for t, u in zip(cavlist, cavmaxCSS)) and Vebit < Vebitmax:
Qout.append(i)
set_cells(table, len(Qout) - 1, i, Vebit, number, E0)
else:
refresh()
...
...
...
ruft die restlichen Funktionen in main auf und macht etwas
if __name__ == '__main__': main()
Vielen Dank im Vorraus!
Gruss,
Peter