for schleife neu beginnen

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
degon
User
Beiträge: 28
Registriert: Montag 14. Juni 2010, 12:03

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
Zuletzt geändert von degon am Montag 14. Juni 2010, 12:19, insgesamt 1-mal geändert.
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Hallo und Willkommen im Forum.

Setz doch erstmal deinen code in Python-Tags, damit man deinen Code auch lesen kann.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

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.
degon
User
Beiträge: 28
Registriert: Montag 14. Juni 2010, 12:03

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 :)
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

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)
Jack Daniels
User
Beiträge: 30
Registriert: Freitag 1. Januar 2010, 11:38

Schau dir mal itertools.cycle an.
degon
User
Beiträge: 28
Registriert: Montag 14. Juni 2010, 12:03

Ah danke, mit der Endlosschleife funktioniert das ganze schon sehr gut! Die itertools sehen aber auch nicht schlecht aus.

/degon
Antworten