Skip to article frontmatterSkip to article content

le sujet

un palindrome est un mot qui se lit dans les deux sens, par exemple non, radar ou kayak

on vous demande d’écrire un programme palindrom.py

solutions

v0: on traite un seul mot

v1: jusqu’à ce qu’on tape le mot “exit”

pour aller plus loin

bien sûr vous pouvez sophistiquer comme vous le sentez; par exemple

la ponctuation

si vous vouliez ignorer la ponctuation, la librairie standard vient avec ceci:

import string
print(string.punctuation)

mais c’est souvent insuffisant notamment avec le texte en français - par exemple pour les choses comme «
et pour traiter ces caractères-là vous allez faire plutôt (merci chatgpt :)

import unicodedata

def unicode_punctuation():
    # U+0000 to U+10FFFF is the full Unicode range
    return {
        chr(i) for i in range(sys.maxunicode)
        if unicodedata.category(chr(i)).startswith('P')
    }

les accents

de même, si vous voulez admettre que, par exemple
Et la marine va venir à Malte (Victor Hugo)
est un palindrome, il va vous falloir “projeter” les caractères accentués (ici le à, mais aussi ç) sur les non-accentués (a, c, resp.)

et pour faire ça de nouveau, unicodedata vient à notre secours

import unicodedata

text = "cet été"
normalized = unicodedata.normalize('NKFD', text)
print(text)
-> affiche 'cet ete'