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 :

Problème boucle while [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2020
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Problème boucle while
    Salut à tous!
    je suis débutant et aujourd'hui je suis bloqué sur une boucle while... j'espère que quelqu'un parmi vous pourra m'aider.

    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
    def cerchio(r):
        ac=pow(r, 2) * 3.14
        return 'l\'area del cerchio è di: {}'.format(ac)
     
    continuare_calcolo = True
     
    k=1
    n=1
    a=1
     
    while continuare_calcolo:
        try:
            r=float(input("Scrivi la lunghezza del raggio: "))
            print(cerchio(r)) 
        except ValueError:
            print("Non puoi immettere una lettera")
            continue
     
        while k==a:                                                       
                a=input("vuoi fare un nuovo calcolo? s(si) oppure n(no): ")
                if a=="s":
                    continue
                elif a!="s" and a!=n:
                    print("La risposta non è corretta")
                    continue
                elif a=="n":
                       continuare_calcolo = False
    1-Je voudrais savoir pourquoi dans la deuxième boucle while, si je tape "s", ça renvoie à la première boucle (je veux ça) mais quand la première boucle est terminée, elle n'entame pas la deuxième mais elle recommence de nouveau la première.

    2-Dans la deuxième boucle, comment dois-je indenter le deuxième "continue" pour pouvoir recommencer la deuxième boucle?
    Je vous remercie et bonne soirée

  2. #2
    Membre averti
    Homme Profil pro
    occupé
    Inscrit en
    juin 2018
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : occupé

    Informations forums :
    Inscription : juin 2018
    Messages : 231
    Points : 332
    Points
    332
    Par défaut
    Bonjour,
    Utilise les balises codes pour présenter ton code ( clic symbôle # ). Sans cela, on ne peut pas voir ton indentation.
    ...

    Je vois une erreur de syntaxe dans tes conditions :
    elif a!="s" and a!=n:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elif a!="s" and a!="n":

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Développeur python
    Inscrit en
    juillet 2006
    Messages
    3 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur python
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2006
    Messages : 3 072
    Points : 5 784
    Points
    5 784
    Par défaut
    Bonjour,

    Il faut revoir les bases avec un tutoriel et l'algorithme.

    Éviter aussi d'écraser par déclarations multiples les variables qui puis est avec des types différents (source de conflit) comme par exemple la variable a.
    Quelque soit la valeur que prendra a, elle sera toujours une valeur différente de k. k étant un entier et a étant un/des caractère(s).
    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)

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    17 309
    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 : 17 309
    Points : 29 871
    Points
    29 871
    Par défaut
    Salut,

    Citation Envoyé par Andrea_Pesaro Voir le message
    1-Je voudrais savoir pourquoi dans la deuxieme boucle while, si je tape "s", ça renvoie à la premiere boucle(je veux ça) mais quand la premiere boucle est terminée , elle n entame pas la deuxieme mais elle recommence de neuveau la premiere.
    Il suffit de relire votre code "tant que k == a" est faux lorsque a devient "s" alors que k est toujours 1.... donc on sort. Et comme a n'est pas réinitialisé à 1, on ne passe plus jamais dans la 2ème boucle.

    Citation Envoyé par Andrea_Pesaro Voir le message
    2-Dans la deuxieme boucle , comment dois je identer le deuxieme "continue" pour pouvoir recommencer la deuxieme boucle?
    Que fait la 2ème boucle? Elle force l'utilisateur à taper "n" ou "s". Si l'utilisateur tape autre chose, on insiste en bouclant sinon, on n'a plus de bonne raison de boucler... Donc on peut sortir de la boucle: on sait que a est 's' ou 'n' et que continuare_calcolo = a == 's'.
    à la base çà se fait en 4 lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a = ''
    while a != 's' and a != 'n':
        a=input("vuoi fare un nuovo calcolo? s(si) oppure n(no): ")
    continuare_calcolo = a == 's'.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2020
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup @wiztricks!
    Maintenant ça fonctionne!

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    17 309
    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 : 17 309
    Points : 29 871
    Points
    29 871
    Par défaut
    Non c'è di che !

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

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

Discussions similaires

  1. Problème boucle while
    Par Peedro dans le forum Langage
    Réponses: 4
    Dernier message: 07/10/2008, 15h09
  2. Problème boucle while
    Par chuko dans le forum C
    Réponses: 7
    Dernier message: 04/07/2008, 17h12
  3. Problème boucle while
    Par fred33 dans le forum Langage
    Réponses: 2
    Dernier message: 23/05/2008, 20h16
  4. [MySQL] Problème boucle WHILE
    Par Adlack dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/02/2007, 20h30
  5. Problème boucle while et evenement
    Par tse_tilky_moje_imja dans le forum Général Python
    Réponses: 2
    Dernier message: 30/03/2006, 19h11

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