Seite 1 von 1

for schleife neu beginnen

Verfasst: Montag 14. Juni 2010, 12:10
von degon
hi,
ich wuerde sehr gerne wissen, wir man eine for schleife von neuem beginnen kann, das benoetige ich fuer ein einfaches pid programm. hier ist mein bisheriges script:

Code: Alles auswählen

mydet = {}
i_min = 1
i_max = 10 
def feedbackx():

	try:
            
            for i in range(i_min,i_max,1):
                        det = DeviceProxy("nano/adc/exp.03")
                        detector = det.read_attribute("Value")
                        mydet[i] = detector.value
                        print detector.value
                        time.sleep(0.5)
                        global d, e
                        d = sum([i for i in mydet.values()])
                        e = d/i_max
                            
	except DevFailed:
		extype, value = sys.exc_info()[:2]
                print "Failed with exception ", extype

if __name__ == "__main__":
        feedbackx()
der soll wenn i den wert i_max erreicht hat wieder die schleife bei i_min anfangen. alles was ich bisher probiert habe, hat leider nicht funktioniert. ueber hilfe waere ich sehr dankbar.

/degon

Re: for schleife neu beginnen

Verfasst: Montag 14. Juni 2010, 12:13
von jbs
Hallo und Willkommen im Forum.

Setz doch erstmal deinen code in Python-Tags, damit man deinen Code auch lesen kann.

Re: for schleife neu beginnen

Verfasst: Montag 14. Juni 2010, 12:20
von .robert
Hi,

soll das quasi eine Endlosschleife sein, in der immer wieder zwischen einem min-Wert und einem max-Wert hoch gezählt wird?

Dann mach
a) auch erst mal eine Endlosschleife, und
b) bei jedem Durchlauf den aktuellen Wert berechnen. Man könnte da zum Beispiel mit modulo arbeiten, dann hat man bei Abbruch der Schleife oder für Logs oder so auch noch den aktuellen Schleifendurchlauf.

Re: for schleife neu beginnen

Verfasst: Montag 14. Juni 2010, 12:23
von degon
hi robert,
das hoert sich sehr gut an was du da schreibst, genauso moechte ich es haben. ich bin leider totaler programmierneuling. meine bisherigen kenntnisse beschraenken sich auf matlab :)

Re: for schleife neu beginnen

Verfasst: Montag 14. Juni 2010, 12:30
von .robert
Als Ansatz:

Code: Alles auswählen

counter = 0 # die "Zählvariable"
min = 1
max = 10

while True:
    print counter
    print (counter%(max-min+1))+min
    counter = counter+1

(je nach dem ob min und max inclusive oder exclusive sind musst du die parameter noch anpassen)

Re: for schleife neu beginnen

Verfasst: Montag 14. Juni 2010, 12:39
von Jack Daniels
Schau dir mal itertools.cycle an.

Re: for schleife neu beginnen

Verfasst: Montag 14. Juni 2010, 13:14
von degon
Ah danke, mit der Endlosschleife funktioniert das ganze schon sehr gut! Die itertools sehen aber auch nicht schlecht aus.

/degon