Python jeu de culture générale
Je veux faire un jeu-questionnaire à l'aide de 2 tableaux ou de listes. Comment associer les éléments d'une liste à l'autre? J'ai ce code:
import random
mylist = ['A','B','C']
answer = ['1','2','3']
value = random.choice(mylist)
print (value)
input()
mylist.remove(value)
value = random.choice(mylist)
mylist.remove(value)
print (value)
input()
value = random.choice(mylist)
print(value)
mylist.remove(value)
Je sais comment choisir au hasard une variable de mylist
(les questions), mais comment puis-je représenter Un 1 et ont la saisie de l'utilisateur 1 pour qu'il soit correct?
Comment puis-je lier une liste à l'autre et faire un jeu de culture générale? Il a besoin de poser la question et puis les entrées de l'utilisateur réponse. Si elle est correcte, ils obtiennent un point et après 4 questions qu'il leur demande s'ils veulent jouer à nouveau, puis 4 nouvelles questions pour les 3 tours et il a un score gardé de la façon dont beaucoup ils ont eu droit.
- Ok, donc j'ai essayé et il m'a donné une erreur de syntaxe sur demandez quoi faire et comment je peux résoudre ce problème?
- Ok une dernière chose, comment avec cette mise en place serait vous avez la possibilité de jouer à nouveau? donc disons que j'ai ajouter 10 ou 15 questions et dans le premier jeu, vous avez 4 questions à poser, puis il va vous demander si vous voulez jouer, puis à nouveau 4 nouveau des questions à poser! aussi comment faire pour ceux qui ne le répètera jamais comme supprimer le pouvez-vous utiliser les questions.supprimer(Question)
Vous devez vous connecter pour publier un commentaire.
Ce programme est à droite sur la ligne de démarcation entre le fait d'être acceptable qu'à la liste/dict de listes et de bien-être écrit avec des classes. Si il y a une possibilité qu'il grandira, vous souhaiterez probablement de les réorganiser comme un programme orienté objet (POO), comme ceci:
Qui met la logique de la façon dont la structure de données est utilisée de plus près à l'endroit où la structure de données est définie. Aussi (répondre à votre question de départ), il est facile d'associer les questions aux réponses parce qu'ils ne sont plus dans des listes distinctes.
Il n'y a aucune incitation à ne pas le faire parce que Python ne nécessite pas beaucoup de travail supplémentaire à faire une classe. C'est environ la même longueur que le dict de listes de solution (sur laquelle il est fondé), et est sans doute plus facile à lire, plus proche de vous a à l'esprit avant de s'assit afin de commencer la programmation. J'utilise souvent des classes, même dans les quatre programmes de ligne: la programmation orientée objet ne doit pas être une grosse affaire.
Edit: Vous pouvez manipuler la liste d'instances de la classe de la même manière que vous le feriez manipuler une liste de nombres entiers ou des chaînes de caractères. Par exemple,
supprime le premier élément de la liste,
ajoute une nouvelle question à la fin de la liste,
pop
vous permet d'utiliser la liste comme une pile, etc. (Voir un tutoriel Python pour plus d'.) Si vous souhaitez supprimer des questions spécifiques à l'aide de la liste deremove
méthode, plutôt que de l'enlever par index (ce quidel
n'), alors vous aurez besoin de dire à Python ce que cela signifie pour les deux questions pour être le même.Essayez d'ajouter ces deux méthodes à la classe:
La première définit deux
Question
cas être égaux si leur question chaînes sont les mêmes. Vous pouvez étendre la définition par aussi exigeant que leurs réponses soient les mêmes, mais vous obtenez l'idée. Il vous permet de le faire:pour supprimer les jambes-sur-un-cheval en question.
La deuxième assez imprime la question des objets sur le Python en ligne de commande, de sorte que vous pouvez voir ce que vous faites quand vous faites des essais avec ces commandes. La meilleure façon d'apprendre est par essais et erreurs, et de ce fait l'essai-et-erreur plus productif.
random.shuffle
rend aléatoire l'ordre, de sorte que lorsque vous allez par le biais de la liste aléatoire une fois, il n'y aura pas de répétitions. En général, il est beaucoup plus facile de gérer la non-répète problème avec un mélangées liste que par l'ajout et la suppression d'éléments de la liste.for question in questions[0:4]
), demandez si l'utilisateur veut continuer à jouer, et si oui, poser les 4 questions (avecfor question in questions[4:8]
).Utiliser un tableau de tableaux.
Un tableau par question
Dans chaque tableau, le premier élément est la question, la deuxième, l'indice de la réponse correcte, et le reste sont les options de réponse
Je n'ai pas randomisée questions comme vous pouvez déjà le faire
Sinon, en ligne avec les suggestions ci-dessous dans les commentaires (merci Don) l'utilisation d'un dict.
espère que cette aide