CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Need help python debutant

AminAA
AminAA
Niveau 1
08 novembre 2020 à 19:39:14

Bonjour à tous, alors voilà je suis débutant en python et notre professeur nous à demander de créer un programme qui :

Pour chaque étudiant, le programme demandera à l'utilisateur si tel étudiant est présent ou pas en classe. Les réponses seront enregistrées dans une deuxième liste PRESENT , contenant des valeurs booléennes. A la fin de l'appel, le programme affichera à l'utilisateur l'ensemble des étudiants présents, puis l'ensemble des étudiants absents.

Voici ce que j'ai fait : https://image.noelshack.com/fichiers/2020/45/7/1604860521-capture.png
Et voilà ce que j'obtiens après avoir faire une simulation d'appel : https://image.noelshack.com/fichiers/2020/45/7/1604860540-capture2.png

Le problème c'est que les valeurs booléennes sont bien dans l'ordre mais le nom qui s'affiche reste toujours "Walter" alors que normalement il devrait afficher chaque prénom.

Pouvez vous m'aidez svp je galère dessus depuis tellement longtemps je suis à bout surtout que l'on doit rester dans cette thématique donc avec des listes, des for et des if/else :snif2:
Merciii beaucoup de votre aide

El_Camino
El_Camino
Niveau 10
08 novembre 2020 à 20:07:57

Tu as mis X = ETUDIANT[CASE] avec CASE au lieu de CASE2.

Au passage pas besoin d'êcrire Y == True, Y suffit car entre les parenthèses d'un IF c'est un booléen qui est évalué

AminAA
AminAA
Niveau 1
08 novembre 2020 à 20:46:28

Le 08 novembre 2020 à 20:07:57 El_Camino a écrit :
Tu as mis X = ETUDIANT[CASE] avec CASE au lieu de CASE2.

Au passage pas besoin d'êcrire Y == True, Y suffit car entre les parenthèses d'un IF c'est un booléen qui est évalué

Ah ouiii je voiis sa marcher nickel maintenant merciii mais pour maintenant je dois afficher les élèves présent en premier et ensuite les absent aurais-tu une méthode pour trier stp?

El_Camino
El_Camino
Niveau 10
08 novembre 2020 à 21:08:07

Essaye de le faire sans trier ce sera plus simple

Azerban
Azerban
Niveau 16
08 novembre 2020 à 21:43:27

:ok:

# https://www.jeuxvideo.com/forums/42-47-64804831-1-0-1-0-need-help-python-debutant.htm
# liste_etudiants.py

ETUDIANTS = ["Donald", "Joe", "Hillary", "Emmanuel", "Angela", "Vladimir", "Jair", "Barack"]
PRESENT = []

for etudiant in ETUDIANTS:

    answer = None

    while not answer:

        presence = input(f"L'étudiant {etudiant} est-il présent [Y/N] ? ")
        
        if presence in ['Oui', 'OUI', "oui", "Yes", "yes", "YES", "O", "y", "Y", "o"]:
            PRESENT.append(True)
            answer = True
        elif presence in ["Non", "NON", "non", "No", "no", "NO", "N", "n"]:
            PRESENT.append(False)
            answer = True
        else:
            print("Réponse invalide, veuillez recommencer.")
            answer = False
    
etudiants_presents = [etudiant for etudiant, presence in zip(ETUDIANTS, PRESENT) if presence == True]
etudiants_absents = [etudiant for etudiant in ETUDIANTS if etudiant not in etudiants_presents]

print(f"Liste des étudiants présents : {', '.join(etudiants_presents)}.")
print(f"Liste des étudiants absents : {', '.join(etudiants_absents)}.")
kaik_a
kaik_a
Niveau 7
08 novembre 2020 à 23:02:20

presence.lower() pour virer des possibilités

Azerban
Azerban
Niveau 16
08 novembre 2020 à 23:14:15

Le 08 novembre 2020 à 23:02:20 kaik_a a écrit :
presence.lower() pour virer des possibilités

Oui on peut faire ça aussi :ok:

Azerban
Azerban
Niveau 16
09 novembre 2020 à 20:07:22

Explications :

Pour les deux dernières lignes, j'utilise la fonction built-In zip dans une compréhension de liste.

La fonction zip :

Tout d'abord, la fonction zip permet de parcourir deux listes (autant d'itérables qu'on veut en fait) de manière simultanée. Dans notre cas, je parcours ETUDIANTS et en simultannée je parcours PRESENT. La fonction zip me renvoie un itérateur que je parcours ensuite à l'aide d'une boucle for.

Cet itérateur me renvoie à chaque itération un n-uplet regroupant chaque valeur au même index dans les deux listes. Voici un exemple plus simple :

prenoms = ["Titouan", "Pierre", "Corentin"]
ages = [16, 18, 15]
print(list(zip(prenoms, ages)))

Renvoie :

[('Titouan', 16), ('Pierre', 18), ('Corentin', 15)]

Maintenant qu'on comprend ce que renvoie zip, je peux écrire ce genre de code :

prenoms = ["Titouan", "Pierre", "Corentin"]
ages = [16, 18, 15]

for prenom, age in zip(prenoms, ages):
    if age >= 18:
        print(f"{prenom} est majeur.")
    else:
        print(f"{prenom} est mineur.")

Renvoie :

Titouan est mineur.
Pierre est majeur.
Corentin est mineur.

La compréhension de liste :

L'idée de la compréhension de liste, c'est de refaire le code qui est au-dessus mais à l'intérieur d'une liste et de stocker dans la liste les résultats qui m'intéressent :

prenoms = ["Titouan", "Pierre", "Corentin"]
ages = [16, 18, 15]

# Ici, on stocke le contenu de la variable prenom dans la liste
majeurs = [prenom for prenom, age in zip(prenoms, ages) if age >= 18] 

# Majeur est un objet de type list
print(majeurs)

Renvoie :

['Pierre']
Message édité le 09 novembre 2020 à 20:09:58 par Azerban
Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment