Python : changer la valeurs de variables à partir d'une liste de variables
Résolu
Lecodeurhtmlcss
Messages postés
76
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour et merci de votre attention,
Je crée un moteur 3D en python, qui a besoin de commandes avec le clavier, beaucoup de commandes... Comme je suis un flemmard et que je ne veux pas écrire une liste long comme le bras de lignes pour assigner chaque touche à une changement de variables, je me suis dit que j'allais faire une liste spécialisée de format :
donc ça donnerait
(c'est plus court !)
Mais ça ne fonctionne pas bien sûr, car on change i[1] au lieu de la variable en question...
Y-aurait-il une méthode pour automatiser l'assignation de variables (si ce n'est transformer toutes mes variables en une liste géante...) , ou suis-je condamné à écrire toute les lignes (c'est pas la mort non plus ;))
Merci beaucoup pour vos réponses !
NB : j'ai entendu parler de dictionnaire, mais ça ne donnerait pas la même chose par hasard ?
Je crée un moteur 3D en python, qui a besoin de commandes avec le clavier, beaucoup de commandes... Comme je suis un flemmard et que je ne veux pas écrire une liste long comme le bras de lignes pour assigner chaque touche à une changement de variables, je me suis dit que j'allais faire une liste spécialisée de format :
[["a",variable à changer, valeur du changement],["espace",variable à changer, valeur du changement]...]
donc ça donnerait
def UserTouche(Touche): for i in [["o",Rhb,0.3],["k",Rgd,-0.3],["l",Rhb,-0.3],["m",Rgd,0.3],["z",pos,0.3],["q",pos,-0.3],["s",pos,-0.3],["d",pos,0.3]]: #Juste un écchantillon ! for j in Touches: #(Touches=liste des touches appuyées à ce moment) if j in i: #if type(i[1])=='list': # Calculs pour le changement de position j'imagine #else : i[1]=i[1]+i[2]
(c'est plus court !)
Mais ça ne fonctionne pas bien sûr, car on change i[1] au lieu de la variable en question...
Y-aurait-il une méthode pour automatiser l'assignation de variables (si ce n'est transformer toutes mes variables en une liste géante...) , ou suis-je condamné à écrire toute les lignes (c'est pas la mort non plus ;))
Merci beaucoup pour vos réponses !
NB : j'ai entendu parler de dictionnaire, mais ça ne donnerait pas la même chose par hasard ?
A voir également:
- Python : changer la valeurs de variables à partir d'une liste de variables
- Citizen code python avis - Accueil - Outils
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
- Citizen code python solution - Forum Python
2 réponses
Bonjour,
Mouais, tu t'embarques dans de mauvaises pratiques, bref, ce qu tu veux faire est d'accéder à une variable en ayant son nom sous forme de string.
Mais on ne doit pas faire ce genre de chose crados, utilise par exemple un dictionnaire, qui répond parfaitement à ce que tu souhaites réaliser ;-)
Mouais, tu t'embarques dans de mauvaises pratiques, bref, ce qu tu veux faire est d'accéder à une variable en ayant son nom sous forme de string.
>>> var, value = 'pos', 0.3 >>> globals()[var] = value >>> pos 0.3
Mais on ne doit pas faire ce genre de chose crados, utilise par exemple un dictionnaire, qui répond parfaitement à ce que tu souhaites réaliser ;-)
Fait avec le dictionnaire
Et le code
Merci de votre aide ! (en fait la question devient "Changer la valeur d'une variable via un dictionnaire"...)
il faut maintenant créer le dictionnaire suggéré par rustugu.
je pense qu'il faut peupler ainsi ton dictionnaire d'actions:
DicoTouches = {"o":["Rhb",0.3],"k":["Rgd",-0.3],"l":["Rhb",-0.3],"m":["Rgd",0.3],"z":["pos",0.3],"q":["pos",-0.3],"s":["pos",-0.3],"d":[pos,0.3]}
au lieu de ton épuisante construction for/for/if, je pense préférable:
chaque fois, au lieu d'utiliser la variable , tu utiliseras .
Si oui, étantonné qu'il serait plus simple de juste faire une liste de ifs, y-a-til une procédure pour faire plein de ifs à la suite plus rapide ?