Traduction de "subscript" et "subscriptable" ?
by DorianTurba from AFPy discuss
Comment traduiriez-vous “subscript” et “subscriptable” ?
6 messages - 4 participant(e)s
Comment traduiriez-vous “subscript” et “subscriptable” ?
6 messages - 4 participant(e)s
Bonjour à tous,
On organise à Grenoble mardi 16 décembre 2025 un Meetup Python avec des présentations courtes (lightning talks)
| Lightning talks |
| December 16, 2025 7:00 PM (Europe/Paris) → December 16, 2025 9:00 PM (Europe/Paris) |
1 message - 1 participant(e)
Salut les moules
J'écris souvent ; rarement ici.
J'ai depuis quelques semaines le bonheur de suivre quelques devs débutants, ou aspirants devs. Je lis donc du code généré, ma joie est grande. Je profite de ce vendredi pour partager avec vous mes impressions. L'incubateur d'excellence qu'est DLFP aura, si je suis chanceux, d'autres retours d'expérience à partager.
Plus propre que du code humain. Trop propre. Ce que tu gagnes en lisibilité, tu le perds en concision, en expressivité et en sens. Au fond, rien ne change. Le code décrit le comment, alors que ce qui m'intéresse reste le pourquoi.
Il n'y a évidemment pas de tests. Rien à voir avec la génération. De toute façon il faudra tout reprendre pour intégrer un vrai dispositif de tests, condition nécessaire pour que je fasse confiance au programme.
Le code généré se repère immédiatement: fonctions bien nommées, formatage impeccable, docstrings qui brillent, noms de variables trop précis, aucune variable a, b, x, tmp, out, typage strict des entrées et sorties etc. Un niveau de détail souvent trop fin, l'inverse d'un code en cours d'écriture.
Tu crois que le code fait le travail. Peut-être au niveau micro, les fonctions sont surement correctes. Au niveau macro, macache. Alors comment être sûr que ce code fait ce qu'il annonce ? En découplant les fonctions et en le disséquant pièce par pièce.
C'est certes plus agréable à lire, mais tu perds un indicateur essentiel. La maturité disparaît. La forme est standardisée. Il n'y a plus de code smell, plus de style, plus de rugosité. Comment juger du fond uniquement à la lecture ?
Certains codes écrits n'importe comment se repèrent au premier coup d'œil. C'est une alerte. Pas de structure, fonctions fleuves de 100 lignes, pas de séparation fond/forme. Un brouillon intégral. Et les brouillons doivent être réécrits.
Le même code, rédigé proprement, structuré, soigné, fera tout aussi n'importe quoi donnera l'impression que c'est pensé. L'impression d'une intention, de la crasse propre.
Oui mais c'est trolldi, alors je vous en prie.
Avec le code généré, tu perds la possibilité de juger sur l'apparence. Plus de style, plus de subtilités, plus de petites variables piégées. Si tout est bien nommé, comment repérer ce qui compte vraiment ?
Avec ce code aseptisé, je vais peut-être perdre du temps.
Ou pas.
(publié ici aussi)
Commentaires : voir le flux Atom ouvrir dans le navigateur
Bonsoir tout le monde !
Débutant sur python je viens de commencer à prendre en main un éditeur de code, en l’occurrence IDLE (avant ça je codais via le terminal lol) et je rencontre un problème depuis quelque temps quand j’enregistre (en .py) mon code et que j’ouvre le fichier pour qu’il s’exécute celui-ci s’ouvre sur une fenêtre puis disparaît instantanément. Si quelqu’un pourrait m’aider merci d’avance ![]()
4 messages - 2 participant(e)s
Hello tout le monde,
Meetup de fin d’année le jeudi 18 décembre, dans les locaux de Lowit (métro Part-Dieu) !
Comme l’an dernier, on vous propose un format Lightning Talks ![]()
Si vous souhaitez parler de quelque chose, d’une bibliothèque, d’un outil, d’un projet… N’hésitez pas à me contacter pour que je rajoute sur la liste des sujets ![]()
(dans la limite des slots disponibles)
| Lightning Talks de Noël 🎄 |
| December 18, 2025 7:00 PM (Europe/Paris) → December 18, 2025 10:00 PM (Europe/Paris) |
| https://www.meetup.com/fr-fr/python-afpy-lyon/events/312350756/ |
1 message - 1 participant(e)
Skull King est un jeu de plis sur un thème de pirates, existant depuis plusieurs années en diverses versions.
Plusieurs cartes et effets ont été ajoutés au fil des éditions. Par exemple, une version éditée par Schmidt contient 66 cartes (cartes de couleurs allant de 1 à 13, fuites, pirates, sirènes, Scary Mary et Skull King). La version Grandpa Beck/Blackrock games fournit en plus les baleines, le Kraken, deux cartes butin, une valeur supplémentaire par couleur (le 14) et un effet différent par pirate.
Pour une présentation complète, les règles sont disponibles en ligne, sur de nombreux sites : par exemple en texte ou en vidéo. Pas la peine de s’étendre plus, allez les consulter pour avoir une idée des règles du jeu.
La boîte éditée par Schmidt :

