Gabyder Posté(e) le 31 octobre 2020 Signaler Share Posté(e) le 31 octobre 2020 Bonjour à tous . J'ai un exercice en python et je ne le comprends pas. Je vous remerci de m'aider. -Créez un fichier texte que vous utiliserez comme base de données, • La base de données contiendra les noms des clients d'un site marchand. -Sur une connaissance pour chaque client de son nom, son prénom, son genre, son âge et son adresse. • Le programme sera disponible pour les clients de la base de donnés dans une source d'âge minimum ou maximum, qui indique les noms et prénoms des clients correspondants et leurs noms (Voir exemples page suivante). • On souhaite une gestion des erreurs de frappes. Si sur frappe une lettre au lieu d'un chiffre, programmez-le ne doit pas «planter» (Voir exemples page suivante). Aide: utilisez la fonction "age.isdigit ()". A Réaliser l'algorithme et ensuite le programme en Python Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Leonarddoo Posté(e) le 2 novembre 2020 Signaler Share Posté(e) le 2 novembre 2020 Salut, tu as déjà commencé à faire quelque chose ou rien du tout ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gabyder Posté(e) le 2 novembre 2020 Auteur Signaler Share Posté(e) le 2 novembre 2020 il y a 5 minutes, Leonarddoo a dit : Salut, tu as déjà commencé à faire quelque chose ou rien du tout ? Oui j'ai commencer le début du programme , mais je suis bloquer ensuite (je ne sais pas si c'est correct): monfichier= open('site.txt','r') contenu= monfichier.read() a=int(input("Indiquer l'age: ")) t=1 for i in range(t) : print("") print("-La liste des personnes ayant à ",a," ans (taper 1)") print("-La liste des personnes dont l'age est supérieur à ",a," ans (taper 2)") print("-La liste des personnes dont l'age est inférieur à ",a," ans (taper 3)") x=int(input("Votre choix est le numéro: ")) for age in monfichier: mot=age.isdigit(x) if (a==mot[4]): contenu+=mot[0]+ " "+mot[1]+ " "+mot[2]+ " "+mot[3]+ " "+mot[4] Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 3 novembre 2020 E-Bahut Signaler Share Posté(e) le 3 novembre 2020 Bonjour, Leonarddoo me confirmera ou m'infirmera, mais, pour moi, l'introduction des données d'age et de choix ne sont pas corrects. En postulant que l'age doit être compris entre deux valeurs extrêmes, moi, j'écrirais pour cette partie : age="a" while not age.isdigit() or age.isdigit and (int(age)<20 or int(age)>60): age=str(input("Indiquer l'age: ")) age=int(age) print("\n Indiquer si vous voulez trouver :\n", "- La liste des personnes ayant",age,"ans (taper 1)\n", "- La liste des personnes dont l'age est supérieur à",age,"ans (taper 2)\n", "- La liste des personnes dont l'age est inférieur à",age,"ans (taper 3)\n") numero="n" while not numero.isdigit() or numero.isdigit and (int(numero)<=0 or int(numero)>=4): numero=str(input("Votre choix est le numéro :")) numero=int(numero) Je ne peux pas aller plus loin car je ne sais pas comment est structuré ton fichier texte. Pour que quelqu'un puisse t'aider, il faudrait que tu le copies dans ton fil. Gabyder a réagi à ceci 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gabyder Posté(e) le 3 novembre 2020 Auteur Signaler Share Posté(e) le 3 novembre 2020 (modifié) Il y a 1 heure, julesx a dit : Bonjour, Leonarddoo me confirmera ou m'infirmera, mais, pour moi, l'introduction des données d'age et de choix ne sont pas corrects. En postulant que l'age doit être compris entre deux valeurs extrêmes, moi, j'écrirais pour cette partie : age="a" while not age.isdigit() or age.isdigit and (int(age)<20 or int(age)>60): age=str(input("Indiquer l'age: ")) age=int(age) print("\n Indiquer si vous voulez trouver :\n", "- La liste des personnes ayant",age,"ans (taper 1)\n", "- La liste des personnes dont l'age est supérieur à",age,"ans (taper 2)\n", "- La liste des personnes dont l'age est inférieur à",age,"ans (taper 3)\n") numero="n" while not numero.isdigit() or numero.isdigit and (int(numero)<=0 or int(numero)>=4): numero=str(input("Votre choix est le numéro :")) numero=int(numero) Je ne peux pas aller plus loin car je ne sais pas comment est structuré ton fichier texte. Pour que quelqu'un puisse t'aider, il faudrait que tu le copies dans ton fil. Bonjour, c'est tres gentil de m'aider! Et j'ai une question pourquoi avez-vous mis l'age entre 20 et 60 ans? Car l'age peut etre 5 ans comme 80 ans. Voici comment est constituer mon fichier texte. prénom, nom, sexe, age, et adresse Modifié le 3 novembre 2020 par Gabyder Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 3 novembre 2020 E-Bahut Signaler Share Posté(e) le 3 novembre 2020 J'ai mis "au pif" entre 20 et 60 ! C'était juste pour avoir une fourchette, pour éviter des réponses comme -50 ou +1000. Tu mets évidemment ce que tu veux. Tu as essayé mon script ? Par contre, je ne suis qu'un "amateur" dans ce domaine. Comment est-ce qu'on structure les données du fichier texte ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gabyder Posté(e) le 3 novembre 2020 Auteur Signaler Share Posté(e) le 3 novembre 2020 à l’instant, julesx a dit : J'ai mis "au pif" entre 20 et 60 ! C'était juste pour avoir une fourchette, pour éviter des réponses comme -50 ou +1000. Tu mets évidemment ce que tu veux. Tu as essayé mon script ? Par contre, je ne suis qu'un "amateur" dans ce domaine. Comment est-ce qu'on structure les données du fichier texte ? votre script pour le début du programme est super , il empêche le programme de planter si l'on met par exemple "p" à la place de 25 . Pour le fichier texte nous mettons les données les une après les autres et nous sautons d'une ligne pour un autre individu. Mais c'est la suite de l'exercice qui me pose problème , je ne sais pas comment écrire le programme pour qu'il affiche les personnes qui son concernés par l'âge demander. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 3 novembre 2020 E-Bahut Signaler Share Posté(e) le 3 novembre 2020 il y a 7 minutes, Gabyder a dit : votre script pour le début du programme est super , il empêche le programme de planter si l'on met par exemple "p" à la place de 25 . C'est demandé dans l'énoncé. J'ai un peu ramé pour trouver la bonne démarche. Cela dit, il y a peut-être plus simple, mais, comme dit, je ne suis pas spécialiste. il y a 9 minutes, Gabyder a dit : Pour le fichier texte nous mettons les données les une après les autres et nous sautons d'une ligne pour un autre individu. Et comment on identifie les différents termes ? Parce que, pour moi, c'est là le problème, il faut "sortir" de chaque ligne de données la partie age pour la comparer à la valeur choisie. Ensuite, c'est juste une histoire de if, elif, else pour les trois choix possibles. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gabyder Posté(e) le 3 novembre 2020 Auteur Signaler Share Posté(e) le 3 novembre 2020 il y a 35 minutes, julesx a dit : C'est demandé dans l'énoncé. J'ai un peu ramé pour trouver la bonne démarche. Cela dit, il y a peut-être plus simple, mais, comme dit, je ne suis pas spécialiste. Et comment on identifie les différents termes ? Parce que, pour moi, c'est là le problème, il faut "sortir" de chaque ligne de données la partie age pour la comparer à la valeur choisie. Ensuite, c'est juste une histoire de if, elif, else pour les trois choix possibles. Merci !!j'essaierais de faire avec ceci Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 3 novembre 2020 E-Bahut Signaler Share Posté(e) le 3 novembre 2020 OK, si tu veux, en cas de problème, poste ton script. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut Denis CAMUS Posté(e) le 3 novembre 2020 E-Bahut Signaler Share Posté(e) le 3 novembre 2020 Bonsoir, Ça marcherait pas en utilisant des listes et des indices ? L'âge serait l'indice [3]. http://python.physique.free.fr/listes_et_tableaux.html Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Leonarddoo Posté(e) le 3 novembre 2020 Signaler Share Posté(e) le 3 novembre 2020 Me revoilà, bon ba j'ai vu que vous l'avez aider Mais ouai si jamais tu as re-besoin d'aide on est là mais le mieux c'est que tu montre ce que tu as déjà fait et là où tu bloque. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 4 novembre 2020 E-Bahut Signaler Share Posté(e) le 4 novembre 2020 Il y a 13 heures, Denis CAMUS a dit : Ça marcherait pas en utilisant des listes et des indices ? Bonjour Denis, J'avais aussi envisagé cette possibilité. La seule chose qui me chiffonnait, c'est qu'on part d'un fichier texte, qu'il faut commencer à transformer en liste et je me demandais si l'élève avait une "solution miracle" car l'énoncé parle aussi de "base de donnée". Bon, on verra bien s'il y a un retour. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 4 novembre 2020 E-Bahut Signaler Share Posté(e) le 4 novembre 2020 @Denis CAMUS Juste pour info, ci-joint ce que ça donnerait avec une liste de listes fichier.txt Gabyder a réagi à ceci 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gabyder Posté(e) le 5 novembre 2020 Auteur Signaler Share Posté(e) le 5 novembre 2020 (modifié) Il y a 22 heures, julesx a dit : @Denis CAMUS Juste pour info, ci-joint ce que ça donnerait avec une liste de listes fichier.txt 1 Ko · 3 téléchargements malheureusement on doit utiliser un fichier texte Le 03/11/2020 à 21:49, Leonarddoo a dit : Me revoilà, bon ba j'ai vu que vous l'avez aider Mais ouai si jamais tu as re-besoin d'aide on est là mais le mieux c'est que tu montre ce que tu as déjà fait et là où tu bloque. Le 03/11/2020 à 21:47, Denis CAMUS a dit : Bonsoir, Ça marcherait pas en utilisant des listes et des indices ? L'âge serait l'indice [3]. http://python.physique.free.fr/listes_et_tableaux.html Bonjour à tous! J'ai essayer de faire la suite mais je n'y suis pas parvenu. J'ai essayé ceci mais rien ne s'affiche: Auriez-vous des solution? monfichier= open('site.txt','r') contenu= monfichier.read() age="a" while not age.isdigit() or age.isdigit and (int(age)<10 or int(age)>90): age=str(input("Indiquer l'age: ")) age=int(age) print("\n Indiquer si vous voulez trouver :\n", "- La liste des personnes ayant",age,"ans (taper 1)\n", "- La liste des personnes dont l'age est supérieur à",age,"ans (taper 2)\n", "- La liste des personnes dont l'age est inférieur à",age,"ans (taper 3)\n") numero="n" while not numero.isdigit() or numero.isdigit and (int(numero)<=0 or int(numero)>=4): numero=str(input("Votre choix est le numéro :")) numero=int(numero) if numero==1: for ligne in monfichier: mot=ligne.split("*") if age==mot[3]: print(mot[0]+" "+mot[1]+" a "+str(mot[3])+" ans") elif numero==2: for ligne in monfichier: mot=ligne.split("*") if mot[3]<age: print(mot[0]+" "+mot[1]+" a "+str(mot[3])+" ans") else: for ligne in monfichier: mot=ligne.split("*") if mot[3]>age: print(mot[0]+" "+mot[1]+" a "+str(mot[3])+" ans") site.txt Modifié le 5 novembre 2020 par Gabyder Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 5 novembre 2020 E-Bahut Signaler Share Posté(e) le 5 novembre 2020 . Gabyder a réagi à ceci 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gabyder Posté(e) le 5 novembre 2020 Auteur Signaler Share Posté(e) le 5 novembre 2020 (modifié) il y a 43 minutes, julesx a dit : Bonjour, Pour moi, ça ne marche pas pour les raisons suivantes. * Il faut travailler avec la variable contenu, pas avec monfichier * Python ne sait pas quoi faire avec l'instruction for ligne in monfichier, donc, a fortiori, pas avec mot tel que tu le définis. Je ne sais pas si ce qui suit est le plus simple, mais cela a l'avantage de fonctionner (à noter que tu as fait une inversion de signes < et > dans les choix) monfichier= open('site.txt','r') contenu= monfichier.read() ligne=contenu.split("\n") crée une liste de lignes age="a" while not age.isdigit() or age.isdigit and (int(age)<10 or int(age)>90): age=str(input("Indiquer l'age: ")) age=int(age) print("\n Indiquer si vous voulez trouver :\n", "- La liste des personnes ayant",age,"ans (taper 1)\n", "- La liste des personnes dont l'age est supérieur à",age,"ans (taper 2)\n", "- La liste des personnes dont l'age est inférieur à",age,"ans (taper 3)\n") numero="n" while not numero.isdigit() or numero.isdigit and (int(numero)<=0 or int(numero)>=4): numero=str(input("Votre choix est le numéro :")) numero=int(numero) if numero==1: for i in range(len(ligne)): mot=ligne.split(" ") transforme chaque ligne en liste de mots if age==int(mot[3]): comme mot[3] est un str, on le transforme en int print(mot[0]+" "+mot[1]+" a "+str(mot[3])+" ans") elif numero==2: for i in range(len(ligne)): mot=ligne.split(" ") transforme chaque ligne en liste de mots if int(mot[3])>age: comme mot[3] est un str, on le transforme en int print(mot[0]+" "+mot[1]+" a "+str(mot[3])+" ans") else: for i in range(len(ligne)): mot=ligne.split(" ") transforme chaque ligne en liste de mots if int(mot[3])<age: comme mot[3] est un str, on le transforme en int print(mot[0]+" "+mot[1]+" a "+str(mot[3])+" ans") Tu regardes et tu commentes. j'ai compris la démarche , logique et mes erreurs. Mais quand je lance le programme et arrive après la demande du nombre. Sa affiche Indiquer l'age: 25 Indiquer si vous voulez trouver : - La liste des personnes ayant 25 ans (taper 1) - La liste des personnes dont l'age est supérieur à 25 ans (taper 2) - La liste des personnes dont l'age est inférieur à 25 ans (taper 3) Votre choix est le numéro :1 line 19, in <module> mot=ligne.split(" ") AttributeError: 'list' object has no attribute 'split' >>> Modifié le 5 novembre 2020 par Gabyder Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 5 novembre 2020 E-Bahut Signaler Share Posté(e) le 5 novembre 2020 Oui, l'éditeur supprime les éléments le i entre crochets et considère cette écriture comme le passage en italique pour la suite. Du coup, je supprime le script précédent. Je te joins un fichier texte, en espérant que ça résout le problème.script.txt Gabyder a réagi à ceci 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gabyder Posté(e) le 5 novembre 2020 Auteur Signaler Share Posté(e) le 5 novembre 2020 il y a 12 minutes, julesx a dit : Oui, l'éditeur supprime les éléments le i entre crochets et considère cette écriture comme le passage en italique pour la suite. Du coup, je supprime le script précédent. Je te joins un fichier texte, en espérant que ça résout le problème.script.txt D'accord , problème résolu . En tout cas merci beaucoup de m'avoir aidé . Bonne soirée! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 5 novembre 2020 E-Bahut Signaler Share Posté(e) le 5 novembre 2020 OK, bonne soirée également. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gabyder Posté(e) le 8 novembre 2020 Auteur Signaler Share Posté(e) le 8 novembre 2020 Le 05/11/2020 à 18:21, julesx a dit : OK, bonne soirée également. Bonsoir !desolé de renvoyer un message mais j'avais une petite question sur le programme , comment code ton la dernière ligne du programme , celle qui rappelle le nombre de personnes concerné? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 8 novembre 2020 E-Bahut Signaler Share Posté(e) le 8 novembre 2020 A priori, je ne pense pas qu'il y a une information dans le script existant qui correspond au décompte. Donc, pour moi, il faut rajouter dans chacun des 3 cas un compteur qu'on initialise à zéro au départ et qu'on incrémente à chaque fois qu'une réponse est bonne, du style if int(mot[3])>age: print(mot[0]+" "+mot[1]+" a "+str(mot[3])+" ans") compteur=compteur +1 et, à la fin, on affiche sa valeur avec le message correspondant. Tu essaies et, au cas où il y aurait un problème, tu reviens sur ce fil. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gabyder Posté(e) le 8 novembre 2020 Auteur Signaler Share Posté(e) le 8 novembre 2020 il y a 4 minutes, julesx a dit : A priori, je ne pense pas qu'il y a une information dans le script existant qui correspond au décompte. Donc, pour moi, il faut rajouter dans chacun des 3 cas un compteur qu'on initialise à zéro au départ et qu'on incrémente à chaque fois qu'une réponse est bonne, du style if int(mot[3])>age: print(mot[0]+" "+mot[1]+" a "+str(mot[3])+" ans") compteur=compteur +1 et, à la fin, on affiche sa valeur avec le message correspondant. Tu essaies et, au cas où il y aurait un problème, tu reviens sur ce fil. c'est ce que j'avais fait mais quand je lance sa ne donne pas le rendu voulu, sa affiche comme ceci: Votre choix est le numéro :1 Louis Douet a 25 ans Il y a 1 personnes dans la liste ayant 25 ans. Loic Peron a 25 ans Il y a 2 personnes dans la liste ayant 25 ans. au lieu de: Louis Douet a 25 ans Loic Peron a 25 ans Il y a 2 personnes dans la liste ayant 25 ans. erreur d'espaces excusez moi jai trouver l'erreur Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 8 novembre 2020 E-Bahut Signaler Share Posté(e) le 8 novembre 2020 Donc, c'est bon ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gabyder Posté(e) le 8 novembre 2020 Auteur Signaler Share Posté(e) le 8 novembre 2020 il y a 32 minutes, julesx a dit : Donc, c'est bon ? oui c'est bon , merci! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.