Saisie blindée. Écrire dans un fichier ?

Une info pour vos choix d’orientation, pour celles et ceux qui ambitionneraient une prépa, en cliquant ici.

Correction pendu version Marchant – sera présenté mercredi :

  • avec une liste de listes pour le dessin (piqué à Grégouze le boss),
  • avec une « saisie blindée » de caractères,
    def saisie_blindee_caractere(texte_a_afficher):
        saisie = input(texte_a_afficher)
        while True :
            if len(saisie) == 1 and ('a' <= saisie <= 'z' or 'A' <= saisie <= 'Z'):
                return saisie.upper() # en majuscule
            elif saisie in ['é', 'è', 'ê']:
                return 'E'
            print("Vous n'avez pas saisi un caractère valide")
            saisie = input(texte_a_afficher)
    
    # lettre = saisie_blindee_caractere("Saisis une lettre : ")
    # print("Tu as saisi", lettre)
  • avec un fichier de mots "liste_mots_maj.txt" dans le même dossier : comment lire un fichier ?
    from random import choice
    
    def choix_mot():
        # ouverture du fichier
        with open("liste_mots_maj.txt", 'r') as f:
            # 'r' comme "read" car ouvert en lecture
    
            # on lit tout et le met dans un texte : contenu
            contenu = f.read()
            # on separe en lignes avec le '\n' comme separateur
            # la methode .split() renvoie une liste
            liste = contenu.split(sep = '\n')
    
            # initialisation liste vide
            liste_acceptee = []
    
            # on parcourt la liste et on prend si > 3 caracteres
            for mot in liste :
                if len(mot) > 3:
                    liste_acceptee.append(mot)
    
            # fermeture du fichier
            f.close()
    
            reponse = choice(liste_acceptee)
    
        return reponse

et pour le carnet d’adresse ?

  • saisie « blindée » d’un âge ?
    def saisie_age_entier(texte):
        """saisie d'un âge entier en gérant les erreurs de saisie"""
    
        while True:  # boucle "infinie", on n'en sort qu'avec break
            nbre = input(texte)
            # On tente la conversion en entier
            try:
                nbre = int(nbre)
            except ValueError:  # si la conversion n'a pas fonctionne
                print("Vous n'avez pas saisi de nombre entier")
                continue  # retour dans la boucle
            if 0 < nbre < 123 : # pas plus que Jeanne Calment
                break  # ok : sortie de boucle
            else :
                print(nbre, "ne correspond pas à un âge valide")
        return nbre
  • écrire un fichier csv pour l’enregistrer et lire un fichier csv :
    un fichier .csv est un fichier texte où les lignes représentent des champs ou colonnes séparées par des points-virgules ';'. Exemple de contact.csv :

    Pierre;42;06.07.08.09.10;3 allee des bois LILLE
    Marie;37;06.10.09.08.07;42 rue des fraises STRASBOURG
    John Malkovich;65;01.02.03.04.05;HOLLYWOOD

Essayer d’implémenter la lecture du csv au départ du programme dans notre carnet d’adresses d’ici mercredi !

2 réflexions au sujet de « Saisie blindée. Écrire dans un fichier ? »

  1. Bonjour, comment peut on ajouter le nouveau contact dans le document .txt tout en gardant les précédents ?
    A chaque nouveau contact, il écrase tout les précédents…

    Merci d’avance

N'hésitez-pas à poser une question, ou faire avancer le schmilblick

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.