Aide exercice Python sur site Future Engineer

boncru - 27 févr. 2024 à 19:49
 Helper - 9 oct. 2024 à 18:09

Bonjour à tous,

Je suis enseignant et j'ai découvert Citizen Code Python sur le site (Amazon) www.futureenginer.fr, le format avec création de classe virtuelle et intéressant pour initier la découverte de (pseudo...) Python.

Cependant je n'arrive pas, en moins de 20 lignes, à résoudre (en mode Python) l'exercice Saison 1 Episode 7 : Les publicités

Pouvez vous m'aider svp ?

Merci

Macintosh / Firefox 115.0

6 réponses

Voici déjà l'énoncé (voir sur le site futureengineer.fr S01E07) :    

"Déplace les écrans publicitaires pour insérer une colonne vide entre chacune des cinq colonnes d'écrans. Je précise qu'il y a 4 lignes sur 4 colonnes  dont les 4 premiers qui bouge pas soit 12 écrans à déplacer.

Attention : la taille de ton programme est limitée à 20 blocs."

Voici ce que j'ai fait, il y a déjà 17 blocs (la fonction if avec ou sans else: prend 4 blocs): les derniers écrans ne sont pas à leur place :

for loop in range(4):
    for loop in range(4):
        droite()
    for loop in range(4):
        gauche()
        if hauteurColonne() ==3:
            droite()
            for loop in range(3):
                prendre()
                droite()
                poser()
                gauche()
            gauche()
        else:
            pass
     droite()

En seulement 3 blocs de plus je ne finis pas, je n'y arrive qu'en 24 blocs. Voilà 2 semaines que je bataille, merci de votre aide.

1
Utilisateur anonyme
27 févr. 2024 à 20:18
0
Utilisateur anonyme
27 févr. 2024 à 23:58

Il va falloir un peu de contexte parce que je n'ai pas prévu de m'inscrire sur ce site ni de faire tous les exercices qui précèdent pour comprendre de quoi il retourne.

Je suppose que les fonctions prendre, poser, droite, gauche et hauteurColonne sont fournies par le jeu.

Ce que je crois comprendre, c'est que les 4 premières servent à déplacer un curseur tenir ou déposer un panneau, comment fait on pour monter et descendre le curseur ? Et sinon à quoi servent-elles?

La fonction hauteurColonne retourne-t-elle la position du curseur ?

Si un if prend 4 "blocs", combien de bloc prend un for? Et combien pour une simple ligne ?


0
mamiemando Messages postés 33356 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 13 novembre 2024 7 805
29 févr. 2024 à 15:25

Bonjour,

Comme le dit Whismeril, quand tu demandes de l'aide; prends le soin de :

  • poser ton exercice de sorte à ce qu'on puisse le comprendre (un peu comme on poserait un problème de maths). Ici l'énoncé est incompréhensible sans image
  • montrer ce que tu as fait
  • expliquer ce qui te bloque
  • chercher avec ton moteur de recherche favori si quelqu'un n'a pas déjà répondu à la question que tu te poses.

En l'occurrence, en cherchant un peu, on trouve cette vidéo (ça a l'air de ressembler à ce que tu décris mais ça n'a pas l'air d'être exactement le même exercice).

Bonne chance

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question

Hello,

Je ne sais pas si tu as trouvé depuis, mais voici une aide pour la résolution (j'ai réussi en 17 blocs) :

Il faut trouver un moyen pour que les déplacements à droite ou à gauche varient à chaque tour d'une boucle.

Pour une boucle :

for loop in range(N):

"loop" varie de 0 à N-1 en augmentant de 1 à chaque tour de boucle.

Ainsi au premier déplacement il faut bouger de 4 cases, puis au deuxième de 3 cases, puis au troisième de 2 cases, etc

Commencer par la dernière colonne

0

J'ai trouvé en python, par contre pas sur comment le faire en blockly. 

from robot import *

for x in range(4): # 0, 1, 2, 3
    droite()
for x in range(4):  
    # 1ère itération: 4 - x = 4 - 0 = 4
    # 2ème itération: 4 - x = 4 - 1 = 3
    # 3ème itération: 4 - x = 4 - 2 = 2
    # 4ème itération: 4 - x = 4 - 3 = 1
    for y in range(3):
        prendre()
        for z in range(4 - x):
            droite()
        poser()
        for z in range(4 - x):
            gauche()
    gauche()
0