Petits algos en python
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Petits algos en python



  1. #1
    invite4c80defd

    Petits algos en python


    ------

    Bonsoir à tous,
    j'ai quelques exercices à faire en python et je ne vois pas comment y parvenir

    Voila l'énoncé:
    Modifier la fonction "questionnaire" pour qu'elle affiche les questions dans le désordre.(en utilisant la procédure "shuffle")

    J'ai:
    Code:
    def questionnaire(qs):
        """Pose toutes les questions du questionnaire "qs" passé en argument."""
    
        score=0
        
        for i in range(len(qs)):
            print("Question", i+1, ":", end="  ")
            résultat_question=question_version_2(qs[i])
    
            if résultat_question==1:
                score=score+résultat_question
            print()
            
        score=score/(len(qs))*100
        
        print("Votre score est de {} %.".format(score))
    J'ai trouvé :
    Code:
    def questionnaire_3(qs):
        """Pose toutes les questions du questionnaire "qs" passé en argument."""
    
        score=0
        shuffle(qs)
        for i in range(len(qs)):
            
            print("Question", i+1, ":", end="  ")
            résultat_question=question_version_2(qs[i])
    
            if résultat_question==1:
                score=score+résultat_question
            print()
            
        score=score/(len(qs))*100
        
        print("Votre score est de {} %.".format(score))
    est-ce correct ainsi ? le programme mélange t-il bien seulement les questions ?

    exo2:

    Modifiez-votre fonction "question" pour que l'ordre des réponses possibles soit aléatoire.

    La fonction question étant:

    Code:
    def question_version_3(q):
        print (q["question"])
        print ("1-",q["correcte"])
        print ("2-",q["incorrecte"])
        
        réponse=int(input("Quelle est votre réponse ? "))
        
        if réponse==1:
            print("bravo , vous avez trouvé!")
            
            return 1
        else:
            print("Mauvaise réponse")
            
            return -1
    il faut utiliser la procédure "randint" avec 0 et 1 mais je ne vois absolument pas comment

    Merci pour vos conseils

    -----

  2. #2
    invite4c80defd

    Re : Petits algos en python

    Si les fonctions ne sont pas claires, dites-le moi et je compléterai avec les données supplémentaires de l'énoncé pour améliorer la compréhension de l'exo.
    Merci

  3. #3
    invite43901482

    Re : Petits algos en python

    Quelle est la question à part

    est-ce correct ainsi ?
    Il suffit de tester, non?

    Modifiez-votre fonction "question" pour que l'ordre des réponses possibles soit aléatoire.
    il faut utiliser la procédure "randint" avec 0 et 1 mais je ne vois absolument pas comment
    Bah non, shuffle ?

    Il suffit de mélanger la boîte à questions, non?

    Drôles de questions que posent ton professeur

  4. #4
    invite4c80defd

    Re : Petits algos en python

    pour le premier algo, je me posais la question si j'avais placé au bon endroit la procédure "shuffle" pour qu'elle mélange les questions uniquement ?
    Pour ce"randint", la question me l'oblige malheureusement mais je trouve ça un peu bizarre aussi...le souci c'est que je ne sais pas comment arriver à mélanger l'ordre des réponses avec un randint...

    merci

  5. A voir en vidéo sur Futura
  6. #5
    invite4c80defd

    Re : Petits algos en python

    Je communique quelques infos supplémentaires pour améliorer la compréhension de la chose.

    Code:
    qs = [
           {'question': "Quelle est la couleur du cheval blanc d'Henry IV ?",
            'correcte': "blanc",
            'incorrecte': "gris"},
    
           {'question': "2 + 2 = ?",
            'correcte': "4",
            'incorrecte': "42"},
    
           {'question': "Un brelan de rois gagne une couleur.",
            'correcte': "faux",
            'incorrecte': "vrai"}
         ]
    Code:
    q = { 'question' : "Quelle est la couleur de la banane ?",
          'correcte' : "jaune",
          'incorrecte' : "bleue" }
    C'est ce que prenne en argument les différentes fonctions des messages précédents. (vous pouvez testez les fonctions , c'est plus facile ainsi)
    j'ai pu testé et apparemment le "shuffle" serait bien placé car je craignait que ça ne mélange aussi l'ordre dans lequel sont proposées les réponses ( position 1 ou 2 )

    Quelqu'un a une idée pour mélanger les réponses possibles avec la procédure "randint" parceque je ne sais pas du tout (donnez-moi une piste de recherche , ça serait tres sympa)

    Merci d'avance

  7. #6
    invite43901482

    Re : Petits algos en python

    Tu peux créer ta fonction shuffle avec randint?

    Code:
    from random import randint
    
    def shuffle(my_list):
        result = []
        while my_list:
            length = len(my_list)
            rand = randint(0, length-1)
            result.append(my_list[rand])
            my_list.remove(my_list[rand])
        return result
    
    print(shuffle(["a", "b", "c", "d"]))

  8. #7
    invite4c80defd

    Re : Petits algos en python

    Je ne comprend pas ce code: le but est de mélanger les réponses possibles mais il faut que my_list soit une liste en argument ? parceque lorsque j'ai lancé ce code, j'ai obtenu:
    shuffle(qs):
    [{'incorrecte': 'vrai', 'correcte': 'faux', 'question': 'Un brelan de rois gagne une couleur.'}, {'incorrecte': 'gris', 'correcte': 'blanc', 'question': "Quelle est la couleur du cheval blanc d'Henry IV ?"}, {'incorrecte': '42', 'correcte': '4', 'question': '2 + 2 = ?'}]

  9. #8
    invite43901482

    Re : Petits algos en python

    Je crois que tu n'essaies pas de comprendre, tu as tes questions dans un dictionnaire se trouvant lui même dans une liste

    Si tu ne veux pas comprendre mon code, alors code toi même ou cherche à comprendre en faisant des recherches.

    Bref voilà ma solution avec ma fonction shuffle.

    Code:
    from random import randint
    
    def shuffle(my_list):
        result = []
        while my_list:
            length = len(my_list)
            rand = randint(0, length-1)
            result.append(my_list[rand])
            my_list.remove(my_list[rand])
        return result
    
    my_list = [{'incorrecte': 'vrai', 'correcte': 'faux', 'question': 'Un brelan de rois gagne une couleur.'}, {'incorrecte': 'gris', 'correcte': 'blanc', 'question': "Quelle est la couleur du cheval blanc d'Henry IV ?"}, {'incorrecte': '42', 'correcte': '4', 'question': '2 + 2 = ?'}]
    
    for key in my_list:
        print(key['question'])
        correct = key['correcte']
        incorrect = key['incorrecte']
        rand_list = shuffle([correct, incorrect])
        one, two = rand_list
        print('la réponse est soit {0} ou {1}'.format(one, two))
        reponse = input("Entrer votre réponse :")
        # suite où tu vérifies les bonnes réponses

  10. #9
    invite4c80defd

    Re : Petits algos en python

    ce que je voulais dire c'est que ce code est assez complexe (pour moi pas pour vous) : jamais je n'aurais pensé à ça et pourtant je devrais pouvoir faire cet exo

  11. #10
    invite4c80defd

    Re : Petits algos en python

    j'ai analysé votre code en modifiant l’appellation de certains élements et je dois dire que certaines procédures existent alors que je ne les connais pas. Mais je dois dire que votre programme est tres ingénieux.

  12. #11
    invite43901482

    Re : Petits algos en python

    je dois dire que certaines procédures existent alors que je ne les connais pas.
    comme?

    je dois dire que votre programme est tres ingénieux.
    Je ne veux pas faire de la modestie mal placée, mais il y a vraiment rien d'ingénieux.

    En ce qui concerne shuffle, je créé une liste vide où je vais ajouter des éléments de my_list au hasard, ceci dis, cet élément devra être retiré de my_list (évident, non?)

    Pour le reste du code, l'utilisation du dictionnaire en python semble être un objectif de votre professeur, je vous conseille de bien maîtriser ce sujet...

Discussions similaires

  1. Python
    Par invitee851a923 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 10/12/2012, 06h25
  2. Python
    Par invitee0960580 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 02/12/2012, 10h36
  3. Python
    Par invite3e3c726d dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 13/03/2009, 12h55
  4. des algos
    Par invite0f6f1e2d dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 11/11/2008, 13h48
  5. Optimisation / Algos genetiques
    Par invite6eae1772 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 13/10/2006, 07h55