Category Archive Informatique

python afficher multiplication posée

Le challenge Python de l’été: écrire une multiplication posée

Pour cet été, je vous propose un mini-challenge qui consiste à écrire un programme Python permettant d’afficher une multiplication posée.

Voici un exemple…

animations python module manim

Manim, un module Python pour faire des animations

Manim est un module Python pour faire des animations “simplement”. Tout est relatif… Il m’a fallu quand-même quelques heures pour comprendre la logique du bousin. Mais au final, on peut faire des choses bien sympathiques… comme par exemple cette animation:

codage fibonacci python

Le codage de Fibonacci et Python

Le codage de Fibonacci et Python : mais c’est quoi ce codage ?

Nous allons avant tout parler mathématiques, puis nous allons implémenter tout ça en Python.

table multiplication latex python

Créer une table de multiplication en LaTeX à l’aide de Python

Pour m’occuper, j’ai eu envie de créer une table de multiplication en LaTeX à l’aide de Python.

Vous allez me dire : “mais pourquoi pas la faire en \(\LaTeX\) directement ? Pourquoi passer par Python triple buse ? Question à laquelle je vous répondrai: “Pourquoi pas ?”

Une table de multiplication en LaTeX: plusieurs alternatives

multido et tabular ?

Effectivement, on peut tenter de construire notre table de multiplication directement en \(\LaTeX\), mais c’est bigrement compliqué… sauf si on souhaite taper un à un tous les résultats. Et moi, je en veux pas car je suis un gros flemmard.

Il faudrait faire appel à une boucle: Le package multido fait des boucles, mais dans un environnement tabular, ça devient problématique car la macro \multido.

Il existe bien la macro \Multido (avec une majuscule) qui fonctionne dans un environnement tabular, mais la documentation n’est pas loquace du tout sur celle-ci, et je n’ai trouvé aucun script qui pourrait m’aider… Bref, trop compliqué!

tikz ?

La solution graphique TiKZ est envisageable en effet, bien que lourde à mes yeux:

\documentclass{standalone}
\usepackage{amssymb}
\usepackage{tikz}

\newcommand{\tabmul}[1]{%
\begin{tikzpicture}
\fill[gray!20] (-0.5,0.5) rectangle (#1+0.5,-0.5);
\fill[gray!20] (-0.5,0.5) rectangle (0.5,-#1-0.5);
\pgfmathparse{-#1-0.5}\let\e\pgfmathresult
\foreach \y in {0.5,-0.5,...,\e}
{
	\draw (-0.5,\y) -- (#1+0.5,\y);
	\draw (-\y,0.5) -- (-\y,-#1-0.5);
}
\foreach\x in {1,2,...,#1}
{
	\node at (\x,0) {\textbf{\x}};
	\node at (0,-\x) {\textbf{\x}};
}
\node at (0,0) {$\times$};
\foreach\y in {1,2,...,#1}
{
	\foreach\x in {1,2,...,#1}
	{
		\pgfmathparse{int(\x*\y)}\let\r\pgfmathresult
		\node at (\x,-\y) {\r};
	}
}
\end{tikzpicture}%
}
\begin{document}
\tabmul{15}
\end{document}
table multiplication LaTeX TiKZ

Ouais, c’est vrai, c’est assez cool… La solution graphique offre un large éventail de personnalisation.

Une table de multiplication en LaTeX: à l’aide de Python

J’entends déjà (peut-être à juste titre) certain·e·s d’entre vous crier au scandale: générer un fichier \(\LaTeX\) via Python, c’est lourd, c’est pas direct, ça pue des pieds… Mouaich… Ben j’m’en fiche un peu au final… Si ça m’amuse et que ça ne fait de mal à personne, pourquoi pas ? En plus, ça donne l’occasion de manipuler le langage… Alors voici une solution:

def table(n,pdf=True):
    table = '\\documentclass{standalone}\n\\usepackage{amssymb}\n\\usepackage{xcolor}\n\\usepackage{colortbl}\n\\usepackage{cellspace}\n\\setlength{\\cellspacetoplimit}{3mm}\n\\setlength{\\cellspacebottomlimit}{3mm}\n\\begin{document}\n'
    T = [ [i*j for j in range(1,n+1) ] for i in range(1,n+1) ]
    table += '\\begin{tabular}{|>{\\columncolor{gray!20}}Sc|*{'+str(n)+'}{Sc|}}\n\\rowcolor{gray!20}\n\\hline\n$\\times$ '
    for i in range(1,n+1):
        table += '& ' + str(i)
    table += '\\\\\n\\hline\n'
    for j in range(1,n+1):
        table += str(j)
        for i in range(1,n+1):
            table += ' & ' + str(T[i-1][j-1])
        table += '\\\\\n\\hline\n'
    table += '\\end{tabular}\n\\end{document}'
    
    Fichier = open('table.tex', 'w' , encoding='utf8')
    Fichier.write( table )
    Fichier.close()
    
    if pdf:
        from os import system
        system("pdflatex table.tex")
        system("START table.pdf")
>>> table(10,True)
table multiplication LaTeX python

L’argument “True” passé dans la fonction table sert uniquement à lancer la compilation via PdfLaTeX directement. Par défaut, il vaut False; dans ce cas, seul le fichier \(\LaTeX\) est créé.

Dans cet article déjà, je vous exposais une manière de construire le triangle de Pascal à l’aide de PythonTeX… D’ailleurs, plutôt que de faire un script Python, on pourrait en effet tout mettre dans le fichier \(\LaTeX\) (ça plaira sûrement à quelques personnes).

\documentclass{standalone}
\usepackage{amssymb}
\usepackage{xcolor}
\usepackage{colortbl}
\usepackage{cellspace}
\setlength{\cellspacetoplimit}{3mm}
\setlength{\cellspacebottomlimit}{3mm}
\usepackage{pythontex}

\begin{pycode}
def table(n,pdf=True):
    T = [ [i*j for j in range(1,n+1) ] for i in range(1,n+1) ]
    table = '\\begin{tabular}{|>{\\columncolor{gray!20}}Sc|*{'+str(n)+'}{Sc|}}\n\\rowcolor{gray!20}\n\\hline\n$\\times$ '
    for i in range(1,n+1):
        table += '& ' + str(i)
    table += '\\\\\n\\hline\n'
    for j in range(1,n+1):
        table += str(j)
        for i in range(1,n+1):
            table += ' & ' + str(T[i-1][j-1])
        table += '\\\\\n\\hline\n'
    table += '\\end{tabular}'
    
    return table
\end{pycode}

\begin{document}
\begin{pycode}
print(table(10))
\end{pycode}
\end{document}

Attention: si vous utilisez PythonTeX, la chaîne de compilation est différente. Personnellement, j’utilise la chaîne suivante sur TexMaker sous Windows 10 (Menu : Utilisateur > Commandes Utilisateur > Éditer Commandes Utilisateur):

pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex|C:\Users\Stephane\AppData\Local\Programs\Python\Python38-32\python.exe "C:\Users\Stephane\AppData\Local\Programs\MiKTeX 2.9\scripts\pythontex\pythontex.py" %.tex|pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex|"C:/Program Files (x86)/Adobe/Acrobat 11.0/Acrobat/Acrobat.exe" %.pdf
ppcm python

Calculer le PPCM de plusieurs nombres avec Python

Calculer le PPCM de plusieurs nombres avec Python peut paraître simple au premier abord, mais tout dépend du cahier des charges…

convertir encodage python

Convertir à la volée l’encodage des fichiers avec Python

Il y a encore quelques années, j’étais un petit con qui écrivait ses codes en ISO… Cela me suffisait. Mais voilà! Entre temps, j’ai été contaminé par le virus UTF-8. Alors du coup, quand il m’arrive de reprendre de très vieux fichiers, il faut que je les convertisse en UTF-8. Et quand il y a tout un répertoire, autant dire que je n’ai pas du tout envie de m’y coller manuellement.

trinomes second degré python poo

Trinôme du second degré et Python

Nous allons aborder ici la notion de trinôme du second degré en Python sous un angle POO (Programmation Orientée Objet). J’avais en effet envie de construire une classe Python représentant un tel trinôme et pouvant effectuer toutes les opérations classiques du lycée.

ensembles python set

Ensembles et Python

Dans les programmes scolaires français du lycée, il est question d’ensembles dès la classe de Seconde, et il est question de Python. On a l’habitude de représenter les ensembles par des listes ou des dictionnaires, mais il existe un autre type pouvant être utile : le type set.

Python somme des chiffres d'un nombre

Somme des chiffres d’un nombre en Python

Il existe plusieurs façons de calculer la somme des chiffres d’un nombre en Python. Nous allons en voir quelques unes, l’intérêt étant de voir les différentes façons d’aborder un même problème.

Probabilités et Python au lycée: loi binomiale et variables aléatoires

J’ai pu constaté ces derniers temps que les outils pour les probabilités en Python au lycée (loi binomiale et variables aléatoires) ne sont pas très pratiques à utiliser.