Les bases de Python : conditions, boucles et structures de données

valeur = 2
if valeur == 1:
    print("un")
elif valeur == 2:
    print("deux")
else:
    print("autre")

2. Boucle for

Une séquence (séquence) est un type de conteneur ordonné et itérable, accessible par indice. Les séquences natives incluent : str, list, tuple, range.

for element in range(10):
    print(element)

3. Boucle while

message = "bonjour python"
i = 0
while i < len(message):
    print(message[i])
    i += 1
else:
    print("fin")

4. continue, break et pass

  • continue : saute l'itération en cours
  • break : sort de la boucle
  • pass : instruction vide, sert de placeholder

5. Type numérique

a = 1
b = 2
print(max(a, b))
c = 0.1
print(int(c))

6. Chaînes de caractères

6.1 Opérations de base

texte = "bonjour python"
print(texte[0])                       # 'b'
print(texte[1:3])                     # 'on' (indices 1 et 2)
bloc = """
    Salut
    tout le monde
"""
print(bloc)
print(r"saut de ligne\n")             # raw string
for i in range(5):
    print(f"itération {i}")

6.2 Méthodes intégrées

print("abc".upper())                  # ABC
print("ABC".lower())                  # abc
print("hello world".title())          # Hello World

print("hello".find('l'))              # 2
print("salut".replace("ut", "utation")) # salutation

print("  espaces  ".strip())          # "espaces"

print("1,2,3".split(','))             # ['1','2','3']
print(','.join(["a","b","c"]))        # "a,b,c"

print("hello".startswith("he"))       # True
print(len("hello"))                   # 5

7. Listes

7.1 Création

liste_vide = []
nombres = [1, 2, 3]
mixte = [1, "hello", True]
imbriquee = [[1, 2], [3, 4]]

7.2 Accès

fruits = ["pomme", "banane", "cerise"]
print(fruits[0])      # pomme
print(fruits[-1])     # cerise

7.3 Ajout

fruits.append("orange")
fruits.insert(1, "mangue")

7.4 Suppression

fruits.pop()          # supprime et retourne le dernier
fruits.pop(1)         # supprime l'élément à l'indice 1
fruits.remove("pomme")# supprime la première occurrence
del fruits[0]

7.5 Tranches (slicing)

nums = [0, 1, 2, 3, 4, 5]
print(nums[1:4])      # [1,2,3]
print(nums[:3])       # [0,1,2]
print(nums[3:])       # [3,4,5]
print(nums[::2])      # [0,2,4]
print(nums[::-1])     # [5,4,3,2,1,0]

7.6 Concaténation

liste1 = [1, 2]
liste2 = [3, 4]
combinee = liste1 + liste2   # [1,2,3,4]
liste1.extend(liste2)        # [1,2,3,4]

7.7 Méthodes courantes

nums = [1, 2, 3, 2]
print(len(nums))       # 4
print(nums.index(2))   # 1
print(nums.count(2))   # 2
nums.reverse()
nums.sort()

7.8 Compréhensions de listes

carres = [x**2 for x in range(5)]              # [0,1,4,9,16]
carres_pairs = [x**2 for x in range(10) if x % 2 == 0]

8. Tuples

8.1 Caractéristiques

Un tuple est immuable, plus sûr et peut être utilisé comme clé de dictionnaire.

8.2 Création

tuple_vide = ()
element_unique = (42,)   # virgule obligatoire
couleurs = ("rouge", "vert", "bleu")
coordonnees = 10, 20, 30 # sans parenthèses

8.3 Accès

print(couleurs[0])            # rouge
print(coordonnees[1:3])       # (20,30)

8.4 Déballage (unpacking)

point = (3, 5)
x, y = point
premier, *milieu, dernier = (1, 2, 3, 4, 5)
print(premier)   # 1
print(milieu)    # [2,3,4]
print(dernier)   # 5

8.5 Concaténation et répétition

t1 = (1, 2)
t2 = (3, 4)
print(t1 + t2)      # (1,2,3,4)
print(("salut",) * 3) # ('salut','salut','salut')

8.6 Méthodes

t = (1, 2, 3, 2, 4, 2)
print(t.count(2))   # 3
print(t.index(3))   # 2

9. Dictionnaires

9.1 Caractéristiques

  • Structure clé-valeur
  • Recherche rapide O(1)
  • Clés immuables et uniques
  • Valeurs de tout type

9.2 Création

vide = {}
personne = {
    "nom": "Alice",
    "age": 30,
    "etudiant": False,
    "cours": ["Maths", "Physique"]
}
coords = dict(x=10, y=20)
paires = [("nom", "Bob"), ("age", 25)]
personne2 = dict(paires)

9.3 Accès

print(personne["nom"])
print(personne.get("age"))
print(personne.get("pays", "France"))
if "email" not in personne:
    personne["email"] = "alice@example.com"

9.4 Modification

personne["age"] = 31
personne.update({"age": 32, "ville": "Paris"})
combinee = personne | personne2   # Python 3.9+

9.5 Suppression

del personne["etudiant"]
email = personne.pop("email")
dernier = personne.popitem()
personne.clear()

9.6 Parcours

for cle in personne.keys():
    print(cle)
for valeur in personne.values():
    print(valeur)
for cle, valeur in personne.items():
    print(f"{cle}: {valeur}")
carre = {x: x**2 for x in range(5)}

9.7 Dictionnaires imbriqués

utilisateurs = {
    "alice": {"age": 30, "email": "alice@ex.com"},
    "bob": {"age": 25, "email": "bob@ex.com"}
}
print(utilisateurs["alice"]["email"])

10. Gestion des exceptions

10.1 Bloc try/except

try:
    resultat = 10 / 0
except ZeroDivisionError:
    print("Division par zéro !")
except (TypeError, ValueError) as e:
    print(f"Erreur de type ou valeur : {e}")
except Exception as e:
    print(f"Erreur inconnue : {e}")
else:
    print("Succès")
finally:
    print("Nettoyage...")

10.2 Exception personnalisée

class ErreurApplicative(Exception):
    def __init__(self, message, code):
        super().__init__(message)
        self.code = code

try:
    raise ErreurApplicative("Erreur métier", 1001)
except ErreurApplicative as e:
    print(f"Code {e.code}: {e}")

11. Fichiers et entrées/sorties

11.1 Ouverture

fichier = open('fichier.txt', 'r', encoding='utf-8')
# modes : 'r' (lecture), 'w' (écriture), 'a' (ajout), '+' (lecture+écriture)

11.2 Lecture

with open('exemple.txt', 'r') as f:
    contenu = f.read()
    
with open('exemple.txt', 'r') as f:
    for ligne in f:
        print(ligne.strip())

with open('grosfichier.bin', 'rb') as f:
    morceau = f.read(1024)

11.3 Écriture

with open('sortie.txt', 'w') as f:
    f.write("Bonjour le monde!\n")
    f.write("Deuxième ligne")

lignes = ["Première", "Deuxième", "Troisième"]
with open('sortie.txt', 'w') as f:
    f.writelines(l + '\n' for l in lignes)

11.4 Pointeur de fichier

with open('data.txt', 'r+') as f:
    pos = f.tell()
    donnees = f.read(10)
    f.seek(0)
    f.write("Texte inséré")
    f.seek(0, 2)
    f.write("\nAjout en fin")

11.5 Contexte with

try:
    with open('fichier.txt', 'r') as f:
        donnees = f.read()
except FileNotFoundError:
    print("Fichier introuvable")

12. Opérations sur les répertoires

import os
import shutil

os.mkdir('nouveau_dossier')
os.makedirs('chemin/vers/sous/repertoire', exist_ok=True)

os.rmdir('dossier_vide')
shutil.rmtree('dossier_avec_contenu')

for racine, dossiers, fichiers in os.walk('.'):
    print(f"Racine : {racine}")
    print(f"Sous-dossiers : {dossiers}")
    print(f"Fichiers : {fichiers}")

infos = os.stat('fichier.txt')
print(f"Taille : {infos.st_size} octets")
print(f"Modifié : {infos.st_mtime}")

13. Sérialisation JSON

import json

donnees = {"nom": "Alice", "age": 30, "notes": [90, 85, 95]}
with open('donnees.json', 'w') as f:
    json.dump(donnees, f, indent=2)

with open('donnees.json', 'r') as f:
    charge = json.load(f)
    print(charge['nom'])  # Alice

Étiquettes: Python Condition boucle String List

Publié le 13 juillet à 19h20