Incrémenter le nom d'une variable - Python - Programmation
Marsh Posté le 18-07-2004 à 23:40:09
non, utilise un tableau
Marsh Posté le 18-07-2004 à 23:47:43
abruti
et utilise les list comprehension le plus possible
Marsh Posté le 19-07-2004 à 00:23:02
Merci pour la rapidité de réponse, et je débute en python donc sa fait toujours plaisir de se faire traiter d'abruti !
Marsh Posté le 19-07-2004 à 07:41:56
ça n'a rien à voir avec python. la notion de séquence est fondamentale. si tu ne l'a pas, tu peux retourner page 2
Marsh Posté le 19-07-2004 à 09:15:59
UFC a écrit : Merci pour la rapidité de réponse, et je débute en python donc sa fait toujours plaisir de se faire traiter d'abruti ! |
Faut pas te formaliser, y'a plein de gens qui ont été élévés par des singes en haut d'une montagne ici. Mais bon parfois ils donnent des réponses compréhensibles.
Marsh Posté le 17-04-2013 à 18:26:40
Comme je suis moi aussi un gros abruti, je relance la question avec un cas concret :
J'utilise python dans Maya pour regler la rotation des phalanges des doigts de la main d'un personnage 3D.
j'ai ces variables, qui correspondent a la valeur de la rotation des phalanges lorsque le poing est ferme. :
IndexP2rotZ = -80
IndexP3rotZ = -90
IndexP4rotZ = -90
MajeurP2rotZ = -85
MajeurP3rotZ = -80
MajeurP4rotZ = -90
AnnulaireP2rotZ = -82
AnnulaireP3rotZ = -85
AnnulaireP4rotZ = -85
AuriculaireP2rotZ = -75
AuriculaireP3rotZ = -90
AuriculaireP4rotZ = -80
j'ai ensuite une fonction "editValue", dont le contenu n'a pas d'interet ici, mais qui fait appele a ces variables :
editValue( "IndexP2_rotateZ", IndexP2rotZ )
// IndexP2_rotateZ est le nom du noeud dans Maya qui gere la rotation de ma phalange.
pour le moment, j'ai ecrit ca :
editValue( "IndexP2_rotateZ", IndexP2rotZ )
editValue( "IndexP3_rotateZ", IndexP3rotZ )
editValue( "IndexP4_rotateZ", IndexP4rotZ )
editValue( "MajeurP2_rotateZ", MajeurP2rotZ )
editValue( "MajeurP3_rotateZ", MajeurP3rotZ )
editValue( "MajeurP4_rotateZ", MajeurP4rotZ )
etc...
Ce qui n'a absolument aucun sens.
3 phalanges par doigts, 4 doigts par main (je ne traite pas le pouce), 2 mains par personnage, 24 lignes de code grotesques.
Je veux pouvoir ecrire :
for doigt in ["Index", "Majeur", "Annulaire", "Auriculaire"] :
for phalange in range( 1, 4 ) :
editValue( doigt+"P"+phalange+"_rotateZ", doigtPphalangerotZ )
Ce qui aurait un peu plus de classe...
J'ai beau essayer de comprendre comment fonctionnent les dictionnaires, je ne vois comment ca peut m'aider dans ce cas precis...
Merci.
Marsh Posté le 18-04-2013 à 10:50:43
Ok, merci, je vais voir si j'y arrive tout seul
je ne comprends pas pourquoi ce n'est pas joli joli, moi je trouve ca plutot elegant au contraire, de passer dans des boucles plutot que de taper des lignes et lignes, mais j'ai l'impression que la presence de variable dans le nom d'une variable est un sujet delicat, partout ou j'ai cherche, j'ai rencontre les memes reponses indignees, voire insultantes.
Pourquoi tant de passion ?!
Marsh Posté le 18-04-2013 à 11:00:56
Je donnerais pas de réponse pour python, qui est un langage que je n'aime pas pour des raisons syntaxiques, mais pour faire ça en perl (et il y a surement l'analogue en python), je passerais par un hash.
A+,
Marsh Posté le 18-04-2013 à 11:06:58
francoisboudaille a écrit : Ok, merci, je vais voir si j'y arrive tout seul |
Parce que techniquement, tu peux sans doute mettre ta donnée initiale en forme correctement et utiliser des tableaux ou dictionnaires et ne pas avoir à nommer dynamiquement ta variable.
Edit : Exemple :
Code :
|
Si tu pars sur ca, t'as plus besoin de nommer quoi que ce soit, et ta boucle se contente d'aller chercher la bonne configuration dans cette structure. Accessoirement, cette structure est aussi plus facile à maintenir si tu veux ajouter le support du pouce.
Marsh Posté le 18-04-2013 à 11:12:45
Oui, j'ai vu que tout le monde conseillait plutot l'utilisation de dictionnaires, mais je debute dans Python, et meme si je comprends comment fonctionnent les dictionnaires, je n'arrive pas a voir comment je pourrais les utiliser dans ce cas precis.
J'ai bosse dix ans avec un langage proprietaire et c'est dur de se convertir...
Marsh Posté le 14-06-2016 à 15:38:02
UFC a écrit : Bonjour, |
Bonjour,
Si quelqu'un d'autre cherche la solution, le plus simple est de passer par ces lignes de code:
for i in range(1,4)
variable+str(i)=i
On ne peut réaliser des opérations mathématiques que sur des nombres, or les noms des variables sont des chaînes de caractères, il faut donc réaliser un changement de type ( str(i) ) sur la variable utilisée.
J'espère avoir été utile ;-)
Marsh Posté le 15-06-2016 à 09:31:30
matth0u a écrit : Bonjour, Si quelqu'un d'autre cherche la solution, le plus simple est de passer par ces lignes de code: for i in range(1,4) On ne peut réaliser des opérations mathématiques que sur des nombres, or les noms des variables sont des chaînes de caractères, il faut donc réaliser un changement de type ( str(i) ) sur la variable utilisée. J'espère avoir été utile ;-) |
Non, non seulement tu remontes un topic qui a 3 ans mais ton code n'a aucun sens, il est tellement foireux qu'il contient une erreur de syntaxe par ligne, et en python les noms de variables sont des noms de variables pas "des chaînes de caractères".
Marsh Posté le 18-07-2004 à 23:35:32
Bonjour,
J'aimerais savoir comment faire pour incrémenter le nom d'une variable en python. Ce n'est pas la valeur de la variable que je veux incrémenter.
exemple:
for truc in bidul:
ma_variable1=truc
et qu'après cela devienne ma_variable2, ma_variable3, etc....
merci