Le cyberblog du coyote

 

Extra

Editorial

Ce blog a pour objectif principal d'augmenter la culture informatique de mes élèves. Il a aussi pour ambition de refléter l'actualité technologique dans ce domaine.

jeudi 2 mai 2024

11 habitudes qui font de vous un mauvais programmeur Python

Python est vénéré pour sa simplicité et sa lisibilité, mais même les programmeurs les plus expérimentés peuvent tomber dans des habitudes qui compromettent la qualité du code. Dans cet article, nous allons explorer 11 habitudes courantes de codage qui peuvent diminuer ton efficacité en tant que programmeur Python.
En identifiant et en rectifiant ces pratiques, tu peux améliorer la maintenabilité, l’efficacité et la qualité globale de ton code.

Lire l'article sur moncoachdata.com

mardi 19 avril 2022

Que faire quand ça marche pas ? (tuto débutant) - Graven

samedi 16 avril 2022

Le fonctionnement d’un projet de logiciel libre : Scikit-learn

Scikit-learn est une bibliothèque libre Python destinée à l’apprentissage automatique. Elle offre des bibliothèques d’algorithmes en particulier pour les data scientists. Elle fait partie de tout un écosystème libre avec d’autres bibliothèques libres Python comme NumPy et SciPy. Pour les spécialistes, elle comprend notamment des fonctions de classification, régression et clustering. Elle fait un tabac dans le monde de l’apprentissage automatique. Nous avons rencontré Gaël Varoquaux, directeur de recherche à Inria dans l’équipe Soda, cofondateur du projet Scikit-learn, ancien élève de l’École normale supérieure et titulaire d’un doctorat en physique quantique pour comprendre comment fonctionne un projet de logiciel libre plutôt emblématique.

Lire l'article de Serge Abiteboul et François Bancilhon sur Binaire

lundi 14 février 2022

Django expliqué en 3 minutes (Python Web) - Graven

samedi 11 décembre 2021

Python au Lycée

Le site Python au Lycée s'adresse aux enseignants en lycée. Il a pour but la mise à disposition de documents pour l'utilisation du langage de programmation Python, dans le cadre des nouveaux programmes (en France).

dimanche 17 octobre 2021

Pyrates


Pyrates est un jeu met en scène les aventures d'un ou d'une pirate que vous avez choisi. Chaque niveau du jeu doit lui permettre d'ouvrir un coffre et d'en récupérer les pièces d'or.
Le personnage se contrôle à l'aide d'un programme informatique qu'il faut écrire en Python.
Ce projet est issu d'une thèse en didactique de l'informatique portant sur l'enseignement-apprentissage de la programmation informatique dans l'enseignement secondaire.

lundi 17 mai 2021

Le créateur de Python veut rendre son langage deux fois plus rapide

Le créateur de Python veut le rendre deux fois plus rapide. Mais est-ce possible sans casser les projets des utilisateurs et est-ce que cela se produira vraiment ?

Lire l'article de Liam Tung sur ZDNet

samedi 25 janvier 2020

Créer un jeu en python - Graven

mardi 1 octobre 2019

Python et les calculatrices

Python s'impose de plus en plus comme langage de programmation sur les calculatrices. On en veut pour preuve ces quatre modèles:

dimanche 4 août 2019

Le langage Python, la recette du succès pour Netflix

Lors de votre prochaine navigation sur le catalogue de contenus proposé par Netflix, n'oubliez pas de remercier Python (ainsi que les développeurs qui l'utilisent), tant le langage de programmation populaire se trouve à la base de votre expérience utilisateur.

Lire l'article de Liam Tung sur ZDNet

mardi 7 juin 2016

TigerJython

L'environnement de développement TigerJython est bien adapté pour les programmeurs débutants en Python et pour les utilisateurs qui travaillent dans un environnement protégé (par exemple, des laboratoires informatiques sans droits d'administrateur). TigerJython fonctionne parfaitement sur Windows, Mac et Linux. La distribution de TigerJython comprend un fichier JAR unique qui peut être téléchargé gratuitement.

