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}")