En effet plutôt que de le relire à chaque fois il vaut mieux ouvrir le fichier et "l'enregistrer" une bonne fois pour toutes dans un tableau:
articles=fichier.readlines()
Ensuite l'article 1 correspond à articles[3] (puisqu'il y a un décalage), donc il suffit de découper ce tableau en ne gardant que les éléments à partir du troisième. Pour cela il faut utiliser le code suivant:
Ensuite, tu as une liste articles de la forme ["article1...", "article2...", ..., "article n"]. Puisque l'indexage des tableaux commence à 0 en python, l'article 1 correspond à articles[0], et en plus si l'utilisateur demande l'article 0 ça fait un cas de plus à gérer; on a donc intérêt à rajouter l'élément "IL N'Y A PAS D'ARTICLE 0" au début de la liste: 2 avantages à cela: le cas de l'article 0 n'est plus à gérer, et cela décale le tableau de manière à ce que l'article 1 corresponde à articles[1].
Tout cela réuni donne:
1 2 3 4 5 6
| articles=["IL N'Y A PAS D'ARTICLE 0"]+fichier.readlines()[3:]
recommencer=True
while recommencer:
demande=int(input("Je veux l'article numéro:"))
print(articles[demande])
recommencer=input("Voulez-vous lire un autre article (oui/non) ")=="oui" |
(Remarque: le code a==b renvoie True si a et b sont égaux, donc ici si l'utilisateur rentre oui, et renvoie False dans tous les autres cas)
Après il reste à gérer l'ouverture du fichier (en mode lecture) avec la fonction open; il reste aussi à gérer le cas ou le nombre entré par l'utilisateur est plus grand que le nombre d'articles...
Bon courage !
Partager