La boîte éditée par Blackrock :

Puisque vous avez maintenant une idée de l’ordre de priorité entre les cartes (n’est-ce pas ?), vous allez comprendre aisément les graphes orientés suivants.
Au moins une carte baleine a été jouée :

Ce premier cas est le plus courant lors d’une partie.
Aucune carte baleine n’a été jouée :

Évidemment, ce cas ne peut arriver que dans une édition paquet de cartes contenant les sirènes.
Les deux graphes ont été réalisés avec le vénérable graphviz (version 2.42.4 mais beaucoup de versions plus anciennes devraient produire le même résultat).
Graphe sans carte baleine :
digraph Jeu {
compound=true
fontname="Helvetica,Arial,sans-serif"
node [fontname="Helvetica,Arial,sans-serif",style=filled]
edge [fontname="Helvetica,Arial,sans-serif"]
graph [style="filled"]
subgraph cluster_pirates {
color=firebrick1
node [color=white]
"premier pirate" -> "autres pirates"
label = "Pirates"
}
subgraph cluster_sirenes {
color=deepskyblue
node [color=white]
"première sirène" -> "autres sirènes"
label = "Sirènes"
}
subgraph cluster_cartes_noires {
color=black
fontcolor=white
node [color=white]
label = "Cartes noires"
c14n -> cn -> c1n [color=white]
}
subgraph cluster_cartes_jaunes {
color=yellow
node [color=white]
label = "Cartes jaunes"
c14j -> cj -> c1j
}
subgraph cluster_cartes_violettes {
node [color=white]
color=violetred
label = "Cartes violettes"
c14vi -> cvi -> c1vi
}
subgraph cluster_cartes_vertes {
node [color=white]
color=chartreuse3
label = "Cartes vertes"
c14ve -> cve -> c1ve
}
subgraph cluster_fuites {
node [color=white]
color=lightgrey
label = "Fuites & butins"
"première fuite ou butin" -> "autres fuites ou butins"
}
c1n[label="1"]
c1j[label="1"]
c1ve[label="1"]
c1vi[label="1"]
cn[label="..."]
cj[label="..."]
cve[label="..."]
cvi[label="..."]
c14n[label="14"]
c14j[label="14"]
c14ve[label="14"]
c14vi[label="14"]
"autres pirates" -> "première sirène" [ltail=cluster_pirates,lhead=cluster_sirenes,minlen=2]
"autres sirènes" -> c14n [ltail=cluster_sirenes,lhead=cluster_cartes_noires,minlen=2]
"autres sirènes" -> "Skull King" [ltail=cluster_sirenes]
"Skull King" -> "premier pirate" [lhead=cluster_pirates]
c1n -> c14j [ltail=cluster_cartes_noires,lhead=cluster_cartes_jaunes,minlen=2]
c1n -> c14vi [ltail=cluster_cartes_noires,lhead=cluster_cartes_violettes,minlen=2]
c1n -> c14ve [ltail=cluster_cartes_noires,lhead=cluster_cartes_vertes,minlen=2]
c1j -> "première fuite ou butin" [ltail=cluster_cartes_jaunes,lhead=cluster_fuites,minlen=2]
c1vi -> "première fuite ou butin" [ltail=cluster_cartes_violettes,lhead=cluster_fuites,minlen=2]
c1ve -> "première fuite ou butin" [ltail=cluster_cartes_vertes,lhead=cluster_fuites,minlen=2]
}
Graphe avec carte baleine :
digraph Jeu {
compound=true
fontname="Helvetica,Arial,sans-serif"
node [fontname="Helvetica,Arial,sans-serif",style=filled]
edge [fontname="Helvetica,Arial,sans-serif"]
graph [style="filled"]
subgraph cluster_valeurs {
color=orange
node [color=white]
label = "Cartes avec valeur"
"premier 13" -> "..."
"premier 13" -> "autres 13"
"..." -> "premier 1"
"premier 1" -> "autres 1"
}
subgraph cluster_autres_cartes {
node [shape=rectangle]
color=beige
rank=same
label = "Autres cartes (sauf Kraken)"
Pirates [color=firebrick1]
"Skull King"[color=white,shape=ellipse]
Sirènes [color=deepskyblue]
Fuites [color=lightgrey]
Baleines [color=navy]
Butins [color=gold]
}
"autres 1" -> Sirènes [ltail=cluster_valeurs,lhead=cluster_autres_cartes,minlen=2]
}
(La coloration syntaxique est configurée sur Swift pour avoir un rendu à peu près correct car la coloration de code Graphviz n’est pas proposée.)
La génération des images se fait par une commande du type :
dot -T png sans_baleine.dot -o sans_baleine.png
Bonnes parties et/ou bons graphes !
Cet article explore pourquoi Python est un excellent choix pour l’écriture de scripts, en abordant les défis rencontrés avec d’autres outils qui peuvent se comporter différemment selon les machines ou ne pas être toujours installés. Une perspective pratique sur l’utilisation de Python comme solution de scripting fiable et cohérente.
Un avis sur la certification Python de CodinGame ?
D’après le site, on peut retenter la certification tous les mois si on a un score qui ne nous satisfait pas.
20 messages - 4 participant(e)s
Découvrez les notes de version de Django 6.0 : prise en charge de Python 3.12–3.14, CSP intégré, tâches en arrière-plan et autres changements importants.

