Faire un QCM à partir d'un fichier texte
Fermé
Texos
Messages postés
5
Date d'inscription
mercredi 23 octobre 2019
Statut
Membre
Dernière intervention
25 octobre 2019
-
Modifié le 23 oct. 2019 à 20:12
Texos Messages postés 5 Date d'inscription mercredi 23 octobre 2019 Statut Membre Dernière intervention 25 octobre 2019 - 25 oct. 2019 à 16:47
Texos Messages postés 5 Date d'inscription mercredi 23 octobre 2019 Statut Membre Dernière intervention 25 octobre 2019 - 25 oct. 2019 à 16:47
A voir également:
- Générateur de qcm à partir d'un texte
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Generateur mot de passe - Télécharger - Sécurité
- Excel cellule couleur si condition texte - Guide
- Transcription audio en texte word gratuit - Guide
- Comment faire une recherche à partir d'une photo - Guide
5 réponses
Chris 94
Messages postés
50978
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
17 février 2023
7 334
23 oct. 2019 à 19:42
23 oct. 2019 à 19:42
Bonjour,
Merci de saisir ton code (un copié-collé fait l'affaire) dans la fenêtre d'édition. Pense à lui attribuer la couleur syntaxique et la forme correcte avec le bouton
Merci de saisir ton code (un copié-collé fait l'affaire) dans la fenêtre d'édition. Pense à lui attribuer la couleur syntaxique et la forme correcte avec le bouton
<>
▼.
Yô,
Il faut séparer ton problème en plusieurs parties. Tu utilises des données contenues dans un fichier texte, tu parses ton fichier, tu stockes les données et après tu les utilises comme bon te semble. :)
Tu prends donc tes 20 questions que tu mets dans une liste sur laquelle tu opéreras.
Lire la ligne > Stocker la ligne > Passer à la ligne suivante
Une fois la liste conçue, ce sont des opérations de chaine, n'oublie pas qu'en python, une chaine est une séquence utilisable comme un tableau, tu peux donc accéder à un caractère via son indice de position.
Voici un bout de code qui devrait t'aider, tu n'as plus qu'à l'adapter à ton problème :
Ce code ne traite qu'une seule question, il faut maintenant ajouter les points et l'extraction des données.
Il faut séparer ton problème en plusieurs parties. Tu utilises des données contenues dans un fichier texte, tu parses ton fichier, tu stockes les données et après tu les utilises comme bon te semble. :)
Tu prends donc tes 20 questions que tu mets dans une liste sur laquelle tu opéreras.
Lire la ligne > Stocker la ligne > Passer à la ligne suivante
Une fois la liste conçue, ce sont des opérations de chaine, n'oublie pas qu'en python, une chaine est une séquence utilisable comme un tableau, tu peux donc accéder à un caractère via son indice de position.
Voici un bout de code qui devrait t'aider, tu n'as plus qu'à l'adapter à ton problème :
from random import * """ C'est le genre de fonction que tu peux utiliser. Il faut maintenant l'adapter à ton problème. """ def questionnaire(): str = "Quelle est la réponse ? A-42 B-Nem C-Plancton ~B;" str2 = "Quelles sont les couleurs d'un raton-laveur ? A-Rouge et noir B-Blanc et rouge C-Blanc et noir ~C;" # print(str2[len(str2)-2:-1]) Tu veux prendre la réponse qui se trouve à chaque fois avant le ; et après le ~ # print(str.split('~')) Sinon tu peux aussi split la phrase en 2 parties # Tu regroupes tes questions dans une liste dans laquelle tu en sélectionneras une. Une fois # la question sélectionnée, tu pourras la delete de la liste pour éviter qu'elle soit reposée. # Pour prendre 10 questions, tu n'as plus qu'à faire une boucle avec une range de 0 à 9. sentences = [str, str2] rand = randrange(len(sentences)) answer = input(sentences[rand][:-3] + '\n') if answer == sentences[rand][len(sentences[rand]) - 2:-1]: print("Vous avez gagné !") else: print('C\'est faux !') questionnaire()
Ce code ne traite qu'une seule question, il faut maintenant ajouter les points et l'extraction des données.
Texos
Messages postés
5
Date d'inscription
mercredi 23 octobre 2019
Statut
Membre
Dernière intervention
25 octobre 2019
24 oct. 2019 à 17:03
24 oct. 2019 à 17:03
Merci beaucoup pour ton aide. Je vais essayer de faire de cette manière.
Bonsoir,
Quelqu'un saurait-il si je peux diviser toutes les questions en même temps, sans avoir besoin de les faire une par une ?
python propose des structures pour faire cela, list, dict, tuple, ...
Et comment choisir 10 questions aléatoirement?
Cela peut se faire avec la fonction sample du module random.
Quelqu'un saurait-il si je peux diviser toutes les questions en même temps, sans avoir besoin de les faire une par une ?
python propose des structures pour faire cela, list, dict, tuple, ...
Et comment choisir 10 questions aléatoirement?
Cela peut se faire avec la fonction sample du module random.
Texos
Messages postés
5
Date d'inscription
mercredi 23 octobre 2019
Statut
Membre
Dernière intervention
25 octobre 2019
24 oct. 2019 à 23:05
24 oct. 2019 à 23:05
Merci, je vais essayer ces fonctions.
Bonjour.
Si tu veux obtenir les questions de ton fichier sous forme de liste, alors utilise readlines.
Puis pour obtenir 10 questions.
Voilà, c'est pas plus compliqué.
Tu devrais quand même coder dans un fichier, utiliser l'interpréteur python, c'est bien pour tester de tout petits bouts de code, pas pour faire autant de lignes.
Si tu veux obtenir les questions de ton fichier sous forme de liste, alors utilise readlines.
liste_questions = fichier.readlines()
Puis pour obtenir 10 questions.
questions = random.sample(liste_questions, 10)
Voilà, c'est pas plus compliqué.
Tu devrais quand même coder dans un fichier, utiliser l'interpréteur python, c'est bien pour tester de tout petits bouts de code, pas pour faire autant de lignes.
Texos
Messages postés
5
Date d'inscription
mercredi 23 octobre 2019
Statut
Membre
Dernière intervention
25 octobre 2019
25 oct. 2019 à 16:47
25 oct. 2019 à 16:47
Merci pour ton aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Texos
Messages postés
5
Date d'inscription
mercredi 23 octobre 2019
Statut
Membre
Dernière intervention
25 octobre 2019
24 oct. 2019 à 20:19
24 oct. 2019 à 20:19
Bonsoir,
J'ai avancé mon code. Voilà où j'en suis :
>>> fichier = open('qcm_noms.txt', 'r')
>>> question = fichier.readline()
>>> print(question)
Quelle est la fonction utilisée pour afficher du texte? A-print B-input C-randint D-def ~A;
>>> question2 = fichier.readline()
>>> print(question2)
En quelle année a existé la première version de Python? A-1998 B-1950 C-1991 D-2000 ~C;
>>> question3 = fichier.readline()
>>> print(question3)
A quoi sert la fonction len()? A-afficher du texte B-rentrer un nombre C-afficher les nombres dans l'ordre croissant D-afficher le nombre d'items d'une liste ~D;
>>> question4 = fichier.readline()
>>> print(question4)
Lequel de ces langages n'est pas un langage de programmation? A-HTML B-Scratch C-Ruby D-Tornade ~D;
>>> question.split("~", 1)
['Quelle est la fonction utilisée pour afficher du texte? A-print B-input C-randint D-def ', 'A;\n']
>>> quest = question.split("~", 1)[0]
>>> print(quest)
Quelle est la fonction utilisée pour afficher du texte? A-print B-input C-randint D-def
>>> answer = question.split("~", 1)[1]
>>> print(answer)
A;
>>> question2.split("~", 1)
['En quelle année a existé la première version de Python? A-1998 B-1950 C-1991 D-2000 ', 'C;\n']
>>> quest2 = question2.split("~", 1)[0]
>>> print(quest2)
En quelle année a existé la première version de Python? A-1998 B-1950 C-1991 D-2000
>>> answer2 = question2.split("~", 1)[1]
>>> print(answer2)
C;
>>> question3.split("~", 1)
['Les nombres binaires sont? A-pairs B-0 et 1 C-impairs D-0 Ã\xa0 100 ', 'B;\n']
>>> quest3 = question3.split("~", 1)[0]
>>> print(quest3)
Les nombres binaires sont? A-pairs B-0 et 1 C-impairs D-0 Ã* 100
>>> answer3 = question3.split("~", 1)[1]
>>> print(answer3)
B;
>>> import random
>>> random.choice(['quest', 'quest2', 'quest3'])
'quest'
>>>
Quelqu'un saurait-il si je peux diviser toutes les questions en même temps, sans avoir besoin de les faire une par une ?
Et comment choisir 10 questions aléatoirement?
Merci beaucoup!
J'ai avancé mon code. Voilà où j'en suis :
>>> fichier = open('qcm_noms.txt', 'r')
>>> question = fichier.readline()
>>> print(question)
Quelle est la fonction utilisée pour afficher du texte? A-print B-input C-randint D-def ~A;
>>> question2 = fichier.readline()
>>> print(question2)
En quelle année a existé la première version de Python? A-1998 B-1950 C-1991 D-2000 ~C;
>>> question3 = fichier.readline()
>>> print(question3)
A quoi sert la fonction len()? A-afficher du texte B-rentrer un nombre C-afficher les nombres dans l'ordre croissant D-afficher le nombre d'items d'une liste ~D;
>>> question4 = fichier.readline()
>>> print(question4)
Lequel de ces langages n'est pas un langage de programmation? A-HTML B-Scratch C-Ruby D-Tornade ~D;
>>> question.split("~", 1)
['Quelle est la fonction utilisée pour afficher du texte? A-print B-input C-randint D-def ', 'A;\n']
>>> quest = question.split("~", 1)[0]
>>> print(quest)
Quelle est la fonction utilisée pour afficher du texte? A-print B-input C-randint D-def
>>> answer = question.split("~", 1)[1]
>>> print(answer)
A;
>>> question2.split("~", 1)
['En quelle année a existé la première version de Python? A-1998 B-1950 C-1991 D-2000 ', 'C;\n']
>>> quest2 = question2.split("~", 1)[0]
>>> print(quest2)
En quelle année a existé la première version de Python? A-1998 B-1950 C-1991 D-2000
>>> answer2 = question2.split("~", 1)[1]
>>> print(answer2)
C;
>>> question3.split("~", 1)
['Les nombres binaires sont? A-pairs B-0 et 1 C-impairs D-0 Ã\xa0 100 ', 'B;\n']
>>> quest3 = question3.split("~", 1)[0]
>>> print(quest3)
Les nombres binaires sont? A-pairs B-0 et 1 C-impairs D-0 Ã* 100
>>> answer3 = question3.split("~", 1)[1]
>>> print(answer3)
B;
>>> import random
>>> random.choice(['quest', 'quest2', 'quest3'])
'quest'
>>>
Quelqu'un saurait-il si je peux diviser toutes les questions en même temps, sans avoir besoin de les faire une par une ?
Et comment choisir 10 questions aléatoirement?
Merci beaucoup!