IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Petit exercice en Python avec if.


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mai 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mai 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Petit exercice en Python avec if.
    Bonjour,

    Dans le cadre d'un MOOC sur la plateforme FUN de l'EdX, je suis bloqué avec un petit exercice en Python.

    Voici le code source commenté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    """
        Écrire un programme qui lit 3 nombres entiers, et qui, si au moins deux d’entre eux ont la même valeur,
        imprime cette valeur (le programme n’imprime rien dans le cas contraire).
     
        Exemple 1 : Tapez 2, 1 et 2. Le programme doit imprimer 2.
        Exemple 2 : Tapez 1, 2 et 3. Le programme ne doit rien n'imprimer.
        Exemple 3 : Tapez 42, 42 et 42. Le programme doit imprimer 42.
    """
     
    a = int(input())
    b = int(input())
    c = int(input())
    x = a is c
    y = a is b is c
    if a == c:
        print(x)
    elif a == b:
        return
    elif b == c:
        return
    elif a == b == c:
        print(y)

    Ce programme affiche le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    File "C:\Users\Lenovo\AppData\Roaming\JetBrains\PyCharmCE2022.2\scratches\scratch.py", line 9
        return
        ^
    SyntaxError: 'return' outside function
    Je ne comprends pas ce que je dois taper à la place de "x = ...." et de "y = ....". x et y pourraient aussi être remplacée par "res".

    Pourriez-vous m'aidez s'il vous plaît ?

    Merci d'avance,

    Bien cordialement,

    Adrien TEREYGEOL.

  2. #2
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut
    Bonjour,
    return s'utilise uniquement dans une fonction. Elle permet de retourner un objet au code qui appelle la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> def ma_fonct(ton_prenom):
    	return f"Ton prénom est: {ton_prenom}"
     
    >>> print(ma_fonct('Alice'))
    Ton prénom est: Alice
    >>>
    Pour ce qui concerne x, y je ne vois pas ce que tu cherches à faire. Cette partie est inutile. Garde juste la partie test
    Tu peux regrouper tes conditions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if a == b or a == c:
        print(a)
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour

    On n'utilise pas "is" pour comparer des valeurs. "is" est un opérateur d'identité. Il sert à savoir si deux variables pointent vers le même objet en mémoire ou pour comparer l’identité de deux objets. Normalement, avec python 3.10, tu devrais avoir un warning sur ces instructions.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> a=1234
    >>> b=1234
    >>> a is b
    False
    Et si ça "semble" fonctionner pour certains nombres (ex 42) c'est parce que les nombres compris entre -5 et 256 sont tous stockés "en dur" dans Python et ont donc la même identité
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> a=42
    >>> b=42
    >>> a is b
    True

    On peut mieux voir ce qui se passe en regardant l'identité des nombres de cet exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> a=1234
    >>> b=1234
    >>> id(a)
    139805482599856
    >>> id(b)
    139805482599952
    >>> a=42
    >>> b=42
    >>> id(a)
    139805505439248
    >>> id(b)
    139805505439248

    Identité d’une variable

    Et n'oublie pas les tags [code] et [/code] pour poster tes codes.

    Pour ton exercice, qui sert à apprendre le "if", il te faut le résoudre par une succession de if/else (si le premier nombre est égal au second, puis si..., sinon, ...)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par atereygeol Voir le message
    Je ne comprends pas ce que je dois taper à la place de "x = ...." et de "y = ....". x et y pourraient aussi être remplacée par "res".
    On vous demande d'afficher la valeur du nombre qui se répète...

    Citation Envoyé par atereygeol Voir le message
    Pourriez-vous m'aidez s'il vous plaît ?
    Avant de coder, il faut réfléchir...

    Si on part avec 2, 1, 2.
    On "voit bien" que 2 se répète... mais avec 3 variables A, B, C "se répète" se traduira par la condition A égal à B ou B égal à C ou C égal à A.... que l'on pourra traduire avec Python sous la forme a == b or b == c or c == a.

    Mais on demande d'afficher le nombre qui se répète... ce qui peut se faire en découpant la condition de "se répète" en 2: si (a == b or b == c) alors afficher b, sinon si (c == a) afficher a.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Candidat au Club
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mai 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mai 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Code source modifié :
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    On n'utilise pas "is" pour comparer des valeurs. "is" est un opérateur d'identité. Il sert à savoir si deux variables pointent vers le même objet en mémoire ou pour comparer l’identité de deux objets. Normalement, avec python 3.10, tu devrais avoir un warning sur ces instructions.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> a=1234
    >>> b=1234
    >>> a is b
    False
    Et si ça "semble" fonctionner pour certains nombres (ex 42) c'est parce que les nombres compris entre -5 et 256 sont tous stockés "en dur" dans Python et ont donc la même identité
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> a=42
    >>> b=42
    >>> a is b
    True

    On peut mieux voir ce qui se passe en regardant l'identité des nombres de cet exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> a=1234
    >>> b=1234
    >>> id(a)
    139805482599856
    >>> id(b)
    139805482599952
    >>> a=42
    >>> b=42
    >>> id(a)
    139805505439248
    >>> id(b)
    139805505439248

    Identité d’une variable

    Et n'oublie pas les tags [code] et [/code] pour poster tes codes.

    Pour ton exercice, qui sert à apprendre le "if", il te faut le résoudre par une succession de if/else (si le premier nombre est égal au second, puis si..., sinon, ...)
    Bonjour Monsieur,

    J'ai vu que vous avez écris un livre sur Python et sur Shell, je vais télécharger celui sur Python.

    Par rapport à votre commentaire, j'ai modifié mon code source. J'ai vérifié avec PyCharm et dans le 1er cas, ça affiche bien 42 mais dans le second cas, ça n'affiche pas 2. Dans Python Tutor, je m'apperçois que le elif est ignoré du coup je ne comprend pas et je reviens donc vers vous. Voici mon code source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    """
        Écrire un programme qui lit 3 nombres entiers, et qui, si au moins deux d’entre eux ont la même valeur,
        imprime cette valeur (le programme n’imprime rien dans le cas contraire).
     
        Exemple 1 : Tapez 2, 1 et 2. Le programme doit imprimer 2.
        Exemple 2 : Tapez 1, 2 et 3. Le programme ne doit rien n'imprimer.
        Exemple 3 : Tapez 42, 42 et 42. Le programme doit imprimer 42.
    """
     
    a = int(input())
    b = int(input())
    c = int(input())
     
    if a == b and a == c:
        if b == c:
            res = 42
            print(res)
        elif b != c:
            res = 2
            print(res)
    elif a != b and a != c and b != c:
        res = ""
        print(res)

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par atereygeol Voir le message
    Bonjour Monsieur,
    Non, ici on se tutoie. Ce n'est pas "Bonjour Monsieur", c'est "Bonjour Sve@r" ou "Bonjour" tout court ou même rien du tout puisque tu l'as déjà dit au début du topic (quand tu parles avec des gens, tu dis "bonjour" à chaque nouvelle phrase?)

    Citation Envoyé par atereygeol Voir le message
    J'ai vu que vous avez écris un livre sur Python et sur Shell, je vais télécharger celui sur Python.
    Super, c'est fait pour.

    Citation Envoyé par atereygeol Voir le message
    je m'apperçois que le elif est ignoré du coup je ne comprend pas et je reviens donc vers vous. Voici mon code source :
    Réfléchis un petit peu. Tu commences if a==b and a==c, cela signifie donc que b est égal à c (deux choses identiques à une 3° sont identiques entre elles -Spock-)
    Donc comment ensuite elif b != c pourrait être vrai? Programmer c'est aussi (c'est d'abord) appliquer une logique mathématique sur les cas envisagés.
    Et c'est quoi ces valeurs "2" et "42" que tu mets en dur? Tu dois afficher les valeurs saisies, pas des valeurs de ton cru.

    Sinon syntaxiquement c'est bon. Faut juste que tu réévalues les différentes possibilités.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide avec un exercice de python sur les listes.
    Par Azixp92 dans le forum Général Python
    Réponses: 13
    Dernier message: 14/01/2020, 08h39
  2. Aide pour un exercice de proba avec Python
    Par Cassandre85 dans le forum Général Python
    Réponses: 10
    Dernier message: 30/08/2017, 11h30
  3. Aide pour un exercice de proba avec Python
    Par Cassandre85 dans le forum Exercices
    Réponses: 4
    Dernier message: 29/08/2017, 19h44
  4. Petits exercices de modélisation par objets avec UML
    Par Jéjé34 dans le forum Débuter
    Réponses: 8
    Dernier message: 06/06/2013, 16h52
  5. [XSLT]petit(s) pb(s) avec les xmlns et <xsl:namespace-ali
    Par Swoög dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/01/2005, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo