Je suis un débutant et un peu perdu avec le code que j'ai écrit. J'écris un add-on pour certains logiciels, en essayant d'extraire des données de ses classes.Fonctions à l'intérieur de l'itération "pour", Python
Il existe une liste d'instructions pour lesquelles je suis en train d'utiliser l'opérateur. Je suis intéressé par deux types d'instructions appelées VC_STATEMENT_LINMOTION et VC_STATEMENT_PTPMOTION (il y en a beaucoup d'autres aussi). D'abord dans mon code je vois lequel de ces deux types de déclarations vont en premier. Si c'est LinMotion, alors, j'obtiens quelques valeurs d'extraction pour cette instruction LinMotion (en allant à cette fonction (def get_initalvalues ())) jusqu'à ce que le code "rencontre" l'instruction PtpMotion. Après cela, il va à la fonction def get_conf() où les données pour PtpMotion sont extraites. De même, dans get_conf() si LinMotion est rencontré plus tard, les données sont extraites de PtpMotion de la dernière itération.
Mais cela ne marche pas.
Je sais que cela semble lourd))). Peut-être que je l'ai moi-même fait trop compliqué et la solution est plus simple.
for statement in main_routine.Statements:
if statement.Type == VC_STATEMENT_LINMOTION or statement.Type == VC_STATEMENT_PTPMOTION:
def get_conf(*args):
global output
if statement.Type == VC_STATEMENT_PTPMOTION:
ptp_motion_conf = ""
Extracted string data is assigned to ptp_motion_conf which is later added to overall output
output += ptp_motion_conf
elif statement.Type == VC_STATEMENT_LINMOTION:
output += ptp_motion_conf #using data of VC_STATEMENT_PTPMOTION from last iteration
def get_initialconf(*args):
global output
if statement.Type == VC_STATEMENT_LINMOTION:
...
elif statement.Type == VC_STATEMENT_PTPMOTION:
get_conf()
statements = [] # getting list of statements to know which of LinMotion or PtpMotion goes first
for statement in main_routine.Statements:
statements.append(statement.Type)
if statements.index("LinMotion") < statements.index("PtpMotion"): #statement LinMotion goes first
get_initialconf()
elif statements.index("LinMotion") > statements.index("PtpMotion"):#statement PtpMotion goes first
get_conf()
je vais essayer de montrer dans l'échantillon:
Si la déclaration de LinMotions va d'abord, avant PtpMotion puis:
LinMotion (certaines données initiales spéciales) LinMotion (encore des données initiales ... dans tous les autres instructions LinMotion prog utilise toujours les données initiales jusqu'à ce que l'instruction PtpMotion apparaisse:
PtpMotion (ses propres données PtpMotion)
si LinMotion apparaît à nouveau, les données de la dernière déclaration de PtpMotion est utilisé
Si la déclaration PtpMotion va d'abord, avant LinMotion, puis PtpMotion (ses propres données de PtpMotion)
Si Linmotion apparaît, les données de la dernière déclaration de PtpMotion est utilisé
Combien d'instructions pouvez-vous avoir? Quelle sera la complexité de la séquence d'instructions? – kevpie
il peut être n'importe quel nombre – Maks
Définir "cela ne fonctionne pas". Qu'est-ce qui ne se passe pas? Qu'est-ce qui devrait arriver qui ne fonctionne pas? –