@entwanne, @debnet et moi jouons avec les gestionnaires de contextes ces temps-ci, ça m’a permis de faire ça par exemple : mdk/forking - La forge de l'AFPy
Le jeu du jour et d’aller plus loin dans la libération des gestionnaires de contextes, et je commence à toucher quelque chose, probablement encore un peu fragile, à peine testé, mais ça commence à marcher :
import ast
import inspect
import sys
import textwrap
class Stop(Exception):
"""Internal exception to block the execution of the context body."""
class With:
def tracer_cb(self, frame, event, arg):
if frame is self.frame and event == "opcode":
raise Stop
def __enter__(self):
current_frame = inspect.currentframe()
self.frame = current_frame.f_back
self.frame.f_trace = self.tracer_cb
self.frame.f_trace_opcodes = True
sys.settrace(self.tracer_cb)
def execute(self, body):
"""Do whatever with the body of the with statement."""
raise NotImplementedError
def _locate_with_body(self, tree, lineno):
"""Locate the with statement, in tree, at lineno."""
for node in ast.walk(tree):
try:
node_lineno = node.lineno
except AttributeError:
continue
if node_lineno == lineno:
return node.body
def __exit__(self, exc_type, exc, tb):
frame = tb.tb_frame
src = textwrap.dedent(inspect.getsource(tb.tb_frame))
tree = ast.parse(src)
module = ast.Module(body=self._locate_with_body(tree, tb.tb_frame.f_lineno))
compiled = compile(module, filename="<with>", mode="exec")
Function = type(Repeat.__enter__)
self.execute(Function(compiled, frame.f_globals, name="<with>"))
return True
class Repeat(With):
def __init__(self, times):
self.times = times
def execute(self, body):
for _ in range(self.times):
body()
with Repeat(4):
print(42)
5 messages - 4 participant(e)s