Autor
|
Thema: [Python] Probleme mit For-Schleife (2516 mal gelesen)
|
iggboert Mitglied Student
Beiträge: 21 Registriert: 17.03.2009 Abaqus 6.8.1
|
erstellt am: 04. Mai. 2009 11:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Allerseits, ich habe unten stehenden Code geschrieben. Eigentlich sollte er alle vorhandenen Jobs (hier 3) der Reihe nach abarbeiten, allerdings berechnet er nur die ersten Jobs und hört dann auf ohne den letzten Job zu berechnen, was ist an dem Code falsch? Danke shcon mal im Vorraus Code: from abaqus import * from abaqusConstants import * from odbAccess import * from math import * from string import * import __main__def Aussenradius(): import sys import visualization import displayGroupOdbToolset as dgo import sys import Numeric import xyPlot import section import regionToolset import displayGroupMdbToolset as dgm import part import material import assembly import step import interaction import load import mesh import job import sketch import xyPlot import connectorBehavior for jobName in mdb.jobs.keys()[-3:-1]: job = mdb.jobs[jobName] job.submit() job.waitForCompletion() . . .
[Diese Nachricht wurde von iggboert am 04. Mai. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nicksen Mitglied wissenschaftlicher Mitarbeiter
Beiträge: 239 Registriert: 04.05.2007
|
erstellt am: 04. Mai. 2009 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für iggboert
python arbeitet mit speziellen Indexgrenzen Beispiel: For i in range(0,3): ....coding Diese Schleife laeuft von i=0 bis i=2!!! Die obere Grenze wird demnach NIE ERREICHT! Das wird wohl das Problem sein. Probier es mal aus.
bestes Gelingen ------------------ ========== == Dingsen == ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
iggboert Mitglied Student
Beiträge: 21 Registriert: 17.03.2009 Abaqus 6.8.1
|
erstellt am: 05. Mai. 2009 10:31 <-- editieren / zitieren --> Unities abgeben:
hallo Nicksen, eigentlich wollte ich mit Absicht die For-Schleife von hinten aufziehen. Also mit: Code: for jobName in mdb.jobs.keys()[-3:-1]:
allerdings hab ich es halt nie geschafft mit -1 den letzten Job einzufangen. Warum auch immer... mit dem Befehl: mdb.jobs.keys()[-1] zeigt er mit im Interpreter ja auch den letzten Job an... Aber leider wird da, wie du sagst das Ende (hier die -1) nicht erreicht. Nun fang ich einfach (wie du sagst) von vorne an zu zählen. Also mit: Code: for jobName in mdb.jobs.keys()[0:4]:
Danke für die Hilfe! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
loretta Mitglied
Beiträge: 17 Registriert: 31.10.2008
|
erstellt am: 05. Mai. 2009 15:00 <-- editieren / zitieren --> Unities abgeben: Nur für iggboert
Hallo Iggboert, mal so völlig ungetestet und ausm Kopp: Python bietet die Möglichkeit mittels des Befehls reverse() Listen umzudrehen. s = [1,2,5,7] s.reverse() print s {ergibt [7,5,3,1]} In deinem Fall also: jobList = mdb.jobs.keys() jobList.reverse() # Liste umdrehen for item in jobList: {hier den Schleifeninhalt} Versuchs doch mal! Mir ist aber zugegebenermaßen auch schleierhaft, warum deine Variante nicht funktioniert. Grüße Patrick Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
carsten1983 Mitglied Doktorand
Beiträge: 125 Registriert: 11.10.2007
|
erstellt am: 06. Mai. 2009 09:55 <-- editieren / zitieren --> Unities abgeben: Nur für iggboert
Warum willst du eigentlich unbedingt von Hand die 3 Jobs zuweisen? Code: for jobName in mdb.jobs.keys()
iteriert über alle einträge in der Liste. Alternativ um das mit den Indices nochmal zu zeigen, könntest du auch auch:Code: for jobName in mdb.jobs.keys()[:]
verwenden. Bei diesem kompletten Slice sollten alle Listeneinträge verwendet werden.Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
iggboert Mitglied Student
Beiträge: 21 Registriert: 17.03.2009 Abaqus 6.8.1
|
erstellt am: 15. Mai. 2009 16:22 <-- editieren / zitieren --> Unities abgeben:
hi Carsten, komme jetzt erst dazu zu antworten. Warum ich das mache? Hmm, ganz einfach. Ich kannte die von die angegebene Lösung noch gar nicht. Habs jetzt ausprobiert und es klappt prima! Danke Man lernt halt nie aus! Grüssla [Diese Nachricht wurde von iggboert am 24. Sep. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |