Probleme de boucle

Lasyvegasy Messages postés 5 Date d'inscription samedi 30 avril 2016 Statut Membre Dernière intervention 11 mai 2016 - 4 mai 2016 à 12:55
Lasyvegasy Messages postés 5 Date d'inscription samedi 30 avril 2016 Statut Membre Dernière intervention 11 mai 2016 - 4 mai 2016 à 19:52
Bonjour, j'ai créé un générateur de calcul mental avec différents modes:classique,arcade,course et time attack(pas encore fini).Le but du mode arcade est d'enchainé le plus de calculs sans faire d'erreurs,si l'utilisateurs en fait le jeu s'arrête. Je voudrais donc savoir si c'était possible de mettre une boucle for i in range (des qu'il fait un erreur) ou si c'était preferable de mettre un grand nombre a la place dans la boucle. De plus je voudrais savoir comment faire pour que le générateur, en mode course, reste sur le meme calcul jusqu'a ce que l'utilisateur trouve la bonne réponse avant de passer au calcul suivant. Et enfin, je souhaiterais savoir comment faire pour mettre des difficultés,c-a-d que l'utilisateur choisi le niveau de difficulté:facile,normale,difficile; avant le choix mode pour les calculs se fassent en fonction de la difficulté choisi. Vu que c'est un projet bac, si vous avez des idées intéressantes, n'hésitez pas à les proposer. Merci pour votre aide, elle me sera d'une grande utilité.

# Imports
from random import randint
import time
from math import*
 
# Fonctions
def menu():
    print ("Tapez:")
    print ("1 pour le mode classique")
    print ("2 pour le mode arcade")
    print ("3 pour le mode course")
    print ("O pour quitter")
 
def classique():
    score=0
    for p in range(20):
        a, b, signe = randint(1,20), randint(1,10), randint(1,3)
        if signe==2 and a<b: # En cas de soustraction : a doit être > b
            a,b=b,a
 
        operation='%d %s %d' % (a , '_+-*'[signe] , b)
 
        resultat=eval(operation)
 
        question='Operation %d : %s = ?  ' % (p+1,operation)
        resultat2=int(input(question))
 
        score+=(resultat2==resultat)
    print (score,'/20')
    return
         
def arcade():
    score=0
    p=0
    while p < 50:
        a, b, signe = randint(1,20), randint(1,10), randint(1,3)
        if signe==2 and a<b: # En cas de soustraction : a doit être > b
            a,b=b,a
        operation='%d %s %d' % (a , '_+-*'[signe] , b)
 
        resultat=eval(operation)
 
        question='Operation %d : %s = ?  ' % (p+1,operation)
        resultat2=int(input(question))
         
        if resultat2 == resultat:
            score=score+1
            p=p+1
        else:
            score=score
            p=p+1
            print ("Votre score est de",score)
            break
 
def course():
    score=0
    debut=time.time()
    for p in range(20):
        a, b, signe = randint(1,20), randint(1,10), randint(1,3)
        if signe==2 and a<b: # En cas de soustraction : a doit être > b
            a,b=b,a
 
        operation='%d %s %d' % (a , '_+-*'[signe] , b)
 
        resultat=eval(operation)
 
        question='Operation %d : %s = ?  ' % (p+1,operation)
        resultat2=int(input(question))
         
 
        score+=(resultat2==resultat)
 
    fin=time.time()
    temps=ceil(fin-debut)
    print ('Vous avez mis',temps,'secondes pour faire les 20 calculs')
    return
         
 
menu()
choix=int(input('Sasir votre choix : '))
if choix==1:
    classique()
if choix==2:
    arcade()
if choix==3:
    course()

1 réponse

hbouia Messages postés 112 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 22 novembre 2022 12
4 mai 2016 à 18:45
Bonjour,
J'allais vous répondre et je me suis rendu compte que vous avez eu votre réponse sur :
https://openclassrooms.com/forum/sujet/besoin-d-aide-et-d-information

;)
Bon courage pour ton projet bac ISN !
0
Lasyvegasy Messages postés 5 Date d'inscription samedi 30 avril 2016 Statut Membre Dernière intervention 11 mai 2016
4 mai 2016 à 19:52
Merci :)
0
Rejoignez-nous