Si vous voulez apprendre Python, il est bon de commencer par quelques jeux simples basés sur du texte. Cet article va vous montrer comment créer un jeu de quiz.
Pas
Étape 1. Installez Python si vous ne l'avez pas déjà fait
Il existe deux versions principales de Python: Python 2 et Python 3. Ils ne sont pas interchangeables et la prise en charge de Python 2 prendra fin en 2020, cet article suppose donc que vous installez Python 3.
Étape 2. Ouvrez un nouveau fichier dans un éditeur de texte ou votre IDE Python
Donnez-lui un nom descriptif qui se termine par.py.
Étape 3. Importez la bibliothèque aléatoire
Vous en aurez besoin pour ranger au hasard les réponses possibles.
Étape 4. Définissez une classe "QA"
Un « QA » consistera en une question et une réponse correcte, ainsi qu'une liste d'autres réponses possibles. La fonction _init_() sera appelée chaque fois que vous créerez un nouvel objet QA avec la fonction QA(), ses arguments étant transmis à l'attribut correspondant. Taper:
classe QA: def _init_(self, question, correctAnswer, otherAnswers): self.question = question self.corrAnsw = correctAnswer self.otherAnsw = otherAnswers
Étape 5. Créez une liste d'AQ
Pensez à certaines questions avec une bonne et des mauvaises réponses. Créez des objets QA à partir de chacun et placez-les dans une liste. Comme la liste sera assez longue, vous pouvez la diviser sur plusieurs lignes pour une meilleure lisibilité. Tout cela est fait avec le code suivant (votre texte pourrait être différent):
qaList = [QA("Où est Minsk ?", "en Biélorussie", ["en Russie", "une telle ville n'existe pas"]), QA("Quelle est la capitale de l'Australie ?", "Canberra", ["Sydney", "New York", "L'Australie n'existe pas"]), QA("Lequel des éléments suivants n'est pas sur Terre ?", "Sea of Tranquility", ["Mediterranean Sea", "Baltic Sea ", "Mer du Nord"]), QA("Lequel des pays suivants n'est pas un continent ?", "Arctique", ["Antarctique", "Amérique"]), QA("Lequel des pays suivants n'est pas un pays africain ?", "Malaisie", ["Madagascar", "Djibouti", "Afrique du Sud", "Zimbabwe"])]
Étape 6. Ajoutez une variable qui compte le nombre de réponses correctes
Mettez-le à zéro au début. Ajoutez la ligne:
corrCount = 0
Étape 7. Mélangez la liste QA
Cela fera apparaître vos questions dans un ordre aléatoire. Cela se fait avec la fonction suivante:
aléatoire.shuffle(qaList)
Étape 8. Faites une boucle
Le programme doit parcourir chaque élément de la liste et en faire quelque chose. Créez une telle boucle avec cette expression:
pour qaItem dans qaList:
Étape 9. Sortez chaque question
Après l'expression de boucle, écrivez la ligne:
print(qaItem.question)
Étape 10. Sortez toutes les réponses possibles
Ils doivent apparaître dans un ordre aléatoire afin que la bonne réponse ne soit pas toujours à la même position. En outre, ils doivent être précédés d'un numéro afin que l'utilisateur n'ait pas à saisir à nouveau la réponse complète. Le code suivant fait ceci:
print("Les réponses possibles sont:") possible = qaItem.otherAnsw + [qaItem.corrAnsw] # les crochets transforment la bonne réponse en liste pour la concaténation avec une autre liste random.shuffle(possible) count = 0 # les index de liste commencent à 0 en python while count < len(possible): print(str(count+1) + ": " + possible[count]) count += 1
Étape 11. Prenez l'entrée de l'utilisateur
D'abord, dites à l'utilisateur qu'il doit entrer le numéro de son. Ensuite, vérifiez si ce que l'utilisateur a entré est vraiment un nombre qui correspond à une réponse. Si ce n'est pas le cas, répétez-le à l'utilisateur. Utilisez ce code (en dehors de la boucle while que vous avez créée pour la sortie):
print("Veuillez saisir le numéro de votre réponse:") userAnsw = input() sans userAnsw.isdigit(): print("Ce n'était pas un nombre. Veuillez saisir le numéro de votre réponse:") userAnsw = input() userAnsw = int(userAnsw) while not (userAnsw > 0 and userAnsw <= len(possible)): print("Ce numéro ne correspond à aucune réponse. Veuillez saisir le numéro de votre réponse:") userAnsw = input()
Étape 12. Vérifiez si la réponse de l'utilisateur était correcte
Pour ce faire, récupérez le texte de la réponse pour laquelle l'utilisateur a entré un nombre et comparez-le avec le texte de la bonne réponse. S'ils sont identiques, la réponse de l'utilisateur est correcte et la variable corrCount doit être augmentée de 1. Sinon, c'est faux et l'utilisateur doit être informé de la bonne réponse. Enfin, imprimez une ligne vide pour ajouter de l'espace à la question suivante. Saisissez le code suivant:
si possible[userAnsw-1] == qaItem.corrAnsw: print("Votre réponse était correcte.") corrCount += 1 else: print("Votre réponse était fausse.") print("La bonne réponse était: " + qaItem. corrAnsw) print("")
Étape 13. Sortez une conclusion
En fin de compte, l'utilisateur veut probablement savoir à combien de questions il a répondu. Alors dites-leur en ajoutant l'expression suivante en dehors de la boucle for:
print("Vous avez répondu " + str(corrCount) + " de " + str(len(qaList)) + " questions correctement.")
Étape 14. Vérifiez votre code
Portez une attention particulière à l'indentation. Votre code complet devrait ressembler à ceci maintenant:
importer la classe aléatoire QA: def _init_(self, question, correctAnswer, otherAnswers): self.question = question self.corrAnsw = correctAnswer self.otherAnsw = otherAnswers qaList = [QA("Où est Minsk?", "en Biélorussie", ["en Russie", "une telle ville n'existe pas"]), QA("Quelle est la capitale de l'Australie ?", "Canberra", ["Sydney", "New York", "L'Australie n'existe pas"]), QA("Lequel des éléments suivants n'est pas sur Terre ?", "Mer de la tranquillité", ["Mer Méditerranée", "Mer Baltique", "Mer du Nord"]), QA("Lequel des éléments suivants n'est pas un continent ?", "Arctica", ["Antarctica", "America"]), QA("Lequel des pays suivants n'est pas un pays africain?", "Malaysia", ["Madagascar", "Djibouti", "South Africa", "Zimbabwe"])] corrCount = 0 random.shuffle(qaList) pour qaItem dans qaList: print(qaItem.question) print("Les réponses possibles sont:") possible = qaItem.otherAnsw + [qaItem.corrAnsw] # les crochets transforment la bonne réponse en liste pour la concaténation avec une autre liste random.shuffle(possible) count = 0 # les index de liste commencent à 0 i n python while count < len(possible): print(str(count+1) + ": " + possible[count]) count += 1 print("Veuillez saisir le numéro de votre réponse:") userAnsw = input() sans userAnsw.isdigit(): print("Ce n'était pas un nombre. Veuillez saisir le numéro de votre réponse:") userAnsw = input() userAnsw = int(userAnsw) while not (userAnsw > 0 and userAnsw <= len(possible)): print("Ce numéro ne correspond à aucune réponse. Veuillez entrer le numéro de votre réponse:") userAnsw = input() si possible[userAnsw-1] == qaItem.corrAnsw: print("Votre réponse était correcte.") corrCount += 1 else: print("Votre réponse était faux.") print("La bonne réponse était: " + qaItem.corrAnsw) print("") print("Vous avez répondu " + str(corrCount) + " de " + str(len(qaList)) + " questions correctement. ")
Étape 15. Exécutez le code
Si vous utilisez un IDE, cliquez sur le symbole ou l'élément de menu « Exécuter ». Si vous utilisez un éditeur de texte, enregistrez votre programme, fermez l'éditeur et ouvrez votre programme avec Python.
Des astuces
- Attention à l'indentation correcte. Le code à l'intérieur d'une définition de fonction ou de classe est en retrait, tout comme le code à l'intérieur d'une boucle. Un programme Python avec une indentation incorrecte ne fonctionnera pas.
- Appuyez sur Ctrl+C si vous souhaitez interrompre le jeu et ne pas le terminer.
- Si vous remplacez chaque appel de input() par un appel de raw_input(), ce programme fonctionnera en Python 2, mais cessera de fonctionner en Python 3.