Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
exposant = 2 ou 3 pour les aires ou les volumes
"""
a = random.randint(101, 999)
p = random.randint(-2, -1)
while True:
(div0, div1) = (random.randrange(6), random.randrange(7),)
# Pas de mm³ par ce que ça sort du tableau
if (div0 - div1) in [-2, -1, 1, 2]:
# pas trop loin car ça fait de très longs nombres
break
nb0 = a * 10 ** p
nb1 = nb0 * 10 ** (exposant * (div1 - div0))
exo.append("\\item $\\unit[%s]{%s}=\\unit[\\dotfill]{%s}$" %
(Affichage.decimaux(nb0), u[div0], u[div1]))
cor.append("\\item $\\unit[%s]{%s}=\\unit[%s]{%s}$\\vspace{1ex}\\par" %
(Affichage.decimaux(nb0), u[div0],
Affichage.decimaux(nb1), u[div1]))
return tex_tableau_conversion(div0, div1, nb0, u, exposant)
exo.append(_(u"\\item Trace un triangle $%s$ équilatéral de côté $\\unit[%s]{cm}$.\\par") % (nom, decimaux(c)))
cor.append(_(u"\\item Trace un triangle $%s$ équilatéral de côté $\\unit[%s]{cm}$.\\par") % (nom, decimaux(c)))
x_C = (c * tan(angABC)) / (tan(angABC) + tan(angBAC))
y_C = x_C * tan(angBAC)
cor.append(u"\\begin{pspicture}(-1,-1)(%.3f,%.3f)" % (c + 1, y_C + 1))
cor.append(u"\\pstTriangle(0,0){%s}(%.3f,0){%s}(%.3f,%.3f){%s}" % (A, c, B, x_C, y_C, C))
cor.append(u"\\pstLineAB{%s}{%s}\\lput{:U}{\\psset{linecolor=enonce}\\MarkHashh}" % (C, A))
cor.append(u"\\pstLineAB{%s}{%s}\\lput{:U}{\\psset{linecolor=enonce}\\MarkHashh}" % (B, C))
cor.append(u"\\pstLineAB{%s}{%s}\\lput{:U}{\\psset{linecolor=enonce}\\MarkHashh}" % (A, B))
cor.append(u"\\pstRotation[RotAngle=7,PointSymbol=none,PointName=none]{%s}{%s}[C_1]" % (A, C))
cor.append(u"\\pstRotation[RotAngle=-7,PointSymbol=none,PointName=none]{%s}{%s}[C_2]" % (A, C))
cor.append(u"\\pstArcOAB[linecolor=calcul]{%s}{C_2}{C_1}" % (A))
cor.append(u"\\pstRotation[RotAngle=7,PointSymbol=none,PointName=none]{%s}{%s}[C_3]" % (B, C))
cor.append(u"\\pstRotation[RotAngle=-7,PointSymbol=none,PointName=none]{%s}{%s}[C_4]" % (B, C))
cor.append(u"\\pstArcOAB[linecolor=calcul]{%s}{C_4}{C_3}" % (B))
cor.append(cotation((0, 0), (c, 0), decimaux(c), couleur="enonce"))
cor.append(u"\\end{pspicture}")
def tracefonc(f,i,A,B,xmin,xmax,ymin,ymax):
#A est sur l'axe des ordonnées, f est le nom de la fonction
#Génère la 2e queston et sa réponse
u=coefdir(A,B)
if A[1]>=0:
b='+'+decimaux(str(A[1]))
else:
b=decimaux(str(A[1]))
if u[1]==1:
coef=decimaux(str(u[0]))
if u[0]==-1:
coef='-'
if u[0]==1:
coef=''
x1=decimaux(str(B[0]))
y1=decimaux(str(B[1]))
u[0]=u[0]*B[0]
else:
B=(u[1],u[0]+float(A[1]))
if not dansrep(B,xmin,xmax,ymin,ymax):
B=(-u[1],-u[0]+float(A[1]))
x1=decimaux(str(B[0]))
y1=decimaux(str(B[1]))
if u[0]>0:
coef='\\dfrac{'+decimaux(str(u[0]))+'}{'+decimaux(str(u[1]))+'}'
else:
coef='-\\dfrac{'+decimaux(str(abs(u[0])))+'}{'+decimaux(str(u[1]))+'}'
x0='0'
y0=b
AC = 0.1 * random.randint(40, 60) # AB mesure entre 4cm et 7cm, tracé horizontalement
angBAC = random.randint(25, 75)
# Calcul pour tracer
x_D = AC / 2
y_D = AC / 2 * tan(angBAC)
exo.append(_(u"\\item Trace un losange $%s$ tel que $%s%s=\\unit[%s]{cm}$ et $\\widehat{%s%s%s}=%s\\degres$.\\par")
% (nom, A, C, decimaux(AC), B, A, C, angBAC))
cor.append(_(u"\\item Trace un losange $%s$ tel que $%s%s=\\unit[%s]{cm}$ et $\\widehat{%s%s%s}=%s\\degres$.\\par")
% (nom, A, C, decimaux(AC), B, A, C, angBAC))
# Rédaction
cor.append(_(u" Comme $%s$ est un losange, je sais que $\\widehat{%s%s%s}=\\widehat{%s%s%s}=\\widehat{%s%s%s}=\\widehat{%s%s%s}=%s\\degres$.")
% (nom, B, A, C, A, C, B, A, C, D, C, A, D, angBAC))
# Programme de construction
cor.append(u"\\begin{enumerate}")
cor.append(_(u"\\item Je trace le segment $[%s%s]$ mesurant $\\unit[%s]{cm}$ ;") % (A, C, decimaux(AC)))
cor.append(_(u"\\item je trace $\\widehat{%s%s%s}$ et $\\widehat{%s%s%s}$ pour construire le point $%s$ ;") % (B, A, C, A, C, B, B))
cor.append(_(u"\\item je trace $\\widehat{%s%s%s}$ et $\\widehat{%s%s%s}$ pour construire le point $%s$ ;") % (A, C, D, C, A, D, D))
cor.append("\\end{enumerate}\n")
cor.append(u"\\begin{pspicture}(-0.4,%.3f)(%.3f,%.3f)" % (-y_D - 1, AC + 0.4, y_D + 1))
# figure
cor.append(u"\\pstGeonode[PosAngle={-180,0,90,-90}](0,0){%s}(%.3f,0){%s}(%.3f,%.3f){%s}(%.3f,%.3f){%s}" % (A, AC, C, x_D, y_D, D, x_D, -y_D, B))
cor.append(u"\\pstLineAB[nodesepB=-1]{%s}{%s}\\lput{:U}{\\psset{linecolor=enonce}\\MarkHashh}" % (A, B))
cor.append(u"\\pstLineAB[nodesepB=-1]{%s}{%s}\\lput{:U}{\\psset{linecolor=enonce}\\MarkHashh}" % (C, D))
cor.append(u"\\pstLineAB[nodesepA=-1]{%s}{%s}\\lput{:U}{\\psset{linecolor=enonce}\\MarkHashh}" % (B, C))
cor.append(u"\\pstLineAB[nodesepA=-1]{%s}{%s}\\lput{:U}{\\psset{linecolor=enonce}\\MarkHashh}" % (D, A))
cor.append(u"\\pstLineAB{%s}{%s}" % (A, C))
cor.append(cotation_h((0, 0), (AC, 0), decimaux(AC), couleur="enonce"))
cor.append(u"\\color{enonce}\\pstMarkAngle[linecolor=enonce,Mark=MarkHash]{%s}{%s}{%s}{%s\\degres}" % (B, A, C, angBAC))
cor.append(u"\\color{enonce}\\pstMarkAngle[linecolor=calcul,Mark=MarkHash]{%s}{%s}{%s}{}" % (C, A, D))
cor.append(u"\\color{enonce}\\pstMarkAngle[linecolor=calcul,Mark=MarkHash]{%s}{%s}{%s}{}" % (D, C, A))
cor.append(u"\\color{enonce}\\pstMarkAngle[linecolor=calcul,Mark=MarkHash]{%s}{%s}{%s}{}" % (A, C, B))
l[1], 1)))
cor.append('\\item $\\mathbf{%s} \\times %s = %s$' %
(Affichage.decimaux(l[0], 1), Affichage.decimaux(l[1],
1), Affichage.decimaux(l[0] * l[1], 1)))
else:
alea = random.randrange(0, 5)
if alea > 1:
exo.append('\\item $%s \\quad\\div\\quad %s \\quad = \\quad \\dotfill$' %
(Affichage.decimaux(l[0], 1), Affichage.decimaux(l[1],
1)))
cor.append('\\item $%s \\div %s = \\mathbf{%s}$' % (Affichage.decimaux(l[0],
1), Affichage.decimaux(l[1], 1), Affichage.decimaux(l[0] /
l[1], 1)))
elif alea > 0:
exo.append('\\item $%s \\quad\\div\\quad \\dotfill \\quad = \\quad %s$' %
(Affichage.decimaux(l[0], 1), Affichage.decimaux(l[0] /
l[1], 1)))
cor.append('\\item $%s \\div \\mathbf{%s} = %s$' % (Affichage.decimaux(l[0],
1), Affichage.decimaux(l[1], 1), Affichage.decimaux(l[0] /
l[1], 1)))
else:
exo.append('\\item $\\dotfill \\quad\\div\\quad %s \\quad = \\quad %s$' %
(Affichage.decimaux(l[1], 1), Affichage.decimaux(l[0] /
l[1], 1)))
cor.append('\\item $\\mathbf{%s} \\div %s = %s$' % (Affichage.decimaux(l[0],
1), Affichage.decimaux(l[1], 1), Affichage.decimaux(l[0] /
l[1], 1)))
def choix_trou_frac(exo, cor, n1, p1):
i = random.randrange(3)
p2 = random.randrange(2) # sert à compliquer un peu l'exercice
if i > 1:
exo.append('\\item $\\cfrac{%s}{%s}=\\ldots$' %
(Affichage.decimaux(n1 * 10 ** p2),
Affichage.decimaux(10 ** (p1 + p2))))
cor.append('\\item $\\cfrac{%s}{%s}=\\mathbf{%s}$' %
(Affichage.decimaux(n1 * 10 ** p2),
Affichage.decimaux(10 ** (p1 + p2)),
Affichage.decimaux(n1 * 10 ** (-p1), 1)))
elif i > 0:
exo.append('\\item $\\cfrac{%s}{\ldots}=%s$' %
(Affichage.decimaux(n1 * 10 ** p2),
Affichage.decimaux(n1 * 10 ** (-p1), 1)))
cor.append('\\item $\\cfrac{%s}{\\mathbf{%s}}=%s$' %
(Affichage.decimaux(n1 * 10 ** p2),
Affichage.decimaux(10 ** (p1 + p2)), \
Affichage.decimaux(n1 * 10 ** (-p1), 1)))
else:
exo.append('\\item $\\cfrac{\ldots}{%s}=%s$' %
(Affichage.decimaux(10 ** (p1 + p2)),
Affichage.decimaux(n1 * 10 ** (-p1), 1)))
cor.append('\\item $\\cfrac{\\mathbf{%s}}{%s}=%s$' %
(Affichage.decimaux(n1 * 10 ** p2),
Affichage.decimaux(10 ** (p1 + p2)),
factsup = factoriseTex(carre)[0]
if len(factsup)==1:
cor.append(" le facteur ")
else:
cor.append(" les facteurs ")
for j in range(len(factsup)):
if (j != len(factsup)-1) and (j != len(factsup)-2):
cor.append(decimaux(factsup[j]) + " , ")
elif (j == len(factsup)-2):
cor.append(decimaux(factsup[j]) + " et ")
else:
cor.append(decimaux(factsup[j]) + ".\\par")
cor.append(u"Le nombre cherché est par conséquent " + decimaux(carre) +
u" et le carré parfait obtenu est " + decimaux(carre *
autresnombres[0]) + ".")
### Question 4
exo.append(u"\\item Rendre la fraction $\\dfrac{" + decimaux(listenombres[1])
+ "}{" + decimaux(listenombres[2]) + u"}$ irréductible.")
cor.append(u"\\item Le moyen le plus rapide de simplifier cette fraction est"
+ u"de diviser le numérateur et le dénominateur par leur PGCD." +
u" D'après la question 2), PGCD(" + decimaux(listenombres[1]) + ";~"
+ decimaux(listenombres[2]) + ") = "
+ decimaux(fauxpgcd * pgcdcompl) + ", donc on obtient :\\par")
cor.append(u"$\dfrac{" + decimaux(listenombres[1]) + "{\\scriptstyle \\div " +
decimaux(fauxpgcd * pgcdcompl) + "}}{" + decimaux(listenombres[2]) +
"{\\scriptstyle \\div " + decimaux(fauxpgcd * pgcdcompl) +
"}} = \dfrac{" + decimaux(listenombres[1] / (fauxpgcd * pgcdcompl)) +
a = random.randint(101, 999)
p = random.randint(-2, -1)
while True:
(div0, div1) = (random.randrange(6), random.randrange(7),)
# Pas de mm³ par ce que ça sort du tableau
if (div0 - div1) in [-2, -1, 1, 2]:
# pas trop loin car ça fait de très longs nombres
break
nb0 = a * 10 ** p
nb1 = nb0 * 10 ** (exposant * (div1 - div0))
exo.append("\\item $\\unit[%s]{%s}=\\unit[\\dotfill]{%s}$" %
(Affichage.decimaux(nb0), u[div0], u[div1]))
cor.append("\\item $\\unit[%s]{%s}=\\unit[%s]{%s}$\\vspace{1ex}\\par" %
(Affichage.decimaux(nb0), u[div0],
Affichage.decimaux(nb1), u[div1]))
return tex_tableau_conversion(div0, div1, nb0, u, exposant)
exo.append(_(u"\\item Trace un triangle $%s$ tel que $%s%s=\\unit[%s]{cm}$, $%s%s=\\unit[%s]{cm}$ et $\\widehat{%s%s%s}=%s\\degres$")
% (nom, A, B, decimaux(c), A, C, decimaux(b), B, A, C, angBAC))
cor.append(_(u"\\item Trace un triangle $%s$ tel que $%s%s=\\unit[%s]{cm}$, $%s%s=\\unit[%s]{cm}$ et $\\widehat{%s%s%s}=%s\\degres$.\\par")
% (nom, A, B, decimaux(c), A, C, decimaux(b), B, A, C, angBAC))
cor.append(u"\\begin{pspicture}(%.3f,%.3f)(%.3f,%.3f)" % (min(0, b * cos(angBAC)) - 0.4, -1, max(b, b * cos(angBAC)) + 0.4, b * sin(angBAC) + 1))
cor.append(u"\\pstTriangle(0,0){%s}(%.3f;%.3f){%s}(%.3f,0){%s}" % (A, b, angBAC, C, c, B))
cor.append(u"\\color{enonce}\\pstMarkAngle[linecolor=enonce]{%s}{%s}{%s}{%s\\degres}" % (B, A, C, angBAC))
cor.append(u"\\pstLineAB[nodesepB=-1]{%s}{%s}" % (A, C))
cor.append(u"\\pstRotation[RotAngle=7,PointSymbol=none,PointName=none]{%s}{%s}[C_1]" % (A, C))
cor.append(u"\\pstRotation[RotAngle=-7,PointSymbol=none,PointName=none]{%s}{%s}[C_2]" % (A, C))
cor.append(u"\\pstArcOAB[linecolor=calcul]{%s}{C_2}{C_1}" % (A))
cor.append(cotation((0, 0), (c, 0), decimaux(c), couleur="enonce"))
if angBAC < 111:
x_C, y_C = b * cos(angBAC), b * sin(angBAC)
cor.append(cotation_h((0, 0), (x_C, y_C), decimaux(b), couleur="enonce"))
else:
x_C, y_C = b * cos(angBAC), b * sin(angBAC)
cor.append(cotation((x_C, y_C), (0, 0), decimaux(b), couleur="enonce"))
cor.append(u"\\end{pspicture}")
def choix_trou_frac(exo, cor, n1, p1):
i = random.randrange(3)
p2 = random.randrange(2) # sert à compliquer un peu l'exercice
if i > 1:
exo.append('\\item $\\cfrac{%s}{%s}=\\ldots$' %
(Affichage.decimaux(n1 * 10 ** p2),
Affichage.decimaux(10 ** (p1 + p2))))
cor.append('\\item $\\cfrac{%s}{%s}=\\mathbf{%s}$' %
(Affichage.decimaux(n1 * 10 ** p2),
Affichage.decimaux(10 ** (p1 + p2)),
Affichage.decimaux(n1 * 10 ** (-p1), 1)))
elif i > 0:
exo.append('\\item $\\cfrac{%s}{\ldots}=%s$' %
(Affichage.decimaux(n1 * 10 ** p2),
Affichage.decimaux(n1 * 10 ** (-p1), 1)))
cor.append('\\item $\\cfrac{%s}{\\mathbf{%s}}=%s$' %
(Affichage.decimaux(n1 * 10 ** p2),
Affichage.decimaux(10 ** (p1 + p2)), \
Affichage.decimaux(n1 * 10 ** (-p1), 1)))
else:
exo.append('\\item $\\cfrac{\ldots}{%s}=%s$' %
(Affichage.decimaux(10 ** (p1 + p2)),
Affichage.decimaux(n1 * 10 ** (-p1), 1)))
cor.append('\\item $\\cfrac{\\mathbf{%s}}{%s}=%s$' %
(Affichage.decimaux(n1 * 10 ** p2),
Affichage.decimaux(10 ** (p1 + p2)),
Affichage.decimaux(n1 * 10 ** (-p1), 1)))