-1
votes

Un quiz simple en python

J'écris un code Python pour percer un utilisateur en anglais et frais, en fonction de l'option, il vous poserait des questions en anglais ou en français et accepterait des réponses, elle vérifierait ensuite les réponses entrées dans une liste et incrémenter le score, Cependant, après la première question, mon code s'arrête en cours d'exécution

J'ai essayé d'inclure une boucle et de faire une partie de la fonction en boucle. Pourtant, rien P>

#Python program to drill a student in french
import sys
option = 0
score=0
english_questions=['What is Thank you in French___?', 'What is you are welcome in French___?', 'What is no in French___?', 'What is Pardon in French___?', 'What is yes in French?___?']
french_questions =['What does Merci mean in English___? ', 'What does derien mean in English___?','What does No mean in English___?', 'What does pardon mean in English___?', 'What does oui mean in English___?' ]
french_answers =['merci', 'derien', 'no', 'pardon', 'oui']
english_answers=['thankyou', 'welcome', 'no', 'pardon', 'yes']
number_of_questions = 5
question_number = 0
print('Welcome to English-French Vocabulary Drill')
print('*********************************************')
print('To be drilled in English Press 1')
print('To be drilled in French Press 2')
print('*********************************************')

#a try except block to handle invalid option type
if option not in (1, 2):
     try:
         option=input('Please Enter option:')
     except:
         print('Invalid option, Please enter 1 or 2')

if option == 1:
   questions = english_questions
   answers = french_answers
elif option == 2:
    questions = french_questions
    answers = english_answers
#Function to check answer
def check_answer(user_answer, questions, answers):
    if user_answer in answers:
        print('')
        print('Correct')
        global score
        score +=1 
        global question_number
        question_number +=1
    else:
        print('')
        print('Incorrect, try again')
        global guesses 
        guesses +=1

global number_of_questions
while question_number < number_of_questions: 
    x = questions[question_number]
    user_answer = answers[question_number]
    print('')
    user_answer = input (x + ':')
    print (check_answer(user_answer, x, answers))
    print('')
    print('score : ' +str(score) )


6 commentaires

Veuillez formater votre code. Vous pouvez convertir une section entière en code en le joignant de backtsticks, c'est-à-dire: `` `` Le code `` `va produire le code


ferait ça maintenant


Vous réalisez le essayer / sauf est inutile car vous ne vérifiez rien. Vous prenez simplement une entrée afin que cela ne pose jamais une exception, à l'exception du clavierInterrupter ...


De plus, ce si option! = 1 ou 2 et tapez (option) == int: sera toujours vrai. Changer de: si option non in (1, 2) et type (option) == int:


Vous ne vérifiez aucune autre valeur. Par exemple. J'ai entré 4 en entrée et il est allé directement à `Question_Number


OP, la portée de votre question a changé chaque fois que vous l'avez modifiée. Au moment où quelqu'un écrit une réponse, la question a changé.


4 Réponses :


0
votes

ici: questions = questions [question_number] , vous attribuez à questions une valeur de la liste . Lorsque la boucle est exécutée une seconde fois, vous aurez une lettre, car vous demanderez au programme de trouver des questions [question_number] [question_number] . Peut-être devriez-vous essayer d'utiliser différents noms variables?


1 commentaires

Je ne comprends sincèrement



0
votes

En plus de la réponse de Rasgel, vous devez modifier toutes vos déclarations A = + B sur A + = B pour une incrémentation correcte.


1 commentaires

Mon compteur de score fonctionne maintenant et il se termine après 5 questions. mais cela continue de demander la première question de plus que



0
votes

J'ai un peu corrigé le code. Il y avait beaucoup d'erreurs.

  • Vous devez faire des variables globales qui sont utilisées partout dans le code comme le score et Devine
  • Vous devez stocker des questions [question_number] dans une nouvelle variable.
  • Vous devez ajouter en boucle pour vérifier les entrées incorrectes. xxx

5 commentaires

merci, j'ai compris la Déclaration globale, mon seul problème maintenant, c'est qu'il continue à répéter les mêmes questions encore et encore


Avez-vous copié mon code? Il ne pose pas la même question dans la mienne.


Votre code a une erreur de syntaxe sur la ligne 26 (Je suppose que l'indentation n'a pas survécu au transfert), mais de manière générale, il est préférable de ne pas réécrire le code d'un utilisateur, de les signaler à des erreurs spécifiques.


Mine fixe, j'ai une dernière erreur, elle n'y affiche aucun, après correct


Remplacer Imprimer (check_answer (user_answer (user_answer, réponses)) avec check_answer (user_answer, réponses)



0
votes

Déclarez et initialisez ces variables en haut du script: xxx pré>

puis comparer les options contre les chaînes, c'est une entrée utilisateur: p>

if option == '1':
    questions = english_questions
    answers = french_answers
elif option == '2':
    questions = french_questions
    answers = english_answers


0 commentaires