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 :

Apprendre à programmer avec Python exercices 5.14


Sujet :

Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Apprendre à programmer avec Python exercices 5.14
    Bonjour,

    Pour le livre Apprendre à programmer avec Python 3 https://python.developpez.com/cours/apprendre-python3/ , je voudrais savoir si c'est logique que la ligne :

    prend 1 par défaut ?
    L'exercice :
    5.14. Écrivez un programme qui analyse un par un tous les éléments d'une liste de nombres (par
    exemple celle de l'exercice précédent) pour générer deux nouvelles listes. L'une contiendra
    seulement les nombres pairs de la liste initiale, et l'autre les nombres impairs. Par exemple,
    si la liste initiale est celle de l'exercice précédent, le programme devra construire une liste
    pairs qui contiendra [32, 12, 8, 2], et une liste impairs qui contiendra [5, 3, 75,
    15]. Astuce : pensez à utiliser l'opérateur modulo (%) déjà cité précédemment.
    mon code:
    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
    liste = [32, 5, 12, 8, 3, 75, 2, 15]
    pair = []
    impair = []
    a = 0
    b = len(liste)
    while a < b:
    	d = liste[a]
    	if d % 2:
    		impair.append(d)
    	else:
    		pair.append(d)
    	a = a + 1
    print "De la liste donnée 32 5 12 8 3 75 2 15"
    print "les chiffres pairs sont", pair
    print "les chiffres impairs sont", impair
    le résultat:
    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
    Exercice 5.14 :
    # Séparation des nombres pairs et impairs
    # Liste fournie au départ :
    tt = [32, 5, 12, 8, 3, 75, 2, 15]
    pairs = []
    impairs = []
    # Examen de tous les éléments :
    i = 0
    while i < len(tt):
        if tt[i] % 2 == 0:
             pairs.append(tt[i])
        else:
             impairs.append(tt[i])
        i = i + 1
    # Affichage :
    print "Nombres pairs :", pairs
    print "Nombres impairs :", impairs
    Et tant qu'à faire, vous en penser quoi, du code, et c'est pas grave si j'utilise if d % 2: au lieu de if tt[i] % 2 == 0: (pour le ==0 surtout) ?

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Pour le if, est considéré comme vrai tout entier non nul

    Les deux codes sont équivalents. Attention quand même car if d % 2: vérifie si d est impair, ce qui peut être contre-intuitif, à éviter donc.

    Ensuite, tu peux remplacer ta boucle while par un for, tu verras ça plus loin (chapitre 10) si tu suis l'ordre du tuto de Swinnen

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci oiffrig pour ta réponse, je trouve effectivement que c'est contre-intuitif comme tu dis, d'ailleurs j'avais d'abord mis la chaine des pairs en pensant que ce serait pris en compte directement. Le code fonctionnait, mais avec les résultats inversés, donc.

    Dans le chapitre 6.4, je trouve:
    En Python, tout comme en C, en Basic et en de nombreux autres
    langages de programmation, on considère que toute valeur numérique autre que zéro est « vraie ».
    Seule la valeur zéro est « fausse ». Exemple :
    a = input('Entrez une valeur quelconque')
    if a:
    print "vrai"
    else:
    print "faux"
    Le petit script ci-dessus n'affiche « faux » que si vous entrez la valeur 0. Pour toute autre valeur
    numérique, vous obtiendrez « vrai ».
    Si vous entrez une chaîne de caractères ou une liste, vous obtiendrez encore « vrai ». Seules les
    chaînes ou les listes vides seront considérées comme « fausses ».
    et comme
    >>> 35%2
    1
    >>> 34%2
    0
    ça n'est rien de dire que c'est contre-intuitif...
    donc ok pour if tt[i] % 2 == 0:

  4. #4
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    Petit détail, en général on nomme les variables d'indice d'une boucle 'i' et les longeurs de liste (resultat d'un len) 'n' ; et les éléments d'une liste 'x' ou 'e'.

    Rien n'oblige à suivre cette convention. C'est juste une convention tacite mais qui permet de relire plus facilement le code de qq'un d'autre ou son propre code.

    Enfin tu peut aussi trés bien écrire "d % 2 == 0" si tu veux éviter l'effet contre-intuitif mais garder "d" au lieu de "tt[i]" qui alourdi un peu le code.

    A part ça, le code est trés bien.

    PS : as-tu un lien de parenté avec JC.Bellamy ?
    http://jc.bellamy.free.fr/fr/jcb.html
    Avant de poster un message .
    Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Points : 79
    Points
    79
    Par défaut
    Pour éviter d'alourdir ton code, au lieu d'écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ch="abcdefgh"
    i=0
    a=len(ch)
     
    while i < a:
    tu peux écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ch="abcdefgh"
    i=0
     
    while i < len(ch)
    :

  6. #6
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut
    Citation Envoyé par scheme Voir le message
    Pour éviter d'alourdir ton code, au lieu d'écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ch="abcdefgh"
    i=0
    a=len(ch)
     
    while i < a:
    tu peux écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ch="abcdefgh"
    i=0
     
    while i < len(ch)
    :
    Pour éviter d'alourdir son code, il devrait faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for i in liste:
       ...
    Et pour bien te former, les cours et tutoriels pour apprendre Python : https://python.developpez.com/cours/

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Points : 79
    Points
    79
    Par défaut
    Ah, désolé je ne suis pas beaucoup plus avancé que lui dans les exercices, je ne suis pas encore arrivé au chapitre traitant de "for".

    Merci de ta précision en tout cas

  8. #8
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 808
    Points : 7 086
    Points
    7 086
    Par défaut
    A part ça, le code est trés bien.
    +1

    as-tu un lien de parenté avec JC.Bellamy ?
    Moi aussi je me suis posé la question
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/09/2011, 01h57
  2. Apprendre à programmer avec Python exercices 4.2
    Par bellamy dans le forum Général Python
    Réponses: 5
    Dernier message: 15/10/2009, 14h53

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