.. |nbsp| unicode:: 0xA0 :trim: ======================================== Foire aux questions du Module 3 ======================================== FAQ générale du Module 3 ======================================== Cette section comprend les questions posées et réponses au sujet de la matière abordée dans le module 3 du cours. UpyLaB du Module 3 ======================================== UpyLaB 3.1 ------------- **ARTHUR** .. topic:: Bonjour, Dans l'exercice 3.1 je suis bloqué, mon code soumis donne cette erreur : L'appel à votre programme sur l'input ``3↵5↵4`` a renvoyé: Le résultat attendu était : Aucun print .. topic:: Réponse de l'équipe Le problème est que ``print("")`` ne va rien afficher de visible, mais tout de même ajouter une ligne vide. Ce qui n'est pas ce qui est attendu ici. Reprends la consigne : il n'y a rien à imprimer dans certains cas, pourquoi vouloir utiliser print alors ? .. topic:: Réponse d'Arthur Donc je laisse vide ma section ``else``... mais cette fois j'ai une erreur de syntaxe. Si j'écris ``continue`` j'ai aussi des erreurs. .. topic:: Réponse de l'équipe As-tu vraiment besoin d'une clause ``else`` ici ? .. topic:: Réponse d'Arthur Effectivement, j'ai retiré le ``else`` et tout va bien. Merci. **OCEANE** .. topic:: Bonjour, Pour l'exercice 3.1, UpyLaB valide certains tests mais pas d'autres. Par exemple : L'appel à votre programme sur l'input ``3↵3↵3`` a renvoyé: 3 3 3 Le résultat attendu était : 3 .. topic:: Réponse de l'équipe Bonjour Océane, Dès que ton code affiche une valeur, il doit s'arrêter. Je te conseille de regarder comment fonctionne la partie ``elif`` d'une instruction ``if`` ; cela pourra sûrement t'aider. .. topic:: Réponse d'Océane Ha oui, j'ai compris mon erreur. Merci ! **ALI** .. topic:: Bonjour, Pour l'exercice 3.1, UpyLaB valide certains tests mais pas d'autres. Par exemple : L'appel à votre programme sur l'input ``3↵4↵3`` a renvoyé: Le résultat attendu était : 3 .. topic:: Réponse de l'équipe Bonjour Ali, Clairement ton code ne teste pas tous les cas. Pourquoi n'utilises-tu pas Python Tutor pour voir ce qui se passe avec les données ``3``, ``4`` et ``3``? .. topic:: Réponse Ali Ok je vais faire cela, merci ! **LOUISE** .. topic:: Bonjour, Lors de la correction de l'exercice UpyLaB 3.1, tous les résultats sont bons sauf celui ci-dessous. Je fais comment ? Mon résultat est celui attendu, mais ce n'est pas validé. .. code-block:: none L'appel à votre programme sur l'input ``20`` a renvoyé: Aucun print Le résultat attendu était : Aucun print .. topic:: Réponse de l'équipe Bonjour Louise, Quand UpyLaB écrit qu'il ne faut aucun print, cela signifie que ton code ne doit pas faire de print, alors qu'ici ton code imprime le texte ``"Aucun print"``. UpyLaB 3.2 ------------- **LOUIS** .. topic:: Bonjour, Lors de la correction de l'exercice UpyLaB 3.2, tous les résultats sont bons sauf celui ci-dessous. Je fais comment ? Mon résultat est celui attendu, mais ce n'est pas validé. .. code-block:: none L'appel à votre programme sur l'input ``20`` a renvoyé: Aucun résultat Le résultat attendu était : Aucun résultat .. topic:: Réponse de l'équipe Bonjour Louis, Quand UpyLaB écrit qu'il ne faut aucun résultat, cela signifie pas de print, alors que ton code imprime le texte ``"Aucun résultat"``. **SEVERINE** .. topic:: Bonjour, Lors de la correction de l'exercice UpyLaB 3.2, tous les résultats sont bons sauf celui ci-dessous. .. code-block:: none L'appel à votre programme sur l'input "0" n'a rien renvoyé. Le résultat attendu était : Il va faire froid. .. topic:: Réponse de l'équipe Bonjour Séverine, Pour trouver le code qui solutionne un problème, tous les cas doivent être analysés. La plupart des problèmes ont leurs cas limites. L'exemple ici illustre parfaitement cela. Que faut-il faire quand la température est de zéro (``0``) dégré ? Bon débogage UpyLaB 3.3 ---------- **AGATHE** .. topic:: Bonjour, Dans Pycharm **et** UpyLaB, les lignes suivantes de mon code : .. code-block:: python print(a.b) print(a^2+a . b) provoquent une erreur : .. code-block:: none int object has no attribute b Je ne comprends pas. .. topic:: Réponse de l'équipe Attention Agathe, la multiplication et la puissance ne se notent pas comme cela en Python. Peut-être devrais-tu revoir le cours sur les opérateurs arithmétiques. **SAUL** .. topic:: Bonjour, UpyLaB ne valide pas le cas où ``c`` a une valeur négative. Que puis-je faire ? .. topic:: Réponse de l'équipe Bonjour Saul, Tu dois bien relire l'énoncé et analyser les différents cas possibles. Que doit faire ton code si ``c`` a une valeur négative ? Après avoir bien compris les différents cas possibles, tester ton code sur une valeur correspondant à chacun des cas, en utilisant Python Tutor, pourra t'aider Bon débogage UpyLaB 3.4 ------------- **NASIA** .. topic:: Bonjour à l'équipe, Pour certaines valeurs, UpyLaB ne valide pas mon code. Pourtant tout semble identique. L'appel à votre programme sur l'input ``37`` a renvoyé: False Le résultat attendu était : False .. topic:: Réponse de l'équipe Bonjour Nasia, L'exercice demande d'afficher le résultat d'un test. Mais toi tu affiches le texte "False" probablement suivi d'un ou plusieurs caractères espaces. Enlève les espaces ou mieux fait le print du résultat du test (dont les valeurs possibles sont ``True`` ou ``False``). UpyLaB 3.5 ------------- **VINCENT** .. topic:: Bonjour, Ma vérification fonctionne lorsque les données a et b ne sont pas divisibles entièrement. Mais la réponse est ``True`` même si les nombres sont divisibles entièrement. La réponse ``False`` n'apparaît jamais. Il semble que les 2 dernières lignes du programme ne sont jamais atteintes. Quelqu'un peut-il me dire pourquoi svp ? .. topic:: Réponse de Marc Bonjour Vincent, La difficulté de cet énoncé est double. D'abord il faut bien comprendre la définition de *a est divisible par b*. Ensuite bien analyser quels sont les cas possibles et ce qu'il faut faire dans chacun des cas. UpyLaB 3.6 ------------- **SOPHIE** .. topic:: Bonjour, J'ai un problème sous UpyLaB lorsque je teste ma réponse, il me met ce message d'erreur alors que tout est ok sous Python Tutor : .. code-block:: none L'appel à votre programme sur l'input ``1.0↵2.0↵`` a été interrompu par une exception: Ligne 2: invalid literal for int() with base 10: '1.0' Pourriez-vous m'aider. Bonne journée ! .. topic:: Réponse de l'équipe Bonjour Sophie, Dans cet exercice, les données ne sont pas forcément des entiers. Si tu essaies de transformer en ``int`` une chaîne comme ``'1.0'`` alors il se produit une exception. Il faut donc utiliser la fonction ``float()`` ici. UpyLaB 3.7 ------------- **SALIM** .. topic:: Bonjour, Dans cet exercice, on parle de mise, de couleur, de numéro. Je m'embrouille avec toutes ces valeurs et je ne comprends plus le sujet. Déjà que je n'y connais rien en jeu de hasard, alors en plus avec un programme dans un jeu de hasard c'est incompréhensible. Pouvez-vous m'aidez ? Merci. .. topic:: Réponse de l'équipe Bonjour Salim, Ton programme commence par récupérer deux valeurs entières. L'une correspond au pari du joueur : un nombre entre 0 et 12 pour dire que le joueur a parié que ce nombre sortirait au tirage ou alors 13 pour dire que c'est un nombre impair qui sortirait, ou bien 14 pour un nombre pair, ou bien 15 pour dire que c'est un nombre rouge (voir le dessin du tapis dans l'énoncé pour voir quels sont les nombres rouges) ou encore 16 pour un nombre noir. L'autre valeur correspond au tirage : un nombre entre 0 et 12. Ensuite il te faut faire des tests pour voir combien le joueur va remporter. Les trois possibilités étant : 120 euros si le joueur a parié sur le numéro sorti au tirage, 20 euros s'il a trouvé la couleur ou la parité et 0 dans tous les autres cas. UpyLaB 3.8 ------------- **LISE** .. topic:: Bonjour, Je n'arrive pas à réaliser l'exercice 3.8 sur les figures géométriques avec les lettres. En effet, dans les ``x = float(input())`` il est possible de mettre des nombress mais je ne vois pas comment le programme peut lire des lettres majuscules. J'aurais besoin d'un peu d'aide et d'explications. Merci d'avance. .. topic:: Réponse de l'équipe Bonjour Lise, La fonction ``input`` va en fait lire une chaîne de caractères depuis l'entrée. Si cette chaîne est un nombre, on a donc besoin de la convertir en nombre en utilisant les fonctions ``int`` ou ``float`` selon le cas. Si on veut lire des caractères, il n'y a rien à convertir et on utilise la fonction ``input`` seule. Essaie donc avec ``x = input()``. Bon courage ! **GASTON** .. topic:: Bonjour, Dans cet exercice, certaines réponses sont correctes, mais pour certains polygones, les résultats sont différents de ce qu'UpyLaB attend. Pouvez-vous m'aider ? .. topic:: Réponse de l'équipe Bonjour Gaston, Une des difficultés dans cet exercice est d'écrire en Python l'équivalent du calcul de chacune des formules. Attention donc aux priorités des différents opérateurs (en particulier avec des divisions). Tu dois sans doute aller à la chasse aux parenthèses manquantes qui rendent ton calcul faux. Par exemple ``2 + 5 / 7`` ne donne pas 1.0 mais 2.7142857142857144. Par contre ``(2 + 5) / 7`` donne bien 1.0. D'où l'importance des parenthèses suivant ce que l'on veut calculer. Bon débogage ! UpyLaB 3.9 ------------- **OCEANE** .. topic:: Bonjour, Je n'arrive pas à comprendre où se trouve mon problème car lorsque je teste mon code , il me donne les bonnes réponses. L'appel à votre programme sur l'input ``"1515↵100↵42↵"`` a renvoyé: .. code-block:: none Combien de plis sont-ils nécessaires pour se rendre sur la Lune ? : Mauvaise réponse. Le résultat attendu était : .. code-block:: none Combien de plis sont-ils nécessaires pour se rendre sur la Lune ? : Mauvaise réponse. Combien de plis sont-ils nécessaires pour se rendre sur la Lune ? : Mauvaise réponse. Combien de plis sont-ils nécessaires pour se rendre sur la Lune ? : Bravo ! ok L'appel à votre programme sur l'input ``42↵`` a renvoyé: .. code-block:: none Combien de plis sont-ils nécessaires pour se rendre sur la Lune ? : Bravo ! Bien cordialement .. topic:: Réponse de l'équipe Bonjour Océane, Dans cet exercice, il n'est pas demandé de refaire le calcul effectué dans la vidéo sur la boucle while. Il s'agit juste de poser la question Combien de plis sont-ils nécessaires pour se rendre sur la Lune ? (attention à bien respecter le texte, ne pas hésiter à faire un copier-coller) et à lire avec l'instruction ``input`` la réponse de l'utilisateur. Et ce jusqu'à ce qu'il fournisse la bonne réponse à savoir 42. Bon déboggage ! UpyLaB 3.10 ------------- **KARIN** .. topic:: Bonjour, Comment puis-je déterminer le nombre de valeurs totales pour ensuite calculer la moyenne ? .. topic:: Réponse de l'équipe On ne connaît pas ce nombre à l'avance, mais on peut compter les valeurs au fur et à mesure qu'on les lit. Utiliser des variables supplémentaires peut être utile du coup. Bon codage ! **JÉRÔME** .. topic:: Bonjour, En ce qui me concerne j'ai un peu _filouté_ pour enlever de la somme et du nombre d'entreprises la valeur sentinelle. Après la boucle, j'ai écrit une instruction qui dit que si l'input est égal à -1 alors il faut augmenter le nombre d'employés de 1 et réduire le nombre d'entreprises de 1. Mais il y a certainement une solution beaucoup plus propre à cela pour faire que la valeur sentinelle ne soit pas prise en compte ! .. topic:: Réponse de l'équipe, Bonjour Jérôme, Effectivement le canevas suivant pourrait t'aider |nbsp| : .. code-block:: python x = int(input()) while _une_condition_sur_x: # # faire un traitement... # x = int(input()) res = ... UpyLaB 3.11 ------------- **SALIM** .. topic:: Bonjour, une personne pourrait me donner un coup de pouce sur l'exercice 3.11 ? Je n'arrive pas à aller à la ligne pour afficher les XXXX, merci d'avance. .. topic:: Réponse de l'équipe Bonjour Salim, Si tu utilises plusieurs appels à la fonction print, les affichages correspondants se feront chacun sur leur propre ligne. Tu peux aussi ajouter ``\n`` dans la chaîne de caractères à afficher à l'endroit où tu veux insérer le saut de ligne. Bon courage ! **SOPHIE** .. topic:: Bonjour; je ne vois pas la différence entre mon résultat et le résultat d'UpyLab. Pourtant UpyLab considère mon résultat comme faux. Merci pour votre aide. .. topic:: Réponse de l'équipe Bonjour Sophie, Vérifie que tu n'affiches pas des espaces superflues en fin de ligne, ou une éventuelle dernière ligne vide. Bon courage ! UpyLaB 3.12 ----------- **CHLOÉ** .. topic:: Bonjour, J'ai la même figure, mais décalée d'un cran sur la droite, comme si j'avais une espace en trop à chaque ligne. .. topic:: Réponse de Karin La fonction ``print()`` intercale une espace par défaut entre chaque valeur affichée et un retour à la ligne à la fin. Les premières fois, je te conseille de remplacer les espaces que tu veux insérer devant tes ``'X'`` par un autre caractère pour mieux visualiser les éventuelles espaces superflues. .. topic:: Réponse de Chloé Merci à vous. Je ne trouvais pas mon problème. Je me disais que pour afficher n espaces avant mon ``'X'`` je pouvais utiliser .. code-block:: python print(' ' * n, 'X') en me disant que si n vaut 0 j'afficherai zéro espace. Mais cela m'affichait quand même une espace, je viens de comprendre qu'en fait le ``print`` met une espace avant ma deuxième valeur. Et j'ai réussi en faisant |nbsp| : .. code-block:: python print(' ' * n + 'X') Une autre façon est d'expliciter que dans le print, le paramètre ``sep`` qui donne la chaîne de caractères à mettre entre chaque valeur affichée, est la chaîne vide |nbsp| : .. code-block:: python print(' ' * n, 'X', sep='') **JÉRÔME** .. topic:: Bonjour, UpyLab me dit que les réponses sont fausses alors que celles qu'il me propose sont toutes identiques aux miennes ! Mon programme fonctionne comme il faut dans mon interpréteur Python. .. topic:: Réponse de l'équipe Bonjour Jérôme, Vérifie bien que ton programme n'affiche pas une ligne supplémentaire à la fin. Pour cela, une petite astuce. Ajoute une dernière instruction ``print("A")``. Si ce ``"A"`` s'accole à la dernière ligne de ``"X"``, pas de problème. Il faut aussi vérifier le nombre d'espaces et vérifier qu'il n'y a pas une espace supplémentaire à chaque ligne. Cette espace superflue pourrait être due à la fonction ``print``. En effet, si on passe plusieurs arguments à cette fonction, ceux-ci seront par défaut séparés par une espace. On peut modifier ce comportement en précisant une valeur pour le paramètre sep de la fonction : .. code-block:: python print("Bon", "jour", sep = "") ou éviter de passer deux arguments à la fonction en concaténant les chaînes de caractères : .. code-block:: python print("Bon" + "jour") Bon courage ! **ALINE** .. topic:: Bonjour, Est-ce qu'il est possible d'être un peu aidée sur la conception de l'exercice 3.12 ?. J'ai compris qu'il fallait utiliser la concaténation entre les deux signes mais je n'ai pas réussi à voir comment mettre ça forme. Merci à vous. .. topic:: Réponse de l'équipe Bonjour Aline, L'idée consiste effectivement à concaténer une chaîne formée d'espaces et une chaîne formée de ``'X'``. Il suffit maintenant de voir combien d'espaces et combien de ``'X'`` par ligne. N'oublie pas que l'on peut utiliser l'opérateur * pour afficher plusieurs fois la même chaîne. ``" " * 3`` va afficher 3 espaces consécutives par exemple. Bon courage ! UpyLaB 3.13 ------------- **MORGANE** .. topic:: Bonsoir, personnellement, je ne comprends pas l'exemple du nombre négatif. Comment savoir combien de data il doit y avoir ? Dans l'exemple avec -1 , il y a 5 termes de somme. Je ne comprends vraiment pas comment sont générés les data pour ce cas. Quelqu'un a une piste pour m'aiguiller ? .. topic:: Réponse de l'équipe Bonjour Morgane, C'est justement le point de cet exercice, nous ne connaissons pas à l'avance le nombre de données à lire. Ce que tu as pu faire dans l'exercice 3.10 devrait t'aider pour ce cas-là. Bon courage ! .. topic:: Réponse de Morgane Merci pour votre aide, cela m'a bien aidé. Maintenant je bute sur le problème de l'erreur à cause du ``F`` qui n'est pas un nombre entier !! Je cherche et je vais trouver !! Merci .. topic:: Réponses de l'équipe Bonjour Morgane, L'idée pourrait être de ne chercher à convertir l'entrée en ``int`` qu'à partir du moment où on est sûr qu'il ne s'agit pas de la lettre ``'F'``. Bon courage ! .. topic:: Réponse de Morgane J'ai bien fini par trouver. Merci pour votre aide. **AMINE** .. topic:: Bonjour, Sur le programme, j'ai également une erreur avec la chaine de caractères ``F``, je n'arrive pas à voir comment je peux convertir la chaine de caractères. Voici ci-dessous le message d'erreur d'UpyLaB. .. code-block:: none L'appel à votre programme sur l'input ``-1↵8↵F↵`` a été interrompu par une exception: Ligne 13: ValueError: invalid literal for int() with base 10: 'F' Merci pour votre aide. .. topic:: Réponse de l'équipe Bonjour Amine, En fait, il suffit de ne pas le convertir en ``int`` Lorsqu'on appelle la fonction ``input``, celle-ci retourne ce qui est lu sous la forme d'une chaîne de caractères quel que soit le type d'entrée, numérique ou non. Ici, puisque l'entrée peut ne pas être un nombre, il faut utiliser ``input`` seule, puis tester si la valeur lue est différente de ``'F'`` avant d'effectuer la conversion en entier avec ``int``. J'espère que c'est assez clair. Bon courage ! **XAVIER** .. topic:: Bonjour a tous, Je rencontre un problème avec cet exercice dans le cas où la valeur est négative. Ce qui me pose un gros problème est la lettre ``F``, je n'arrive pas à faire de tests avec ; j'ai essayé avec ``input()`` comme conseillé (ex : ``data = input()``), ensuite tester si ``data == 'F'`` mais à chaque fois j'ai un problème de type de data. Quelqu'un pourrait-il me mettre sur la voie? Merci d'avance !! .. topic:: Réponses de l'équipe Bonjour Xavier, Vérifie ton code au niveau de la conversion des valeurs que tu reçois. N'oublie pas le fait que ``input()`` renvoie une valeur de type ``str``, et qu'une conversion de ce type vers un entier dans les fonctions ``int()`` ou ``float()`` ne peut aboutir que si la valeur entrée en paramètre correspond à celle du type vers laquelle on effectue la conversion. Par exemple : ``data = int("F")``, produira une erreur. .. topic:: Réponse de Xavier Merci à vous ! Grâce à vos commentaires j'ai compris ; en fait ce qu'il me manquait c'était la bonne syntaxe pour transformer mon ``data = input()`` en ``int`` pour pouvoir additionner ensuite. ``data = int(data)`` était la solution pour moi ! Merci! **KIM** .. topic:: Bonjour, Je rencontre des difficultés, notamment la partie avec la fin de commande ``"F"``. J'ai l'erreur : .. code-block:: none TypeError: can only concatenate str (not "int") to str Lorsque je fais ``data = input()`` dans la boucle, il prend bien les valeurs numériques et la lettre ``F`` mais je n'arrive pas à additionner les nombres rentrés pour obtenir leur somme sans obtenir le message. Et inversement si je fais un ``int(input)``. Merci d'avance pour vos lumières, en espérant avoir été clair sur mon problème sans divulguer mon code. .. topic:: Réponse de l'équipe Bonjour Kim, L'opérateur ``+`` va opérer différemment selon le type des opérandes. Si tu "ajoutes" deux chaînes de caractères, il va les concaténer. Si tu "ajoutes" deux nombres, il va retourner leur somme. Le problème, c'est que tu ne peux pas mélanger. Ajouter une chaîne de caractères et un nombre n'a pas de sens. La difficulté ici, c'est qu'on manipule deux types d'entrées, des nombres et un caractère. C'est pourquoi l'indice propose d'utiliser la fonction ``int()`` dans le cas où l'entrée est différente de ``'F'``. Bon courage ! .. topic:: Réponse de Kim Merci pour votre réponse. Cela m'a permis de débloquer cet exercice. Grâce à vos conseils et en utilisant Python Tutor, j'ai remarqué que je n'arrive pas à passer les data en ``int``. Tout simplement parce que j'écrivais dans mon code ``int(data)`` au lieu de ``data = int(data)``. Erreur de débutant. **ARTHUR** .. topic:: Bonjour, Cet exercice me donne aussi du fil à retordre. Avec l'instruction ``while data == 'F'`` : je n'arrive pas à rentrer dans la boucle et je ne vois pas trop comment faire autrement . Merci d'avance pour votre aide :o) .. topic:: Réponse de l'équipe Bonjour Arthur, Avec la condition ``data == 'F'``, le programme n'entrera dans la boucle que si data contient la valeur ``'F'``. Ne serait-ce pas plutôt le contraire que tu voudrais faire, étant donné que ``'F'`` est la dernière valeur à lire ? .. topic:: Réponse d'Arthur Merci je vais essayer ça parce que pour le moment je n'ai réussi qu'en utilisant ``while True :`` et ``break`` **KARIN** .. topic:: Bonjour, Je bloque sur la condition ``data=='F'`` pour terminer le calcul. Mon programme fait bien la somme de tous les nombres que je saisis mais pour terminer la boucle, si j'écris simplement ``F``, il me retourne un message d'erreur. Si j'écris ``'F'`` le programme fonctionne mais ce n'est pas ce qui demandé. Le problème doit se situer au niveau du type de la variable ``data``, mais je ne comprends pas (j'ai essayé d'ajouter ``data = str(input())`` par exemple) . Je comprends d'autant moins que dans Python Tutor mon programme se termine sans problème en écrivant ``F`` directement. Si vous avez des pistes. Merci .. topic:: Réponse de l'équipe Bonjour Karin, votre programme doit lire une donnée ``n`` et tester si elle vaut ``'F'`` ou sinon traduire en ``int`` et faire des calculs et recommencer .. topic:: Réponse de Karin Oui, c'est bien ce que j'essaye de faire. Cependant le programme doit utiliser la même variable ``n`` aussi bien pour les nombres à saisir que pour le ``'F'``. J'utilise ``n = input()``, ça fonctionne bien pour tous les nombres mais lorsque je saisis ``F`` (sans guillemets) le programme plante, il ne semble pas reconnaitre le type string de la variable. .. topic:: Réponse de l'équipe Bonjour Karin, ``n = input()`` va fonctionner aussi bien pour des entrées numériques que des lettres. Dans tous les cas, cette fonction retourne un objet chaîne de caractères. Le souci doit plutôt provenir au moment où tu souhaites convertir cette valeur en ``int``, c'est-à-dire au moment où tu utilises la fonction ``int()``. Cela ne sera pas possible si ``n`` est égal à la lettre ``'F'`` et c'est pour cela qu'il faut d'abord tester ceci avant de convertir la chaîne lue en nombre et l'ajouter à la somme. Bon courage ! **JÉRÔME** .. topic:: Bonjour, Dans l'exercice, j'aimerais tester si la valeur entrée correspond à la lettre ``F``. J'essaie, en vain : ``if x = "F"`` ``if x = F`` Et ça bloque. Quelqu'un peut-il m'indiquer la syntaxe exacte ? Merci. .. topic:: Réponse de l'équipe Bonjour Jérôme, Le test est ``if x == 'F':`` **ALBERT** .. topic:: Bonjour, Sur l'exercice, je bloque avec l'histoire du ``F``. Voici mon erreur : Je ne saisis pas les types de données. Comment faire comprendre à la machine que soudainement je n'ai plus de nombre mais une lettre ? Doit-on jouer avec ``int()`` et ``str()`` en input ? Comment dire tant que je n'ai pas une lettre en input, j'additionne ? Merci. .. topic:: Réponse de l'équipe Bonjour, tu as parfaitement raison Albert. La plupart du temps, nous changeons le type au moment de lire la donnée (ie dès l' ``input``) mais ce n'est pas obligatoire et nous pouvons très bien changer le type du texte lu plus tard |nbsp| : ``data = int(data)`` est possible. .. topic:: Réponse d'Albert Rhaaa ! je pensais que la nuit m'aiderait à trouver la solution. Et bien non, je bloque toujours ! J'y suis presque, mais je m'embrouille, avec le ``while``, le ``if``, le ``not`` et ce fichu ``F`` ! Un indice supplémentaire ? .. topic:: Réponse de l'équipe Bonjour Albert, Ne cherche pas à convertir la valeur lue en ``int`` avant d'avoir vérifié que ce n'est pas la lettre ``'F'``. En gros, lis l'entrée avec ``input()``, teste si c'est différent de ``'F'`` et alors seulement convertis en ``int``. Bon courage ! .. topic:: Réponse d'Albert Je crois que mon souci vient du fait que je n'arrivais pas à tester juste ce ``F``. Subitement ça a fonctionné. Des fois, la chance. Merci ! **ALINE** .. topic:: Bonsoir, Je suis revenue sur l'exercice et je suppose que les données d'entrée ne sont pas une liste. Dommage ce serait plus facile. Je bute sur la déclaration du ``'F'`` en donnée d'entrée. J'ai mis une entrée ``data = input()`` sans déclarer le type de données. Mais dans la suite je dois déclarer la condition complémentaire du type de data. Or Python ne comprend pas ``type(data) = int()`` ou ``data = int()`` ou ``input = int()``. J'ai à peu près tout essayé mais il y a un truc qui m'échappe ou que j'ai raté dans la déclaration du type de donnée. Comment puis-je ajouter une condition d'être ou ne pas être ``int`` ou ``str``. Je suis bloquée. Merci .. topic:: Réponse de l'équipe Il ne s'agit pas de déclarer quoi que ce soit. Il s'agit de simplement récupérer une donnée. si cette donnée est un ``'F'`` c'est qu'on a terminé sinon c'est que c'est quelque chose qui peut se transformer en entier et s'additionner avec ce qu'on a déjà ;-) .. topic:: Réponse d'Aline Merci, j'ai compris. UpyLaB 3.14 ------------- **AMINE** .. topic:: Bonjour, J'ai ça comme message d'erreur : .. code-block:: none L'appel à votre programme sur l'input ``50↵24↵11↵17↵20↵18↵`` avec les arguments ``100`` a renvoyé: Trop grand Trop grand Trop petit Trop petit Trop grand Perdu ! Le secret était 18. Le résultat attendu était : Trop grand Trop grand Trop petit Trop petit Trop grand Gagné en 6 essais ! Comment se fait-il que le programme fasse la vérification sur 100 et en même temps que le résultat attendu soit 18 ? Merci d'avance. .. topic:: Réponse de l'équipe Bonjour Amine, L'argument avec lequel UpyLaB teste notre code n'est pas le nombre secret à deviner. C'est la valeur qu'il passe à la fonction ``random.seed()`` et qui fait que les fonctions du module ``random`` vont générer la même suite de nombres "aléatoires" à chaque fois. **SABINE** .. topic:: Bonjour, J'ai un peu de mal avec cet exercice. Il semblerait que l'initialisation de la valeur aléatoire pose problème. Le résultat obtenu n'est jamais celui attendu. Comment fait-on pour intégrer ``argument`` dans notre code ? .. topic:: Réponse de l'équipe Bonjour Sabine, Nous n'avons pas à intégrer ``argument`` dans notre code, c'est UpyLaB qui utilise cette variable pour initialiser différents tests qu'il fait subir à notre programme. Si tu veux tester ton programme dans ton IDE dans les mêmes conditions, ajoute l'instruction ``random.seed(argument)`` en remplaçant ``argument`` par les valeurs utilisées par UpyLaB soit 5 puis 32 puis 27... Mais n'oublie pas de retirer cette instruction avant de soumettre ton code à UpyLaB. **XAVIER** .. topic:: Bonsoir, Pour réaliser l'exercice j'ai été "obligé" d'utiliser un BREAK dans un de mes ``if`` ; est-ce une mauvaise pratique ? .. topic:: Réponse de l'équipe Bonsoir Xavier, Dans l'absolu utiliser un ``break`` n'est pas forcément mauvais. Toutefois, dans le cadre d'une initiation, il est préférable de s'en passer. La boucle ``for`` n'est peut-être pas la plus adaptée ici. Pourquoi ne pas essayer le canevas suivant : .. code-block:: python on_continue = True while on_continue: if ... on_continue = False ... UpyLaB 3.15 --------------- **JO** .. topic:: Alors, je ne comprends pas pourquoi dans cet énoncé : il y est décrit le comportement de 3 autres écureuils. Le programme doit vérifier si l'un des 3 autres écureuils arrive à la position de la noisette avant l’écureuil dont on peut choisir la valeur de déplacement ? .. topic:: Bonjour Jo, Ce ne sont que des exemples d'écureuils. Il ne s'agit de s'intéresser ici qu'à un seul écureuil pour lequel on va lire le saut qu'il fait pour se déplacer, et voir si cet écureuil-là peut ou non atteindre la noisette. Bien entendu, UpyLaB testera notre programme pour différentes valeurs de saut et différents emplacements de la noisette, mais à chaque exécution du programme, il n'y a qu'un seul écureuil concerné. Bon courage ! Isa **MARINE** .. topic:: Bonjour, J'ai un problème avec l'exercice de l'écureuil. Quand ce dernier atteint la cible, le programme affiche la dernière valeur alors que la règle veut que le programme imprime "Cible atteinte" à la place. .. topic:: Réponse de Lise Bonjour MARINE, Tu pourrais peut-être envisager de tester la valeur courante **avant** de procéder à son affichage. .. topic:: Réponse de Marine Ca marche ! Merci beaucoup. **TOM** .. topic:: Bonjour, J'ai quelques problèmes concernant cet exercice. Mon programme fonctionne pour saut = 9 ; position_cible = 7 et pour saut = 8 ; position_cible = 7. Mais pour (10, 20), (50, 66), (14,4), (20, 6) et (24,6) mon programme ne marche pas. Ne sommes nous pas censé arrêter le programme dans tous les cas si on dépasse au maximum deux fois le barreau 0 ? .. topic:: Réponse de l'équipe L'idée est que l'écureuil peut faire autant de tours qu'il veut, mais s'arrêtera quand il revient en 0 **ou** atteint la cible. .. topic:: Réponse de Tom Ah d'accord, je n'avais pas compris cela. C'est validé maintenant. **ARTHUR** .. topic:: Bonsoir, J'ai des impressions au-dessus de 100 alors que j'utilise modulo. .. topic:: Réponse de Luc Bonsoir Arthur. Le modulo étant prioritaire sur l'addition, il faut penser à utiliser des parenthèses : .. code-block:: python (valeur + increment) % 100 .. topic:: Réponse de Arthur Merci. Ça fonctionne. UpyLaB 3.16 --------------- **MARIE** .. topic:: Bonjour, Je n'arrive pas à gérer les espaces. .. topic:: Réponse de l'équipe Bonjour Marie, Le souci ne vient pas de l'espacement entre les nombres ; celui-ci n'est pas pris en compte par UpyLaB. Il faut toutefois veiller à ne pas afficher de ligne blanche supplémentaire, en particulier au début. L'affichage doit commencer avec la première ligne de la table de multiplication. Il faut donc réfléchir à l'emplacement de l'instruction qui permet d'aller à la ligne suivante. Bon courage ! UpyLaB 3.17 ------------- **LUCIE** .. topic:: Bonjour, Dans cet exercice, je ne comprends pas le calcul à faire effectuer par Python. Je comprends qu'il faut récupérer avec une boucle les valeurs impaires des factorielles et leur calcul. Mais je ne comprends pas cette notion de constante epsilon. Merci. .. topic:: Réponse de l'équipe On pourrait continuer indéfiniment le calcul des différents termes de la série. Ici, on nous demande de les arrêter, et de donner une approximation de la valeur de ``sin(x)`` lorsque le terme à ajouter a une valeur suffisamment petite (il doit être inférieur en valeur absolue à cette constante donnée dans l'énoncé). .. topic:: Réponse de Lucie D'accord merci pour cette précision. UpyLaB 3.18 ------------- **MARC** .. topic:: Bonjour, Je suis totalement coincé sur cet exercice : je ne sais pas du tout comment l'aborder. .. topic:: Réponse de l'équipe Bonjour Marc Une idée, possible est de décomposer la construction d'une ligne, numéro ``i`` : un certain nombre d'espaces puis des chiffres en miroir autour d'un chiffre.