Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def tableau_diagramme_tex(typed=2, val=[[], []], larg="c"):
"""Génère le tableau de calculs des angles ou des longueurs pour le corrigé de la construction des diagrammes."""
cols = len(val[0])
tab = u"\\begin{tabular}{|>{\\bfseries}c|*{" + str(cols - 1) + "}{" + larg + "|}>{\\centering\\bfseries\\arraybackslash}p{2cm}|}\n"
tab += u"\\hline\n"
for titre in val[0]: # Ligne de titre, avec astuce pour éviter le cadre sur la dernière cellule "Total"
tab += u"\\textbf{" + titre + "} & "
tab += u"\\textbf{Total} \\\\\\hline\n"
tab += _(u"Fréquences (\\%)")
for frequence in val[1]:
tab += " & " + decimaux(frequence)
tab += " & 100 \\\\\\hline\n"
if typed == 1: # Diagramme en bâtons
texte = _(u"Comme 10\\% sont représentés par 1cm, il faut diviser chaque fréquence par 10 pour obtenir la longueur (arrondie au dixième) du bâton à dessiner :\\par\n")
tab = texte + tab
tab += _(u"Hauteur (cm)")
for frequence in val[1]:
tab += " & " + decimaux(round(frequence / 10.0, 1))
tab += " & 10 \\\\\\hline\n"
elif typed == 2: # Diagramme circulaire
texte = _(u"Comme il y a $360^{\circ}$ dans un cercle pour représenter 100\\%, il faut multiplier chaque fréquence par 3,6 pour connaître son angle (arrondi au degré) de représentation dans le diagramme :\\par\n")
tab = texte + tab
tab += _(u"Angle (Degrés)")
for frequence in val[1]:
#Les deux groupes
ligne1 = [u"\\item Bus A : %s élèves dont %s %s de garçons."%(totA, prctA,"\\%"),
u"\\item $%s$ %s des élèves de quatrièmes possèdent un ordinateur ;"%(prctA,"\\%")][i]
ligne2 = [u"\\item Bus A : %s élèves dont %s %s de garçons."%(totB, prctB,"\\%"),
u"\\item $%s$ %s des élèves de troisièmes possèdent un ordinateur ;"%(prctB,"\\%")][i]
#La question
question = [u"Quel est, sur l'ensemble des deux bus, le pourcentage de garçons ?\\par",
u"Quel est le pourcentage des élèves qui possèdent un ordinateur ?\\par"][i]
#La correction
correction =[#Dans le bus
[u"Dans le bus A, il y a $\\cfrac{%s \\times %s}{100} = %s$ garçons.\\par"%(prctA, totA, decimaux(nbA)),
u"Dans le bus B, il y a $\\cfrac{%s \\times %s}{100} = %s$ garçons.\\par"%(prctB, totB, decimaux(nbB)),
u"On en déduit qu'il y a $%s + %s = %s$ garçons sur un total de $%s + %s = %s $ élèves.\\par"
%(decimaux(nbA), decimaux(nbB), nbTotal, totA, totB, Total),
u" Le pourcentage de garçons sur l'ensemble des deux bus est donc de $\\cfrac{%s}{%s}\\times 100 %s %s%s$"
%(nbTotal, Total, approx, decimaux(prct_final_arrondi), "\,\\%")],
#À l'ordinateurs
[u"En quatrièmes, $\\cfrac{%s \\times %s}{100} = %s$ élèves possèdent un ordinateur.\\par"%(prctA, totA, decimaux(nbA)),
u"En troisièmes, $\\cfrac{%s \\times %s}{100} = %s$ élèves possèdent un ordinateur.\\par"%(prctB, totB, decimaux(nbB)),
u"On en déduit qu'il y a $%s + %s = %s$ élèves qui possèdent un ordinateur sur un total de $%s + %s = %s $ élèves.\\par"
%(decimaux(nbA), decimaux(nbB), nbTotal, totA, totB, Total),
u" Le pourcentage d'élèves possédant un ordinateur est donc de $\\cfrac{%s}{%s}\\times 100 %s %s%s$"
%(nbTotal, Total, approx, decimaux(prct_final_arrondi), "\,\\%")],
][i]
exo = ["\\exercice",
texte,
"\\begin{itemize}",
ligne1,
ligne2,
"\\end{itemize}",
def print_coef(coef):
"""Gère le format du coef
"""
if isinstance(coef, (float, int)):
if coef > 0: return "+" + decimaux(coef)
else: return decimaux(coef)
if isinstance(coef, classes.Fractions.Fraction):
if isinstance(coef.n, int) and isinstance(coef.d, int) and coef.n < 0 and coef.d > 0:
return "-" + str(Fraction(-coef.n, coef.d, coef.code))
return "+" + str(coef)
if isinstance(coef, str):
texte = "(" + "".join(Priorites3.texify([Priorites3.splitting(coef)])) + ")"
if texte[0] != "-": return "+" + texte
else: return texte
s = ""
exo.append(_(u"Voici une liste de chiffres choisis au hasard dans les décimales de $\\pi$ :\\par"))
cor.append(_(u"Voici une liste de chiffres choisis au hasard dans les décimales de $\\pi$ :\\par"))
exo.append(dec_tex)
cor.append(dec_tex)
exo.append("\\begin{enumerate}")
cor.append("\\begin{enumerate}")
exo.append(_(u"\\item Compléter le tableau ci-dessous, sachant que les fréquences doivent être arrondies au centième.\\par"))
cor.append(_(u"\\item Compléter le tableau ci-dessous, sachant que les fréquences doivent être arrondies au centième.\\par"))
exo.append("\\end{enumerate}")
exo.append(tableau)
exo.append(u"\\par")
cor.append(_(u"Chaque effectif se complète en comptant le nombre d'apparition de chaque chiffre dans la liste de l'énoncé."))
cor.append(_(u"Comme les chiffres sont rangés par 20, on voit assez rapidement que le nombre total de chiffres est de ") + str(nb_dec) + ".\\par")
cor.append(_(u"Pour le calcul des fréquences, on multiplie l'effectif par 100, et on divise par le nombre total de chiffres, puis il ne faut pas oublier d'arrondir au centième.\\par\n"))
cor.append(_(u"Par exemple pour la fréquence du chiffre 1 : $\\dfrac{") + decimaux(effectifs[0]) + "\\times 100}{" + str(nb_dec) + "} \\approx " + decimaux(frequences[0]) + "$.\\par")
cor.append("\\end{enumerate}")
cor.append(tableau_cor)
exo.append("\\begin{enumerate}")
cor.append("\\begin{enumerate}")
exo.append(_(u"\\item[$\\blacktriangleright$\\textbf{2.}] Représenter la répartition des chiffres dans un diagramme en bâtons avec 1~cm pour 10\\%."))
cor.append(_(u"\\item[$\\blacktriangleright$\\textbf{2.}] Représenter la répartition des chiffres dans un diagramme en bâtons avec 1~cm pour 10\\%.\\par"))
exo.append("\\end{enumerate}")
cor.append("\\end{enumerate}")
diagramme = diagramme_tex(1, [[_(u"Valeurs"), "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], frequences])
diagramme_tableau = tableau_diagramme_tex(1, [[_(u"Valeurs"), "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], frequences], ">{\\centering}p{0.8cm}")
cor.append(diagramme_tableau)
cor.append("\\bigskip")
cor.append(diagramme)
def tTeX(n):
if n == 1:
return ""
elif n == -1:
return "-"
elif n >= 0:
return "+" + decimaux(n)
else:
return decimaux(n)
tableau_tex += u"\\textbf{" + titre + "} & "
if total:
tableau_tex += u"\\textbf{Total} \\\\\\hline\n"
else:
tableau_tex = tableau_tex[:-2] + u"\\\\\\hline\n"
if eff:
tableau_tex += _("Effectifs")
if len(val[0]) > 0:
somme = 0
for effectif in val[0]:
if effectif < 0:
tableau_tex += " & "
else:
tableau_tex += " & " + decimaux(effectif)
somme += effectif
else:
tableau_tex += " & " * (cols - 1)
somme = ""
if total:
tableau_tex += " & " + str(somme) + "\\\\\\hline\n"
else:
tableau_tex += "\\\\\\hline\n"
if freq:
tableau_tex += _(u"Fréquences (\\%)")
if len(val[1]) > 0:
for frequence in val[1]:
somme = "100"
if frequence < 0:
# Les deux groupes
ligne1 = [u"\\item Bus A : %s élèves dont %s %s de garçons." % (totA, prctA, "\\%"),
u"\\item $%s$ %s des élèves de quatrièmes possèdent un ordinateur ;" % (prctA, "\\%")][i]
ligne2 = [u"\\item Bus A : %s élèves dont %s %s de garçons." % (totB, prctB, "\\%"),
u"\\item $%s$ %s des élèves de troisièmes possèdent un ordinateur ;" % (prctB, "\\%")][i]
# La question
question = [u"Quel est, sur l'ensemble des deux bus, le pourcentage de garçons ?\\par",
u"Quel est le pourcentage des élèves qui possèdent un ordinateur ?\\par"][i]
# La correction
correction = [ # Dans le bus
[u"Dans le bus A, il y a $\\cfrac{%s \\times %s}{100} = %s$ garçons.\\par" % (prctA, totA, decimaux(nbA)),
u"Dans le bus B, il y a $\\cfrac{%s \\times %s}{100} = %s$ garçons.\\par" % (prctB, totB, decimaux(nbB)),
u"On en déduit qu'il y a $%s + %s = %s$ garçons sur un total de $%s + %s = %s $ élèves.\\par"
% (decimaux(nbA), decimaux(nbB), nbTotal, totA, totB, Total),
u" Le pourcentage de garçons sur l'ensemble des deux bus est donc de $\\cfrac{%s}{%s}\\times 100 %s %s%s$"
% (nbTotal, Total, approx, decimaux(prct_final_arrondi), "\,\\%")],
# À l'ordinateurs
[u"En quatrièmes, $\\cfrac{%s \\times %s}{100} = %s$ élèves possèdent un ordinateur.\\par" % (prctA, totA, decimaux(nbA)),
u"En troisièmes, $\\cfrac{%s \\times %s}{100} = %s$ élèves possèdent un ordinateur.\\par" % (prctB, totB, decimaux(nbB)),
u"On en déduit qu'il y a $%s + %s = %s$ élèves qui possèdent un ordinateur sur un total de $%s + %s = %s $ élèves.\\par"
% (decimaux(nbA), decimaux(nbB), nbTotal, totA, totB, Total),
u" Le pourcentage d'élèves possédant un ordinateur est donc de $\\cfrac{%s}{%s}\\times 100 %s %s%s$"
% (nbTotal, Total, approx, decimaux(prct_final_arrondi), "\,\\%")],
][i]
exo = ["\\exercice",
texte,
"\\begin{itemize}",
ligne1,
ligne2,
"\\end{itemize}",
def tTeX(n):
if n == 1:
return ""
elif n == -1:
return "-"
elif n >= 0:
return "+" + decimaux(n)
else:
return decimaux(n)