- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cet exercice, on va faire un script un peu plus intéressant que ce qu'on a fait dans les parties précédentes,puisqu'on va faire un script qui va renommer les objets de notre scène.
00:00:08 :Donc c'est une opération qu'on a très souvent besoin de faire et qui est assez longue à faire à la main,qu'on va pouvoir automatiser avec 4-5 lignes de code pour renommer ici tous les objets de notre scène.
00:00:19 :Donc vous voyez que pour l'instant on a des noms qui ne sont pas forcément très cohérents,par exemple ici on a un objet qui s'appelle plane, on a un objet qui s'appelle sphère,on en a d'autres qui s'appellent cube, mais ils ont tous des numéros un peu chaotiques,donc on a un 20, 124, 70, etc.
00:00:33 :Donc l'objectif ici ça va être de renommer tous ces objets pour qu'on ait déjà cube en premier,ensuite un tiré du bas, et par la suite on veut avoir une suite de nombres avec 0, 0, 1, 0, 0, 2, 0, 0, 3, etc.
00:00:45 :Donc des nombres qui se suivent et qui aient 3 valeurs à chaque fois,donc si on a 1 on va avoir 0, 0, 1, si on a 2, 0, 0, 2, si on a 100 on va avoir 100,et comme ça on aura une suite logique et non pas des nombres ici qui parfois n'ont qu'un élément,
00:00:56 :comme le 3 ici, ou le 309 qui en a 3.Donc on veut avoir quelque chose de cohérent et on va pour ça utiliser la fonction renamequi nous permet de renommer les objets.
00:01:06 :Donc la première chose à faire déjà c'est de récupérer notre sélection et de boucler dessus.Donc la sélection on va la récupérer dans une variable et on va utiliser mc.ls
00:01:15 :et on va dire sl égale true, donc sl qui est selected,donc on va récupérer tous les objets sélectionnés.Donc si j'exécute ce script et que j'affiche cette variable sélection,là vous voyez qu'on a bien récupéré tous les noms des objets qu'on a de sélectionnés.
00:01:28 :On va pouvoir boucler ensuite sur cette sélection, donc on va dire pour object in selection,deux points, à la ligne et on met bien la tabulation ici,donc l'indentation pour dire qu'on veut mettre des lignes de code à l'intérieur de cette boucle,et on va faire un mc.rename et on va renommer donc notre objet en quelque chose d'autre.
00:01:46 :Donc on va mettre une chaîne de caractère et dans cette chaîne de caractère on va insérer des valeurs,donc on va mettre déjà le nom de l'objet, donc on veut que ce soit cube,et ensuite après le tirer ici on va vouloir insérer une variable qui va s'incrémenter.
00:01:59 :Donc pour ça je vais faire un fstring, je mets mon f devant,et ici dans les accolades je vais mettre une variable qui pour l'instant n'existe pas mais qu'on va créer.
00:02:06 :Donc on va créer une variable i qui est égale à 0 et on va la mettre ici à l'intérieur des accolades.Donc pour l'instant on a i qui est égal à 0,donc là ça veut dire qu'on renommerait tous nos objets en cube tiré du bas 0,donc nous ce qu'on veut c'est incrémenter cette variable à chaque fois.
00:02:20 :Donc pour ça on va faire i plus égal 1 qui est juste une façon raccourcie d'écrire i égal à i plus 1,et donc en fait i plus égal 1 ça va juste nous permettre d'incrémenter la valeur de i à chaque fois qu'on passe sur un objet.
00:02:41 :Donc si je fais ça pour l'instant vous allez voir qu'on va avoir tous nos cubes qui seront correctement renommés,sauf qu'on n'a pas encore ce padding donc avec les 0 pour avoir 0 0 1 au lieu de 1.
00:02:51 :Alors pour ça dans le fString on peut directement mettre ce formatage,donc on va mettre 2 points et le formatage c'est 0 4 d.Donc si ça vous intéresse de voir toutes les options de formatage que vous pouvez utiliser dans les fString,dans la prochaine partie je vous mettrai un lien vers une documentation très bien faite
00:03:07 :qui explique tout ce que vous pouvez mettre pour modifier les éléments à l'intérieur de votre fString.Donc là quand on met 2.04 d en fait on va dire qu'on veut 4 digits,
00:03:16 :donc le d c'est pour digits, si on en voulait que 3 on pourrait mettre 3,et ça ça va nous permettre d'avoir un padding avec des 0.
00:03:22 :Donc je vais vous montrer tout ça, je sélectionne tous mes cubes, j'exécute le script,et là vous voyez qu'on a bien un padding avec trois éléments.
00:03:29 :Donc quand on a 0 1, si je cherche le 0 1 je ne sais pas où il est mais il doit être quelque part là dedans,là on a le 0 2 donc vous voyez on a 0 0 2.
00:03:37 :Donc comme ça ça permet d'avoir quelque chose de beaucoup plus uniforme,avec tous les noms qui contiennent bien cube en premier et une suite de nombres qui se suivent.
00:03:45 :Donc c'est exactement ce que je voulais.On a plusieurs façons de faire cet exercice, comme très souvent en programmation il n'y a pas qu'une seule façon de faire.
00:03:52 :Là on a utilisé un fString, on pourrait avec les anciennes versions de Python utiliser non pas un fString,mais par exemple une concatenation avec un plus, donc on pourrait mettre plus ici,et si on souhaite avec le plus additionner différents éléments ensemble,il faut que les deux éléments soient des chaînes de caractère.
00:04:06 :Donc là on pourrait convertir notre i en chaîne de caractère avec la fonction string,et on a sur les chaînes de caractère une méthode qui s'appelle zFill,qui va faire exactement ce qu'on avait fait avec le 0 3d à l'intérieur du fString.
00:04:19 :Donc ça en fait string i.zFill3 si j'exécute, vous allez voir qu'on se retrouve avec tout simplement 0 32,donc dans ce cas-ci i avait la valeur de 32 qui était la dernière itération de notre boucle,et le zFill va rajouter autant de 0 que nécessaire pour qu'on arrive à 3 éléments ici,
00:04:35 :puisqu'on a indiqué 3, si je mettais 6 à la place, vous verrez qu'on aurait plus de 0 pour arriver à cette longueur de 6.Donc vous voyez une autre façon de faire, une autre façon de faire également pour cette variable,c'est d'utiliser une fonction qui va nous permettre à l'intérieur de notre boucle de récupérer directement
00:04:50 :à la fois le nom de l'objet, donc le nom de ce sur quoi on boucle, et l'itération.Donc pour ça on va utiliser une fonction qu'on appelle enumerate,donc c'est généralement cette façon de faire que vous verrez utilisée plutôt que d'une variable comme ça qui s'incrémente,et enumerate en fait ça va nous permettre dans notre boucle de récupérer comme je vous disais à la fois l'itération,
00:05:09 :qu'on va récupérer dans une variable que je vais appeler là encore i,mais ce n'est pas obligé, on pourrait mettre n'importe quoi ici, je pourrais mettre x, c'est vraiment juste un nombre de variables.
00:05:17 :Donc je mets i, object, in, enumerate de sélection.On va récupérer dans i l'itération de la boucle courante, donc 0, 1, 2, 3, 4, etc.
00:05:25 :Et dans object on va récupérer le nom de l'objet sur lequel on boucle,donc le nom de chaque objet dans sélection.On peut donc utiliser ce i de nouveau avec notre string i z fill, je vais le remettre à 3,et vous allez voir que ça va fonctionner de la même façon,
00:05:40 :donc je vais revenir un petit peu en arrière pour revenir avec les noms ici qui sont mal nommés,et je vais exécuter ce script, je relance tout ça, et là vous voyez qu'on a exactement le même résultat.
00:05:50 :Donc comme je vous dis il n'y a pas qu'une seule façon de faire,il ne faut vraiment pas vous étonner si pour le même but vous avez différents scripts qui font la même chose,c'est bien entendu normal.
00:06:00 :Vous avez ici des fonctions que vous ne connaissez pas forcément,donc au début il faut faire avec ce que vous connaissez,et petit à petit vous allez apprendre de plus en plus de façons de faire comme celle-ci avec enumerate,qui vont vous permettre de faire des scripts un peu plus efficaces avec un peu moins de lignes de code.
00:06:14 :Gardez toujours en tête quand même la clarté de votre code,on pourrait tout faire en une ligne ou presque, mais il vaut mieux des fois séparer les choses.
00:06:21 :Par exemple ici on a créé une variable intermédiaire,et ça permet d'avoir un code qui se documente tout seul,parce que si je n'ai pas cette variable intermédiaire et que je mets directement ça ici,que je l'enlève, là pour quelqu'un qui lit votre script,ce n'est pas forcément évident que l'on boucle sur la sélection,
00:06:35 :à moins qu'il sache clairement que ça, ça veut dire qu'on va récupérer la sélection,ce n'est pas forcément très explicite.Alors que si je fais une variable intermédiaire,là on comprend bien qu'on récupère la sélection et qu'on boucle dessus.
00:06:45 :Donc voilà pour cet exercice, j'espère que ça vous permet encore une fois de voir toute la puissance de Python,puisqu'avec 4 lignes de code ici, on a un petit Renamer,donc c'est vraiment pas très compliqué pour l'instant,mais vous voyez que ça permet quand même d'automatiser certaines choses,et de ne pas avoir à renommer tous les objets de votre scène à la main.
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.