Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème

Sujet résolu
    30 mars 2020 à 1:05:12

    from random import randint
    fichier=open("qcm.txt","r")
    qcm=fichier.read()
    questions=qcm.split("\n")
    x=[]
    cond=True
    while len(x)<10:#pb ici?
        a=randint(0,len(questions))
        for i in x:
            if i==a:#ou là?
                cond=False
            print(i)
        if cond!=False:
            x.append(a)
    print(x)

    Bonjour,

    je souhaitais faire un programme qui choisit 10 questions parmi 30 autres au hasard. Mais il le programme ne s'arrête pas, il semble qu'il y ait un problème avec les boucles...

    Ce n'est que le début du programme puisque je me suis retrouvée bloquée ici!

    Si vous aviez une solution, ou une piste... Mon programme n'a pas l'air d'être mal écrit pourtant...

    ps: le fichier texte est rédigé comme ceci:

    Question 1 ;; réponse 1
    Question 2 ;; réponse 2
    ...
    Question n ;; réponse n

    Merci!

    • Partager sur Facebook
    • Partager sur Twitter
      30 mars 2020 à 2:19:45

      C'est l'algo que tu as codé, pas le code en lui-même qui pose problème.

      Si la ligne 11 s'exécute, tu te retrouve dans une boucle infinie.

      Au passage pense à donner des noms de variables plus explicites que "cond". Et x, en général on l'utilise pour un nombre, pas pour une liste.

      Et je pense que la variable cond ne sert à rien, tu peux directement faire ton append() après le premier if (en inversant la condition), ça simplifierait le code.

      • Partager sur Facebook
      • Partager sur Twitter

      Blond, bouclé, toujours le sourire aux lèvres...

        30 mars 2020 à 3:05:25

        Bonjour,

        Mauvais titre

        Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

        Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

        De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

        Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

        Pour modifier votre titre, éditez le premier message de votre sujet.

        (titre originel : problème)

        Liens conseillés

        • Partager sur Facebook
        • Partager sur Twitter
          30 mars 2020 à 10:17:17

          Bonjour,

          if cond!=False:

          Il est plus lisible et préférable d'écrire :

          if cond:





          -
          Edité par __fabien 30 mars 2020 à 10:17:48

          • Partager sur Facebook
          • Partager sur Twitter
          • J'aime les bananes, le python, le gnu, le pingouin.
            • Vive le libre !
            30 mars 2020 à 17:15:02

            On peut utiliser la méthode sample qui fait tout le travail sans se compliquer la vie, sur la problématique "récupérer 10 questions au hasard parmi les 30 questions existantes"
            • Partager sur Facebook
            • Partager sur Twitter

            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)

              30 mars 2020 à 18:26:07

              fred1599 a écrit:

              On peut utiliser la méthode sample qui fait tout le travail sans se compliquer la vie, sur la problématique "récupérer 10 questions au hasard parmi les 30 questions existantes"

              C'est certainement la meilleure façon de faire en effet. 

              Coder ça à la main est casse-gueule et peut-être inefficace, c'est un bon exercice mais vu le code que Sowl a commencé, il n'est pas vraiment bien parti.

              • Partager sur Facebook
              • Partager sur Twitter

              problème

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown