# TP 25 correction : Fichiers texte
# BCPST1B 2025-2026
# Lycée Hoche, Versailles
# L.-C. LEFÈVRE

#%% test de lecture

# Windows : l'option encoding="utf-8" est nécessaire (problèmes d'accents)
f = open("test.txt", "r", encoding="utf-8")
for s in f:
    print(s.strip())
f.close()

#%% test d'écriture (lancer plusieurs fois)

f = open("coucou.txt", "w")
f.write("Coucou !\n")
f.close()

g = open("bonjour.txt", "a")
g.write("Bonjour !\n")
g.close()

#%% exercice 2

f = open("noms.txt", "r", encoding="utf-8")
for s in f:
    print("Bonjour", s.strip(), "et bienvenue en BCPST1B !")
f.close()

#%% exercice 3

def cherche(m):
    f = open("dictionnaire.txt", "r", encoding="utf-8")
    for s in f:
        if m == s.strip():
            f.close()
            return True
    f.close()
    return False

print(cherche("informatique"))
print(cherche("informatik"))
print(cherche("inphormatique"))

#%% exercice 4

L = [0] * 10
f = open("pi.txt", "r", encoding="utf-8")
# boucle sur toutes les lignes
for s in f:
    # boucle sur la ligne de longueur 100
    for i in range(100):
        # x est la décimale lue, un nombre entre 0 et 9
        x = int(s[i])
        L[x] = L[x] + 1
f.close()
print(L)

#%% exercice 5

# classique classique !
def fibonacci(n):
    a = 0
    b = 1
    f = open("fibonacci.txt", "w")
    for i in range(n):
        print(a, file=f)
        c = b
        b = a + b
        a = c
    f.close()

# test (aller voir le fichier créé)
fibonacci(100)

#%% exercice 6

# lancer plusieurs fois et aller voir le fichier créé
import random as rd
f = open("dés.txt", "a")
for _ in range(10):
    x = rd.randint(1, 6)
    f.write(str(x) + " ")
f.write("\n")
f.close()

#%% exercice 7

def bienvenue(n, nom):
    # le nom du fichier, dans le dossier lettres (qui doit exister)
    m = f"lettres/bienvenue-{n:02d}.txt"
    f = open(m, "w")
    # le message
    message = f"Bonjour {nom},\n"\
        "Félicitations pour votre admission au lycée Hoche. Nous vous souhaitons la bienvenue dans la classe de BCPST1B et espérons que vous vous y plairez.\n"\
        "Le Lycée Hoche\n"
    f.write(message)
    f.close()

#%% exercice 8

# boucle en comptant les noms
n = 1
g = open("noms.txt", "r", encoding="utf-8")
for s in g:
    nom = s.strip()
    bienvenue(n, nom)
    n = n + 1
g.close()

#%% exercice 9

# reprise, avec un peu plus d'information
def bienvenue(n, nom, prenom, etablissement_origine):
    m = f"lettres-CSV/bienvenue-{n:02d}.txt"
    f = open(m, "w")
    message = f"{nom} {prenom}, élève de {etablissement_origine},\n"\
        "Félicitations pour votre admission au lycée Hoche. Nous vous souhaitons la bienvenue dans la classe de BCPST1B et espérons que vous vous y plairez.\n"\
        "Le Lycée Hoche\n"
    f.write(message)
    f.close()

import csv
n = 1
f = open("liste.csv", "r", encoding="utf-8")
g = csv.DictReader(f)
for x in g:
    bienvenue(n, x["nom"], x["prenom"], x["etablissement_origine"])
    n = n + 1
f.close()
