Boucle vérification d'une valeur dans une variable

Boucle vérification d'une valeur dans une variable - Python - Programmation

Marsh Posté le 05-04-2013 à 22:29:55    

Bonjour à tous,
 
Etant un véritable néophyte en matière de programmation sous Python, je me tourne vers vous afin de trouver de l'aide pour résoudre un problème qui me bloque dans l'avancée de mon programme.
 
Description brève de l'ensemble : Je souhaite réaliser un QCM, chaque question ayant un numéro, j'appelle un numéro au hasard (fonction random) puis affiche les questions correspondantes. Le problème était donc de trouver un moyen pour que le même numéro ne soit pas appelé deux fois dans la même partie.
J'ai donc créé une liste dévolue à la réception de ces valeurs (via la fonction append, qui ajoute après chaque question et avant le tirage de la question suivante, le numéro correspondant). J'obtiens donc une liste qui contient les valeurs "interdites".
 
Problème : Je ne parviens pas à créer une boucle fonctionnelle qui me permettrait de vérifier que le nouveau numéro tiré n'appartienne pas à la liste. Il me faut trouver un moyen de vérifier. Si le numéro appartient pas à la liste, alors il faudra revenir à la fonction random et en tirer un nouveau. Si en revanche il n'en fait pas encore partie, il faudra que le programme se poursuive.
 
C'est donc sur ce point que j'ai besoin d'aide. Si quelqu'un entrevoit une solution, il sera bien aimable de m'éclairer..
 
Merci de m'avoir lu  :)

Reply

Marsh Posté le 05-04-2013 à 22:29:55   

Reply

Marsh Posté le 05-04-2013 à 22:40:24    

Bonsoir ! Vous pouvez aussi travailler dans l'autre sens, avec une liste contenant les numéros de questions autorisés.
 
A chaque étape, vous tirez un nombre au sort entre 1 et N, N étant le nombre de questions restantes, la question à poser est la N-ième valeur de la liste, que vous enlevez ensuite, et vous recommencez, avec un nombre aléatoire entre 1 et N-1, jusqu'à avoir le bon nombre de questions à poser.
 
Bonne continuation !

Reply

Marsh Posté le 05-04-2013 à 23:29:08    

Merci pour la réponse ! Serait-ce que la boucle de vérification serait plus complexe ?

Reply

Marsh Posté le 06-04-2013 à 00:32:25    

LA bonne manière de faire :  

Code :
  1. random.sample(range(100), 10)


pour tirer 10 nombres sous doublon compris entre 0 et 99.
 
source : http://stackoverflow.com/questions [...] om-numbers


---------------
rule #1 : trust the python
Reply

Marsh Posté le 06-04-2013 à 00:33:20    

LA bonne manière de faire :  

Code :
  1. random.sample(range(100), 10)


pour tirer 10 nombres sans doublon compris entre 0 et 99.
 
source : http://stackoverflow.com/questions [...] om-numbers


---------------
rule #1 : trust the python
Reply

Marsh Posté le 06-04-2013 à 07:49:10    

Oui mais il faudrait que je tire les numéros un par un :/

Reply

Marsh Posté le 06-04-2013 à 08:26:17    

cette fonction te sort directement une liste avec 10 éléments aléatoires uniques, c'est bien ce que tu voulais :??:

Reply

Marsh Posté le 06-04-2013 à 08:43:09    

Ah oui maintenant que j'y réfléchis je comprends le mécanisme. Merci beaucoup, je vais essayer de mettre çe en place, je reviens vers vous en cas de difficultés

Reply

Marsh Posté le 08-04-2013 à 12:06:40    

suizokukan a écrit :

LA bonne manière de faire :

Code :
  1. random.sample(range(100), 10)


pour tirer 10 nombres sous doublon compris entre 0 et 99.

 

source : http://stackoverflow.com/questions [...] om-numbers


Alternativement, tu peux faire ça directement sur ta liste de question sans passer par des numéros, ça évite une indirection et d'avoir à garder ton upperbound synchronisé avec le nombre de questions.


Message édité par masklinn le 08-04-2013 à 12:06:47

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed