Problème programme python en terminale S spé ISN

Fermé
saogine76 Messages postés 90 Date d'inscription jeudi 19 juillet 2012 Statut Membre Dernière intervention 6 novembre 2016 - Modifié par saogine76 le 6/11/2016 à 00:41
saogine76 Messages postés 90 Date d'inscription jeudi 19 juillet 2012 Statut Membre Dernière intervention 6 novembre 2016 - 6 nov. 2016 à 14:13
Bonjour, Je suis en Terminale S spé ISN et dans cette spé nous devons ( par groupe de deux ) codé un programme en langage python qui répond à ses critères :

- Utiliser les listes pour réaliser le projet

- Elaborer 5 questions successives mélangeant les réponses chiffrée ( nombre ) et écrites (chaine de caractère )

- 1 question doit porter sur les table de multiplication, vous devrez laisser la possibilité a l'expérimentateur de choisir sa table en ( en excluant 1 et 10)

- 1 question sur les capitales de pays, vous devrez accepter toute réponses ( avec ou sans majuscule )

- Donner a la fin du programme le clairement le nombres de bonnes réponses

- Afin que deux personnes utilisant votre programme côte à côte n'aient pas le même énoncé, rendre aléatoire l'ordre des 5 questions.

Voici notre programme :
from random import*


def reponsejuste():
    global compteur
    compteur = compteur+1


def question1():
    pays = ["de la france","de l'espagne","de l'italie","de l'allemagne","du chili"]
    capitales= ["paris","madrid","rome","berlin","santiago"]
    nombre = randint (0,len(pays)-1)
    reponse = input("Quelle est la capitale "+pays[nombre]+"?")
    if reponse.lower() == capitales[nombre]:
        reponsejuste()


def question2():
    nombre = randint (2,9)

    table = int(input("Quelle table de multiplication veux tu ?"))
    reponse = int(input("Combien font "+str(nombre)+"*"+str(table)+"?"))
    if reponse == (nombre*table):
        reponsejuste()


def question3():
    reponse = input("En quelle annnée a été crée Apple ?")
    if reponse == "1976":
        reponsejuste()


def question4():
    reponse = input("Quel est la hauteur de la Tour Eifel ?(en metres)")
    if reponse == "300":
        reponsejuste()


def question5():
    monument = ["de la Tour Eifel","de la Statue de la libertée","du Big Ben","de la Tour de pise","du Taj Mahal"]
    hauteur= [300,93,96,57,73]
    nombre = randint (0,len(monument)-1)
    reponse = int(input("Quelle est la hauteur" + monument[nombre] + " ( a plus ou moins 10 mètre ) ?"))
    if hauteur[nombre]-10 < reponse < hauteur[nombre]+10:
        reponsejuste()


compteur = 0
question_tombees = []
liste_question = [question1, question2, question3, question4, question5]



for nombre_questions in range(5):
    ordre_question =randint(0,len(liste_question)-1)
    if not ordre_question in question_tombees:
        question_tombees.append(ordre_question)
        liste_question[ordre_question]()
    else:
            while ordre_question in question_tombees:
            ordre_question = randint(0,len(liste_question)-1)
            question_tombees.append(ordre_question)
            liste_question[ordre_question]()


print("Tu as "+str(compteur)+" bonne(s) réponse(s)")



Donc notre problème vient de la derniere partie ( a partir de else ) souligée ( je crois ) car les questions se lance a l'infini et nous n'avons pas trouvé de solution a ce problème.
Si vous avez des idées pour résoudre ce problème nous sommes preneurs ( même des idées pour améliorer le programme en général.
Nous sommes conscient du fait que notre programme n'exclue pas la table de 1 et 10 ( nous comptons le réglé plus tard )
(on va aussi changer la question 4 ^^)

Nous sollicitons donc principalement votre aides pour la partie "else" qui doit normalement lancé les 5 questions dans un ordre aléatoire sans les répétées.

Voila tout merci d'avance pour votre aide ! :)
A voir également:

1 réponse

dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 482
6 nov. 2016 à 05:12
Salut, le code n'est pas indenté, notamment après le else.
1
saogine76 Messages postés 90 Date d'inscription jeudi 19 juillet 2012 Statut Membre Dernière intervention 6 novembre 2016 5
6 nov. 2016 à 14:13
Normalement il l'est mais la je sais pas pourquoi :s mais le probleme ne vient pas de la
0