Voir le site www.tigerjython.ch. Une traduction française est en cours.

jeudi 15 mai 2014

Algorithmes de Exo7Math


Voir la série de 6 épisodes sur YouTube

mardi 22 avril 2014

Débuter avec Python au lycée

Débuter avec Python au lycée de Kamel Naroun est mis à disposition selon les termes de la licence Creative Commons Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique 3.0 Unported

mardi 21 mai 2013

Introduction to NumPy and Matplotlib

mardi 5 mars 2013

Check iO

Check iO est un jeu (en anglais) où vous incarnez un Android qui doit arranger certains programmes pour régler des problèmes sur sa planète. Avant chaque exercice, il y a donc une petite histoire, puis on bascule assez vite sur un éditeur de code en ligne qui permet de lancer du script Python.
En plus des tâches proposées par le site, on peut aussi proposer vos propres missions. Ainsi, tous les joueurs gagnent des points et se retrouvent dans un classement. Un bon moyen aussi de mesurer son niveau et d'apprendre quelques trucs en lisant les solutions proposées par d'autres joueurs.

vendredi 20 mai 2011

Quelles règles les programmeurs débutants devraient-ils toujours respecter ?

Quelles règles les programmeurs débutants devraient-ils toujours respecter ?
Un développeur expérimenté livre ses 7 règles d'or


A ses débuts, le programmeur inexpérimenté a tendance à fixer son attention sur la fonctionnalité à produire, quelque soit la quantité de ligne de code, les procédures et les fonctions utilisées pour produire le résultat final. Et ceci sans comprendre (parfois) ce qu'il fait vraiment ou les spécificités du langage.
Paul Vick, un développeur reconnu et spécialisé dans les bases de données et les langages, a travaillé sur plusieurs produits Microsoft dont SQL Server, Visual Basic ou le runtime .NET. Dans un billet de blog, il s'est inspiré des « sept règles pour les écrivains débutants » pour en proposer une version aux jeunes développeurs et leur éviter de faire trop d'erreurs. Les voici.

Règle numéro 1, le programmeur débutant ne doit pas écrire de longues procédures. Une procédure ne devrait pas avoir plus de dix ou douze lignes de code.

Deux, chaque procédure doit avoir un objectif clair. Un bon programme doit avoir des procédures claires, sans cumul.

Trois, les programmeurs débutants ne doivent pas utiliser les fonctions fantaisistes du langage. Pour Paul Vick, il est mal pour un débutant d'utiliser autre chose que des déclarations de variables, les appels de procédures, des opérateurs (arithmétiques, comparaisons, etc.) et les fonctions de contrôle de flux. Selon lui, l'utilisation des fonctions simples oblige à réfléchir à ce que l'on écrit.

Règle numéro 4, ne jamais utiliser les fonctionnalités du langage dont vous n'êtes pas sûr(e) du résultat ou du rôle. Une règle d'or indépassable pour Paul Vick, qui estime que si elle n'est pas respectée par un débutant, il devrait purement et simplement changer de métier.

Règle numéro 5, les débutants doivent à tout prix éviter le copier/coller. Sauf, évidemment, s'ils veulent copier le code d'un programme qu'ils ont écrit.

Six, le débutant doit éviter l'abstrait, et toujours opter pour le concret.

Et enfin la règle numéro 7 : appliquer les six règles ci-dessus chaque jour pendant au moins six mois.

La pratique de la programmation en suivant ces 7 règles d'or peut s'avérer très gênant reconnaît Paul Vick. Mais pour lui, c'est un excellent moyen d'apprendre un langage de programmation.

Sources : Developpez.com, Blog de Paul Vick

dimanche 12 décembre 2010

Arabesques

En cherchant à dessiner une spirale, un de mes élèves a obtenu... Vous saurez quoi en essayant le programme Python ci-dessous.

from turtle import *

reset()
speed('fastest')
angle = 0.1
depl = 0.1
while True :
    angle += 0.5
    depl += 0.005
    forward(depl)
    left(angle)

vendredi 15 mai 2009

Initiation au traitement d'image avec Numpy

A la fin de ce tutoriel vous saurez récupérer les données brutes d'une image, les mettre en forme afin de les traiter et de reconstruire l'image résultat. Tout cela sera fait avec l'aide des librairies PIL et NumPy. Côté traitement d'images, nous traiterons la segmentation à deux seuils, la dilatation et l'érosion.

mercredi 6 mai 2009

Codes sources

Tout bon ingénieur vous le dira : plutôt que de réinventer la roue, regardons d'abord si quelqu'un n'a pas déjà fait quelque chose qui ressemble à notre projet. PythonFrance.com met à disposition des codes sources en Python proposés par des internautes. Il y en a pour tous les goûts.

dimanche 3 mai 2009

Plus Court Solveur de Sudoku

Voici un programme en Python de 173 caractères seulement qui serait le plus court solveur de sudoku connu actuellement :

def r(a): i=a.find('0') if i<0:print a [m in[(i-j)%9*(i/9^j/9)*(i/27^j/27|i%9/3^j%9/3)or a[j]for j in range(81)]or r(a[:i]+m+a[i+1:])for m in`14**7*9`]r(raw_input())

Ce programme est extrêmement compact et condensé, voire cryptique. Ce n’est pas la meilleure façon de programmer, mais ça révèle souvent la puissance cachée de certains langages. Ce programme est décrit en anglais et en détail ici, mais voici son principe en gros et en français:

def r(a): ... r(raw_input()) // définit la fonction “r” qui résout le sudoku, puis on l’appelle en passant en paramètre ce que l’utilisateur a entré au clavier. Ca doit être une chaine de 81 caractères contenant ligne par ligne les chiffres de 1 à 9 donnés, et des 0 aux emplacements vides.

i=a.find('0') if i<0:print a // au début de la fonction, on cherche le premier emplacement vide. Si on ne le trouve pas, on imprime le sudoku résolu
la partie principale de la fonction utilise deux concepts puissants de Python:

  • la “lazy evaluation” qui fait que l’expression “a or b” est équivalente à “if not(a):b”
  • la “compréhension de liste” qui permet de créer une liste en écrivant une boucle à l’intérieur de [crochets]. Par exemple “l = [x**2 for x in range(10)]” crée la liste des carrés des 10 premiers nombres entiers
ainsi cette expression [(i-j)%9*(i/9^j/9)*(i/27^j/27|i%9/3^j%9/3)or a[j]for j in range(81)] fournit la “liste d’exclusion” contenant les chiffres qui ne peuvent pas figurer dans le trou à la position i. On l’obtient en parcourant toutes les celllules et en ajoutant à la liste la valeur des cases a[j] situées sur la même ligne, la même colonne ou dans le même bloc que i. Le grand test compliqué détermine ces conditions en utilisant les opérateurs modulo (%), ou binaire (|) et ou exclusif (^).

Finalement, le [m in [...] or r(a[:i]+m+a[i+1:])for m in`14**7*9`] remplit successivement la grille avec les chiffres possibles en utilisant la ‘lazy evaluation’ une fois de plus : ce n’est que si le chiffre m n’est pas dans la liste d’exclusion qu’on execute la partie droite du or, laquelle appelle récursivement la fonction r en lui passant la grille en paramètre la grille a[:i]+m+a[i+1:]. Ici , l’opérateur + sert à concaténer des listes : d’abord les i-èmes premières cases, puis le chiffre m proposé pour la case vide, puis les cases à partir de la i+1 ème.

Ce programme utilise donc une approche “force brute” loin d’être optimale en temps de calcul : on essaie les chiffres possibles dans chaque case vide jusqu’à ce que ça marche.

Reste à découvrir une astuce de geek que je ne connaissais pas : 14**7*9 vaut 948721536, un nombre qui contient les chiffres 123456789, dans le désordre, mais ça va aussi pour notre application. Les backquotes ´…´ servent à former une chaine, comme d’ailleurs la fonction str(). L’avantage de ´14**7*9´sur “123456789″ ? ben c’est évident : il faut deux bytes de moins …

Source : Dr Goulu