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 :

Utilisation de deux conditions


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Juin 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2021
    Messages : 3
    Par défaut Utilisation de deux conditions
    Bonjour

    Je cherche à modifier le code suivant pour que si n est divisible par 3, on le divise par 3 sinon si n est divisible par 2, on le divise par 2 sinon on multiplie n par 5 + 1. Il doit me manquer deux lignes dans le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     seq = [n]                                          # La suite de Syracuse sera complétée...
        while seq[-1] != 1:                          # ...jusqu'à tomber sur 1
            if seq[-1] % 2 == 0:                   # u_n est pair
                seq.append(seq[-1] // 2)         # Division euclidienne par 2
            else:                                         # u_n est impair
                seq.append(seq[-1] * 5 + 1)
     
        return seq
    Il faut surement utiliser elif mais je n ai aucune idée de comment faire, merci d'avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 690
    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 690
    Par défaut
    Salut,

    Citation Envoyé par escargot08 Voir le message
    Il faut surement utiliser elif mais je n ai aucune idée de comment faire, merci d'avance.
    Si vous ne savez pas comment faire, commencer par réviser! dans tous les tutos vous avez un chapitre sur les conditions qui montrent comment utiliser if...elif...else.

    Puis vous essayez un truc et si çà ne marche pas vous essayez de comprendre pourquoi avant de demander de l'aide (et vous postez le code que vous avez essayé).

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Juin 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2021
    Messages : 3
    Par défaut
    J'ai commencé le python aujourd'hui
    J'ai tenté cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    seq = [n]                                 # La suite de Syracuse sera complétée...
    while seq[-1] != 1:                    # ...jusqu'à tomber sur 1
    if seq[-1] % 3 == 0:                      
    seq.append(seq[-1] // 3)
    elif seq[-1] % 2 == 0:                      # u_n est pair
    seq.append(seq[-1] // 2)                # Division euclidienne par 2
    else:                                                   # u_n est impair
    seq.append(seq[-1] * 5 + 1)
     
    return seq
    Ça me semblait logique, je ne vois pas mon erreur ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 690
    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 690
    Par défaut
    Citation Envoyé par escargot08 Voir le message
    Ça me semblait logique, je ne vois pas mon erreur ?
    On ne peut pas lire votre code si vous n'utilisez pas la balise CODE (# dans l'éditeur).
    Et on ne pourra l'exécuter que si vous fournissez quelque chose de plus complet.

    Après l'erreur çà se documente: je devrais avoir çà, à la place, j'obtiens çà. Et cet effort de "documenter" le problème est le premier pas vers sa résolution.

    Citation Envoyé par escargot08 Voir le message
    J ai commencé le python aujourd'hui
    Oui et alors? Tant que vous n'aurez pas passé quelque jours plongé dans un tuto. et à essayer de faire les exercices corrigés, vous allez patauger... Et on ne pourra pas vous aider à prendre le temps d'apprendre.

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

  5. #5
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Juin 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2021
    Messages : 3
    Par défaut
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    def suite_syracuse(n):
        """
        Retourne la suite de Syracuse pour l'entier n.
     
        >>> suite_syracuse(15)
        [15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]
        """
     
        seq = [n]                     # La suite de Syracuse sera complétée...
        while seq[-1] != 1:           # ...jusqu'à tomber sur 1
            if seq[-1] % 3 == 0:      
                seq.append(seq[-1] // 3)  # Division euclidienne par 3
      elif seq[-1] % 2 == 0:      # u_n est pair
                seq.append(seq[-1] // 2)
            else:                     # u_n est impair
                seq.append(seq[-1] * 5 + 1)
     
        return seq
     
     
    def temps_syracuse(n, altitude=False):
        """
        Calcule le temps de vol (éventuellement en altitude) de la suite
        de Syracuse pour l'entier n.
     
        >>> temps_syracuse(15)
        17
        >>> temps_syracuse(15, altitude=True)
        10
        """
     
        seq = suite_syracuse(n)
        if not altitude:            # Temps de vol total
            return len(seq) - 1
        else:                       # Temps de vol en altitude
            # Construction de la séquence en altitude
            alt = []
            for i in seq:
                if i >= n:
                    alt.append(i)
                else:
                    break
            return len(alt) - 1
     
    if __name__ == '__main__':
     
        n = 15
        print("Suite de Syracuse pour n =", n)
        print(suite_syracuse(n))
        print("Temps de vol total:      ", temps_syracuse(n))
        print("Temps de vol en altitude:", temps_syracuse(n, altitude=True))
    Voilà le code en entier et j'obtiens rien vu qu'il y a une erreur quelque part. Je me demande s'il comprend quand un nombre est divisible par 3.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 690
    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 690
    Par défaut
    Salut,

    Citation Envoyé par escargot08 Voir le message
    j'obtiens rien vu qu'il y a une erreur quelque part.
    Le message d'erreur est important puisqu'il donne l'instruction/ligne en défaut et un code qui va vous permettre de chercher un peu sur Internet le pourquoi du comment si vous n'avez jamais vu ce message là.

    Citation Envoyé par escargot08 Voir le message
    Je me demande s'il comprend quand un nombre est divisible par 3.
    Vous avez l'instruction "print" qui vous permet d'afficher les objets et de pouvoir visualiser la branche suivie dans vos conditions.
    Vous avez aussi l'interpréteur Python où tester directement ce que Python calcule un modulo 3.

    L'intérêt de ces exercices, c'est juste d'arriver à construire une stratégie pour comprendre et corriger les erreurs de logique ou de syntaxe qu'on fait. Dit autrement, tout ce que vous allez découvrir dans la mise au point du code.

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

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    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 814
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par escargot08 Voir le message
    Voilà le code en entier et j'obtiens rien vu qu'il y a une erreur quelque part
    Faux, tu obtiens un message d'erreur, message qui te dit qu'il y a un souci, quel est ce souci et sur quelle ligne il se trouve. Et ça, ce n'est pas rien.

    Citation Envoyé par escargot08 Voir le message
    Je me demande s'il comprend quand un nombre est divisible par 3.
    Si tu as bien écrit l'instruction qu'il faut alors il le comprendra. C'est toi qui dirige ton code, pas ton code qui te dirige. Toutefois pour l'instant on n'en est pas encore là, on en est à cette erreur qui parle de défaut d'indentation. Ce n'est même pas une erreur de logique (écrire par exemple i/3 au lieu de i//3), c'est une erreur de syntaxe. Ton code n'est pas écrit selon les normes Python et il ne s'exécute même pas.

    Citation Envoyé par escargot08 Voir le message
    J'ai commencé le python aujourd'hui
    Alors peut-être commencer plus modestement. Un jeu "plus petit/plus grand" peut-être... mais commencer aussi par ouvrir un tuto.
    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]

Discussions similaires

  1. [VBS] Utilisation de la condition IF
    Par Edoxituz dans le forum VBScript
    Réponses: 2
    Dernier message: 22/02/2006, 17h04
  2. [FLASH MX2004] Deux conditions dans une boucle
    Par pierrot10 dans le forum Flash
    Réponses: 1
    Dernier message: 06/11/2005, 16h31
  3. Peut on faire un selon à deux conditions ?
    Par Celia1303 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 18/10/2005, 16h16
  4. Instructions select case à deux conditions
    Par Celia1303 dans le forum Access
    Réponses: 15
    Dernier message: 14/10/2005, 16h22
  5. [CSS] Utilisation de deux div avec float
    Par Ditch dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 06/10/2005, 15h48

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