# z_calcul_mental_old.py

Created by cent20

Created on April 19, 2021

2.87 KB

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]]]}

cm = ["# Automatismes et calcul mental", "Addition", "Soustraction", "Multiplication", "division"]
lcm = len(cm)

# liste des parametres
par = [["Dif.", "facile", "moyen", "difficile", "expert"],
["Rép.", 16, 32, 64, 128],
["Mode", "classique", "ecole", "college", "lycee"]]
lpar = len(par)
p = [1, 1, 1] # parametres par dé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

# Difficulté

exeMu = list(range(1,6))
exeMu.append(10)
exeDiv = [[2,10],[2,3,5,10]]

while "exceptions géré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))))

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 étant stocké par p je n'ai besoin de passer que le numéro
elif lcm <= c <= lcm+lpar+1:
regler(c-lcm)
elif c == 9:
print("Au revoir !")
exit
else: