Une précédente version 100% texte
v = "1.0" # Calcul mental, Par Robert V. et Fedyna K. from random import randint as rd # Difficulte dif = {"+":[[[1,9],[1,9]],[[10,19],[1,9]],[[10,99],[1,9]],[[10,99],[10,99]]], "-":[[[1,9],[1,9]],[[10,99],[1,9]],[[10,20],[10,20]],[[10,99],[10,99]]], "*":[[[1,10],[1,10]],[[1,10],[1,10]],[[2,10],[11,20]],[[1,25],[1,25]]], "/":[[[1,10],[2,10]],[[1,10],[2,10]],[[1,10],[2,10]],[[1,20],[2,20]]]} # elements du menu cm = ["# Automatismes et calcul mental", "Addition", "Soustraction", "Multiplication", "division"] lcm = len(cm) # liste des parametres par = [["Dif.", "facile", "moyen", "difficile", "expert"], ["Rép.", 16, 32, 64, 128], ["Mode", "classique", "ecole", "college", "lycee"]] lpar = len(par) p = [1, 1, 1] # parametres par défaut def mel(a,b): l = [a,b] a = l[rd(0,1)] l.remove(a) b = l[0] return a,b def calcul(op,d): # Le generateur de calcul # Variables : -1 pour etre lisible par code op = ["+","-","*","/"][op-1] d -= 1 # Difficulté exeMu = list(range(1,6)) exeMu.append(10) exeDiv = [[2,10],[2,3,5,10]] while "exceptions gérées": a = rd(dif[op][d][0][0],dif[op][d][0][1]) b = rd(dif[op][d][1][0],dif[op][d][1][1]) if op in "+-*": a,b = mel(a,b) if op == "*" and d == 0: if a in exeMu and b in exeMu: break elif op == "-" and d == 0: if a >= b: break elif op == "/": a = a*b if d in [0,1,2] and a <= 100: if d in [0,1] and b in exeDiv[d]: break if d == 2: break if d == 3 and a <= 200: break else: break # Demande de l'operation (uniquement pour test console) c = int(input(str(a)+" "+op+" "+str(b)+" = ")) # Verification du resultat (a voir avec les divisions s'il faut le changer) if c == int(eval(str(a)+op+str(b))): print("BRAVO ! ",end="") print(int(eval(str(a)+op+str(b)))) def menu(): print(cm[0]) for i in range(1,lcm): print(str(i)*(i>0),cm[i]) for j in range(lpar): print(i+j+1, par[j][0], " : ", par[j][p[j]] ) print("9 >>> Quitter le programme") c = 0 while c==0: c=int(input()) if 1 <= c <= lcm-1: for i in range(par[1][p[2]]): calcul(c,p[0]) # Tout étant stocké par p je n'ai besoin de passer que le numéro elif lcm <= c <= lcm+lpar+1: regler(c-lcm) elif c == 9: print("Au revoir !") exit else: menu() if c!=9: menu() def regler(r): print("R = ", r) # debug à neutraliser print(cm[0]) for j in range(1,5): print(j, par[r][0], " : ", par[r][j] ) p[r] = int(input()) menu() menu()