On souhaite réaliser un dictionnaire Français / Anglais, afin que l'utilisateur demande un mot en français et l'ordinateur répond par la traduction anglaise du mot.
Le Titanic appareille de Southampton (Angleterre) le mercredi 10 avril à 12 h 15 .
Six heures plus tard, à 18 h 15, il fait escale dans la rade de Cherbourg. Il y débarque
24 passagers et en embarque 274, amenés par les transbordeurs Nomadic et Traffic. Il appareille à 20 h 10.
Le Titanic fait route vers l'Irlande. Il arrive à Queenstown (aujourdhui Cobh) le 11 avril à 11 h 30. Il débarque 7 passagers et en embarque 120. À 13 h 30, le paquebot appareille et entame sa traversée de l'Atlantique vers New York.
Le 14 avril, à 23 h 40 (heure locale, GMT-3), il percute un iceberg au large de Terre-Neuve. Il sombre le 15 avril à 2 h 20, causant la mort de 1 524 personnes.
(source wikimanche)
Question 1 : des données
Ce fichier titanic.csv donne des informations sur un certain nombre de passagers du Titanic.
Il s'agit d'un fichier de données avec la virgule comme séparateur et la première ligne comme descripteurs.
- Ouvrez ce fichier avec LibreOffice Calc
- Identifier les descripteurs :
- Classe (il y en avait 3, voir ici)
- Survivant
- Lieu d'embarquement
Question 2 : import du fichier avec Python
Le script ci-dessous, ouvre le fichier 'titanic.csv' et stocke chaque ligne sous forme de dictionnaire
(avec les descripteurs comme clés) dans une liste.
import csv
reader = csv.DictReader(open('titanic.csv', 'r'))
titanic = []
for row in reader:
titanic.append(dict(row))
- Exécutez ce code
- Rajoutez ce qu'il faut pour :
- Connaître le nombre de passager de ce fichier
- Vérifier que le passager 54 est :
Faunthorpe, Mrs. Lizzie (Elizabeth Anne Wilkinson) agée de 29 ans,
embarquée à Southampton en classe 2 et a survécu au naufrage
Connaître le nombre de passager correspond à quoi concernant le dictionnaire ?
import csv
reader = csv.DictReader(open('titanic.csv', 'r'))
titanic = []
for row in reader:
titanic.append(dict(row))
print(len(titanic))
print(titanic[53])
Ce qui nous donne cela :
891
{'PassengerId': '54', 'Survived': '1', 'Pclass': '2', 'Name': 'Faunthorpe, Mrs. Lizzie (Elizabeth Anne Wilkinson)', 'Sex': 'female', 'Age': '29', 'SibSp': '1', 'Parch': '0', 'Ticket': '2926', 'Fare': '26', 'Cabin': '', 'Embarked': 'S'}
Question 3 : déterminer le nombre de survivant
- Écrire un script qui détermine le nombre de survivant
Attention...
- La valeur de la clé 'Survived' est de type string
- Pour l'atteindre on utilise l'instruction :
titanic[n° de ligne]['Survived']
- Une piste ?
- Solution 1
- Solution 2
On pourra utiliser une variable compteur qui ajoute 1 si on trouve un survivant...
En parcourant la liste ( indice )et en testant la clé 'Survived' avec un compteur on trouve 342 :
import csv
reader = csv.DictReader(open('titanic.csv', 'r'))
titanic = []
for row in reader:
titanic.append(dict(row))
compteur=0
for i in range(0,len(titanic),1):
if titanic[i]['Survived']=='1':
compteur=compteur+1
print(compteur)
Via un simple parcours de liste
import csv
reader = csv.DictReader(open('titanic.csv', 'r'))
titanic = []
for row in reader:
titanic.append(dict(row))
compteur=0
for ligne in titanic:
if ligne['Survived']=='1':
compteur=compteur+1
print(compteur)
Question 4 : en complément...
- Écrire un programme qui affiche le pourcentage de survivants par classe
- Écrire un programme qui donne le nombre de survivants embarqués à Cherbourg
Vous pouvez télécharger ici le fichier à compléter pour cette partie.
On dispose du dictionnaire suivant, dans lequel chaque lettre de l'alphabet
(en majuscules) est associé au nombre de points qui lui est attribué au scrabble :
scrabble = {'A': 1, 'B': 3, 'C': 3, 'D': 2, 'E': 1, 'F': 4, 'G': 2, 'H': 4,
'I': 1, 'J': 8, 'K': 10, 'L': 1, 'M': 2, 'N': 1, 'O': 1,
'P': 3, 'Q': 8, 'R': 1, 'S': 1, 'T': 1, 'U': 1, 'V': 4,
'W': 10, 'X': 10, 'Y': 10, 'Z': 10}
Question 1
Complétez la définition de la fonction valeur_mot()
qui prend en paramètre
une chaîne de caractères constituée de lettres majuscules et qui renvoie le nombre
de points que rapporterait ce mot au scrabble.
def valeur_mot(chaine):
"""
chaine – str, une chaîne de caractères constituées de lettres majuscules
Sortie: int – nombre de points de ce mot au scrabble
>>> valeur_mot("PYTHON")
20
>>> valeur_mot("JAVASCRIPT")
24
"""
# TODO
Question 2
Complétez la définition de la fonction meilleure_lettre()
qui prend en paramètre un
tableau dont les éléments sont des lettres majuscules et qui renvoie celle ayant la plus forte valeur au scrabble.
En cas d'égalité, c'est la lettre ayant l'indice le plus élevé dans le tableau qui est renvoyée.
def meilleure_lettre(tab):
"""
tab – list, tableau NON VIDE de caractères
Sortie: str – caractère de tab ayant la plus forte valeur au scrabble
En cas d'égalité, caractère ayant l'indice le plus grand dans tab
>>> meilleure_lettre(['B', 'A', 'K', 'D'])
'K'
>>> meilleure_lettre(['A', 'E', 'I'])
'I's
"""
# TODO