Skip to content
Snippets Groups Projects
Commit 248bd2d9 authored by alexiasch's avatar alexiasch
Browse files

python actors script

parent 7d3fd634
Branches
No related merge requests found
"""
Exercice noté 1
Entrée
Fichier movie_metadata2.csv
Fonctionnement
**Veuillez entrer le nom d'un acteur ou d'une actrice :** Natalie
Portman
Natalie Portman a joué avec les 17 personnes suivantes :
Chris Hemsworth
Christopher Lee
Eddie Marsan
Eva Amurri Martino
Greta Gerwig
Jake Gyllenhaal
James Frain
Joseph Gordon-Levitt
Julia Roberts
Liam Neeson
Martin Short
Mila Kunis
Noah Emmerich
Norah Jones
Philip Seymour Hoffman
Scarlett Johansson
Zooey Deschanel
**Veuillez entrer le nom d'un acteur ou d'une actrice :** Nataly
Portman
Nom inconnu !
Contraintes
La lecture du fichier devra se faire avant la demande du nom de l’acteur ou
de l’actrice et l’ensemble des informations du fichier devra être stocké dans
une structure de données appropriée. Aucun accès au fichier ne devra se faire
après avoir récupéré le nom de l’acteur ou de l’actrice.
Le programme devra fonctionner quel que soit le nom donné par l’utilisateur.
Le programme utilisera au moins un dictionnaire et un ensemble.
Les compréhensions devront être privilégiées pour remplacer les boucles
“classiques” dès que possible.
"""
#initialisation de la liste qui contiendra les tuples de duo d'acteurs.
act = []
#Récupération des données :
with open('input/movie_metadata2.csv', 'r', encoding='utf-8') as f:
#on ignore la 1e ligne qui contient les informations de champ
f.readline()
#lecture du fichier ligne par ligne et définition des colonnes
for line in f:
colonne = line.rstrip().split(';')
#les acteurs sont placés par duo dans des tuples et ajoutés dans la liste globale 'act':
act.extend(((colonne[4], colonne[5]),(colonne[5], colonne[4])))
#Après récupération des données :
#Compréhension de dictionnaire avec en clé tous les éléments en position 0 de chaque duo (donc tous les noms des acteurs) et
#en valeur une compréhension de set imbriqué qui contient le nom du 2e acteur de chacun des duos en correspondance avec l'acteur-clé de la 1e boucle.
dico_acteur = {act[i][0]:{act[y][1] for y in range(len(act)) if act[i][0] == act[y][0] } for i in range(len(act)) }
acteur = input("Entrez le nom d'un acteur \n").title()
#récupération des valeurs correspondantes à la clé-acteur entrée par l'utilisateur avec la fonction get, attribution d'une valeur par défaut vide (tous les acteurs ont un duo donc une valeur).
reponse = dico_acteur.get(acteur, '')
if acteur in dico_acteur:
#Affichage des valeurs : la liste est triée par ordre alphabétique puis affichée nom par nom avec un retour de chariot.
print(f'{acteur} a joué avec {len(reponse)} personnes :\n{chr(10).join(sorted(reponse))}')
else:
print("Nom inconnu")
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment