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 :

Petite aide pour un débutant


Sujet :

Python

  1. #1
    Candidat au Club Avatar de Yoshisane
    Homme Profil pro
    Simple passioné
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Simple passioné
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Petite aide pour un débutant
    Bonjour à tous, je me lance actuellement dans la programmation avec python, je suit un cour sur un site et j'ai remarqué un point qui n'es pas clair pour moi et j’espère trouver une réponse ici

    Alors voilà, dans le cour je doit créer un programme qui permet, en entrant une année quelconques, de savoir si cette année est bissextile ou non. Jusque la rien de très compliqué. Après avoir réaliser mon programme et suivis la correction, l'auteur du cour propose une solution "allégé" du code.

    Le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Programme testant si une année, saisie par l'utilisateur, est bissextile ou non
     
    annee = input("Saisissez une année : ") # On attend que l'utilisateur saisisse l'année qu'il désire tester
    annee = int(annee) # Risque d'erreur si l'utilisateur n'a pas saisi un nombre
     
    if annee % 400 == 0 or (annee % 4 == 0 and annee % 100 != 0):
        print("L'année saisie est bissextile.")
    else:
        print("L'année saisie n'est pas bissextile.")
    Je comprend très bien le code et après avoir essayé pas mal de modifications pour être sûr de bien avoir compris j'ai remarqué que le code fonctionnais exactement de la même manière si j'enlevais les parenthèses de ce prédicat : (annee % 4 == 0 and annee % 100 != 0)

    Ma question est donc : à quoi servent vraiment ces parenthèse et pourquoi l'auteur les à mis si elles ne changent pas le fonctionnement du code ?

    L'auteur explique ceci : "Le prédicat correspondant est un peu délicat, il fait appel aux priorités des parenthèses." sans en dire plus, que veut-il dire par "priorités des parenthèses." ?

    Merci d'avance pour vos réponses, je suis ouvert à tout conseil, je suis encore au touuuut début du cour

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Une succession d'opérateur booléens peuvent induire en erreur.

    Sans les parenthèses, que désire-tu vérifier ?

    Que l'année soit divisible par 400 ou par 4 mais que dans chacun des deux cas ne soit pas divisible par 100 ?

    Non, bien sur.

    Les parenthèses enlèvent tout ambiguïté sur tes intentions.

    Note qu'en général on utilise pas la forme "if x == 0" on utilise not x, ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if not annee % 400 or (not annee % 4 and annee % 100):

  3. #3
    Candidat au Club Avatar de Yoshisane
    Homme Profil pro
    Simple passioné
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Simple passioné
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Salut,

    Je ne voyais même pas cela comme des opérateurs booléens, mes notions en maths et mes raisonnements logiques sont encore faibles et effectivement si j'avais vu ça sous cet angle j'aurais tout de suite mieux compris.

    Merci des infos !

    Bonne journée

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Citation Envoyé par Yoshisane Voir le message
    Ma question est donc : à quoi servent vraiment ces parenthèse et pourquoi l'auteur les à mis si elles ne changent pas le fonctionnement du code ?
    Techniquement, elles ne servent à rien car "and" est plus prioritaire que "or".
    Mais elles peuvent être utiles pour montrer qu'on a bien traduit "est bissextile" i.e. rendre le programme plus lisible par l'humain.

    Citation Envoyé par Yoshisane Voir le message
    L'auteur explique ceci : "Le prédicat correspondant est un peu délicat, il fait appel aux priorités des parenthèses." sans en dire plus, que veut-il dire par "priorités des parenthèses." ?
    Cette phrase serait plus compréhensible si la condition était traduite par not(annee % 400 and (annee % 4 or not annee % 100)). C'est la même chose que annee % 400 == 0 or annee % 4 == 0 and annee % 100 != 0. Mais certainement moins lisible (pour l'homme) lorsqu'on parle d'années bissextiles.

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

  5. #5
    Candidat au Club Avatar de Yoshisane
    Homme Profil pro
    Simple passioné
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Simple passioné
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    D'accord, c'est clair maintenant !

    Merci pour vos réponses rapides, c'est cool quand on est noyé dans pleins de nouvelles infos.

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2002
    Messages
    2 789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 789
    Points : 18 933
    Points
    18 933
    Par défaut
    Pour info le meilleur cours pour apprendre Python c'est celui ci : Apprendre à programmer avec Python 3 par Gérard Swinnen (extrait de la page Cours et tutoriels Python ), c'est en fait un véritable livre complet sur Python de 430 pages, et c'est un des meilleur, si ce n'est le meilleur qui existe...

    Tu peu aussi t'aider de la FAQ Python
    Ne prenez pas la vie au sérieux, vous n'en sortirez pas vivant ...

  7. #7
    Candidat au Club Avatar de Yoshisane
    Homme Profil pro
    Simple passioné
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Simple passioné
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    D'acc, je vais aller jeter un coup d’œil merci beaucoup !

    edit : En quoi est-il meilleur que les autres ? (Mieux expliqué ?, plus complet ? ..)

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

Discussions similaires

  1. Petite aide pour débutant
    Par akrogames dans le forum Zend Framework
    Réponses: 4
    Dernier message: 23/01/2008, 15h49
  2. De l'aide pour un débutant
    Par Abelkims dans le forum Débuter
    Réponses: 21
    Dernier message: 02/09/2005, 11h11
  3. De l'aide pour un débutant
    Par Abelkims dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/08/2005, 14h33
  4. Petite aide pour gros problème : libstdc++
    Par Info-Rital dans le forum Linux
    Réponses: 5
    Dernier message: 30/08/2004, 19h17
  5. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

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