Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 22/04/2022 dans toutes les zones

  1. julesx

    Csv titanic programme

    Bonsoir, Après différents essais, j'ai constaté, sans pouvoir l'expliquer, cf. mon message précédent, qu'il fallait ré-initiaiiser le fichier .CSV avant chaque appel. Sinon, à la procédure suivante, c'est comme si ce fichier n'existait plus. Un spécialiste ? En tout cas, ce script avec 2 définitions de fonctions donne les résultats attendus. import csv def survivantsEmbarques(): compteurC = 0 compteurSurvivant = 0 for i in titanic: if i['Embarked'] == 'C' : if i['Survived'] == '1': compteurC += 1 return compteurC def survivantsClasse(classe): CClasse = 0 #on crées 2 compteur CSurviant = 0 for i in titanic: if i['Pclass'] == classe: CClasse += 1 if i['Survived'] == '1': CSurviant += 1 return CSurviant/CClasse*100 # ouverture du fichier csv fichier=open('titanic.csv') titanic = csv.DictReader(fichier) fichier.close print ("Le nombre de survivant ayant embarqués à Cherbourg est de ",survivantsEmbarques()) # ouverture du fichier csv fichier=open('titanic.csv') titanic = csv.DictReader(fichier) fichier.close print("Le nombre de survivant par classe est de ",int(survivantsClasse('1'))) Il y a surement une possibilité de passer outre à l'ouverture multiple, mais ça dépasse mes compétences ! Bonne soirée.
    1 point
  2. julesx

    Csv titanic programme

    Bonjour, Inutile de citer l'intégralité de mes messages, ça surcharge pour rien ta réponse. Ne le fais que si tu as quelque chose à commenter dedans, mais même dans ce cas, ne cite que la partie incriminée. Pour en revenir à ton problème, a priori, il vient de l'instruction if i['Pclass'] == 'classe':, il faut enlever les guillemets if i['Pclass'] == classe: mais les mettre dans l'appel print(survivantsClasse('1')) par exemple. Mais ! J'ai fait des essais et ça marche bien avec le script suivant import csv # ouverture du fichier csv fichier=open('titanic.csv', 'r') titanic = csv.DictReader(fichier) fichier.close def survivantsClasse(classe): """ classe -- '1' , '2' ou '3' renvoie la proportion de survivants de la classe demander . """ CClasse = 0 #on crées 2 compteur CSurviant = 0 for i in titanic: if i['Pclass'] == classe: CClasse += 1 if i['Survived'] == '1': CSurviant += 1 return (CSurviant/CClasse*100) print(survivantsClasse('1')) Par contre, si je rajoute la partie précédente , ça ne va plus. Pareil, dans le script avec "with", ça ne fonctionne pas non plus. Pour faire cette partie, tu la mets à la suite de l'autre ou tu crées un nouveau script ? Cela dit, je suis loin d'être un spécialiste de Python, je bricole, quand ça marche, c'est bien, mais quand il y a un problème un peu compliqué, je ne sais pas l'expliquer, donc pas le résoudre.
    1 point
×
×
  • Créer...
spam filtering
spam filtering