IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

J'aurais besoin d'aide avec un petit programme


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2023
    Messages : 4
    Points : 4
    Points
    4
    Par défaut J'aurais besoin d'aide avec un petit programme
    Je suis en première et doit faire un qcm qui choisit les réponses aléatoirement en extrayant d'un fichier texte mais j'ai 3 problèmes, la variable alea dans le readlines ne marche pas et il n'y a donc pas d'aléatoire, le if pour comparer le input à la réponse ne marche pas.
    N'hésitez pas à me contacter si besoin.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 813
    Points : 7 102
    Points
    7 102
    Par défaut
    Bonjour,

    Voici le code entre balises code,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    import random
    import time
     
    def main():#Initialisation du qcm
        f=open("Python\PROJET NSI _ générateur de questions à choix multiples\qcm.txt","r",encoding="utf-8")
        print("Voulez vous lancer le qcm ?")
        debut=input()
        if debut=="oui" or debut=="OUI" or debut=="Oui":
            qcm(f)
            f.close()
            quit()
     
        else:
            f.close
            quit()
     
    def qcm(f):#Crée l'aléatoire des questions
        liste=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
        aleatoire=random.sample(liste,10)
        compteur=0
        i=0
        while i<10:
            resul=aleatoire.pop(0)
            print(aleatoire)
            print(resul)
            data=f.readlines(resul)#Resul ne marche pas dans le readlines
            data=str(data[0]).split(";;")
            rép(data,compteur)
            i=i+1
        print("Votre score final est de",compteur)
     
    def rép(data,compteur):#Partie où la réponse est entrée et analysée
        print(data[0])
        print("Quelle est votre réponse ?")
        rep=input()
        if rep==str(data[1]):#Condition ne marche pas
            compteur=compteur+1
            print("C'est la bonne réponse !")
            print("Votre score est de",compteur)
        else:
            compteur=compteur+2
            print("Ce n'est pas la bonne réponse, c'était la réponse",data[1])
            print("Votre score est de",compteur)
        return compteur
     
    main()
    time.sleep(5)
    Apprenez à lire les erreurs de l'interpréteur python, vous pouvez là présenter ici pour qu'on vous explique, voir mieux, faire une recherche sur l'erreur et essayer de comprendre pourquoi elle intervient... Ce genre d'exercice n'est pas nouveau, une simple recherche aurait donner des tas d'exemples sur des manières plus simples de le faire.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par fred1599 Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if debut=="oui" or debut=="OUI" or debut=="Oui":
    	qcm(f)
    	f.close()
    	quit() 
    else:
    	f.close
    	quit()
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if debut.lower() == "oui": qcm(f)
    f.close()
    quit()


    Citation Envoyé par fred1599 Voir le message
    liste=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
    liste=tuple(range(1, 31)) (et encore vu que liste n'est utilisé qu'une fois, je me demande si c'est pertinent de le garder)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 813
    Points : 7 102
    Points
    7 102
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if debut.lower() == "oui": qcm(f)
    f.close()
    quit()



    liste=tuple(range(1, 31)) (et encore vu que liste n'est utilisé qu'une fois, je me demande si c'est pertinent de le garder)...
    Ce n'est pas mon code, c'est celui du PO mis en pièce jointe que j'ai simplement copier coller sur le fofo
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Ce n'est pas mon code, c'est celui du PO mis en pièce jointe que j'ai simplement copier coller sur le fofo
    Ah pardon, je croyais que c'était ta correction
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2023
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Pour répondre à fred1599
    Le problème avec les erreurs indiquées c’est que le programme ne détecte pas d’erreur, c’est considéré comme bon alors que cela ne marche pas, j’ai beaucoup cherché mais n’ai pas trouvé de solution pour le readlines et la condition de la réponse.

  7. #7
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 813
    Points : 7 102
    Points
    7 102
    Par défaut
    Bonjour,

    Tout d'abord il est indiqué sur la documentation concernant readlines que cette méthode prend un argument sizehint.

    Il faut savoir que ce paramètre n'a que très peu d'intérêt par rapport à l'objectif de la méthode qui est de retourner l'ensemble des lignes d'un fichier dans une liste python.
    Il faudrait retirer ce paramètre et n'en mettre aucun d'ailleurs.

    Je pense que tu as plutôt voulu faire quelque chose comme data = f.readlines()[resul-1] afin de récupérer la ligne n°resul (le -1 car en python les index commencent à 0)
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par GeantCreeper Voir le message
    j’ai beaucoup cherché mais n’ai pas trouvé de solution pour le readlines et la condition de la réponse.
    Il n'y a pas de solution avec readlines utilisé comme çà: resul est assez petit pour que les appels successifs à readlines retournent la ligne/question suivante.
    Votre intention est (apparemment) de récupérer la resulième ligne/question: autant lire une seule fois le fichier, en faire une liste de questions dans lequel on pioche un item/question au hasard.

    note: On ne sait pas lire directement la nième ligne d'un fichier texte car un fichier n'est qu'une suite d'octets/bytes et que la notion de ligne suppose lire (et compter) des fins de lignes pour savoir où on en est.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Besoin d'aide sur un petit programme (débutant)
    Par Lucas Gauthier dans le forum Général Python
    Réponses: 4
    Dernier message: 13/09/2019, 13h16
  2. [Python 3.X] Python: besoin d'aide pour un petit programme
    Par Intrepid13 dans le forum Général Python
    Réponses: 9
    Dernier message: 14/10/2015, 19h19
  3. [Python 3.X] Python: besoin d'aide pour un petit programme
    Par Intrepid13 dans le forum Général Python
    Réponses: 2
    Dernier message: 11/10/2015, 04h21
  4. Besoin d'aide sur 3 petits programmes en Cobol
    Par gecko64 dans le forum Cobol
    Réponses: 2
    Dernier message: 12/09/2007, 22h30
  5. Besoin d'aide pour un petit programme
    Par Nico35 dans le forum C
    Réponses: 13
    Dernier message: 25/05/2006, 22h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo