Category Archive Python

python jeu morpion

Créer le jeu du Morpion en Python

Vous souhaitez créer le jeu du Morpion en Python ? Je m’y suis collé… et ce ne fut pas de tout repos!

Mais comme je suis très gentil, je vous explique tout !

manim python second degré

Le second degré: animation fiche résumée

Je suis dans ma période manim ces temps-ci… Et là, je vous propose cette animation qui permet de visualiser l’effet du signe de \(a\) et du discriminant sur l’allure de la courbe pour un polynôme du second degré de la forme \(ax^2+bx+c\).

manim python animation triangles

Les différents triangles: animation Python et manim

Je me suis “amusé” (pendant quand-même près de 4 heures !… oui, je début avec manim…) à faire une animation présentant quelques triangles (rectangles, isocèles, rectangles isocèles, équilatéraux, scalènes, acutangles et orthiques).

manim crible ératosthène python

Crible d’Ératosthène: animation avec Python et manim

Nous allons nous pencher dans cet article sur le crible d’Ératosthène, et plus particulièrement la façon dont on peut créer une animation avec Python et manim.

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.