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
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.
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.
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"
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)
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.
× 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.
Blond, bouclé, toujours le sourire aux lèvres...
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)
Découverte Python Doc Tkinter Les chaînes de caractères