1.3 Atomes de Données

Explorons la richesse des types de base à travers l'univers de la Matrice. Nous allons découvrir deux super-pouvoirs de Python : le Slicing (découpage) et l'Unpacking (déballage). Ils s'appliquent aux chaßnes de caractÚres mais aussi aux listes et tuples que nous étudierons en détail plus tard.

1. Slicing : Extraire le code source

La syntaxe est [start:stop:step]. Chaque paramĂštre est optionnel.

agent_id = "AGENT_SMITH_001"

print(agent_id[:5])    # 'AGENT'            → du dĂ©but jusqu'Ă  l'index 5 (exclu)
print(agent_id[-3:])   # '001'              → les 3 derniers caractùres
print(agent_id[::2])   # 'AETSIH01'        → un caractùre sur deux
print(agent_id[::-1])  # '100_HTIMS_TNEGA' → step nĂ©gatif = inversion
À vous — mĂȘme logique, nouvelle chaĂźne :
vaisseau = "NEBUCHADNEZZAR"

print(vaisseau[:4])
print(vaisseau[-3:])
print(vaisseau[::3])
print(vaisseau[::-1])
print(vaisseau[:4])    # 'NEBU'
print(vaisseau[-3:])   # 'ZAR'
print(vaisseau[::3])   # 'NUAEA'
print(vaisseau[::-1])  # 'RAZZENDAHCUBEN'

2. Unpacking : Le déballage sexy

Permet d'assigner plusieurs variables en une seule ligne. L'opérateur * capture le reste dans une liste.

# Unpacking simple
x, y = (10, 20)

# Unpacking étendu (Opérateur *)
data = ["Neo", "PiluleRouge", "Sion", "Nebuchadnezzar"]
prenom, *bagages, vaisseau = data

print(prenom)   # 'Neo'
print(bagages)  # ['PiluleRouge', 'Sion']
print(vaisseau) # 'Nebuchadnezzar'
À vous — mĂȘme logique, nouvel Ă©quipage :
crew = ["Morpheus", "Trinity", "Tank", "Dozer", "Switch"]
capitaine, *membres, derniere = crew

print(capitaine)
print(membres)
print(derniere)
print(capitaine)  # 'Morpheus'
print(membres)    # ['Trinity', 'Tank', 'Dozer']
print(derniere)   # 'Switch'

3. Les opérateurs de comparaison et logiques

Python utilise des mots anglais (and, or, not) au lieu de symboles (&&, ||).

Comparaison
==   # égalité
!=   # différent
>    # supérieur
<    # inférieur
>=   # supérieur ou égal
<=   # inférieur ou égal
Logiques
and  # les deux sont vrais
or   # au moins un est vrai
not  # inverse la valeur

Priorité : not > and > or. Exemple dans le contexte du projet :

ligne = "requests   2.28.1"

# On ignore les lignes d'en-tĂȘte ET les sĂ©parateurs
if "Package" in ligne or "---" in ligne:
    continue

# Un composant est valide si son nom n'est pas vide ET sa version est présente
if nom and version:
    print(f"Valide : {nom} {version}")
Chapitre précédent Chapitre suivant : Name Vars