begin process at 2010 07 29 16:09:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > TEST MUSIQUE INTERVALLES

TEST MUSIQUE INTERVALLES


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :questionnaire noté, python, fonctions logiques, simple besoindêtreamélioré, intervalles musique Niveau :Débutant Date de création :01/05/2009 Date de mise à jour :01/05/2009 21:03:29 Vu / téléchargé :2 249 / 33

Auteur : ornym

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Bonjour, ceci est un programme pour réviser la théorie musicale. Je suis ouvert à toute critique constructive alors n'hésitez pas à poster vos idées pour l'améliorer, je suis programmateur amateur alors ça me fera progresser...
ce programme est un questionnaire.
On peut facilement éditer le script pour changer les questions(ici ce sont des questions de solfège).Le programme donne le résultat régulièrement et une note globale (sur 20) à la fin avec une appréciation, ainsi que le nombre de questions restantes ainsi que la correction si on répond mal.
le "patientez S.V.P", c'est juste pour éviter que les utilisateurs du programme évitent de regarder les réponses précédentes pour s'aider.^^la première question est choisie au hazard, mais les suivantent suivent dans une ordro bien précis selon cette première question. enfin le problème c'est que le programme est facile à interrompre (il suffit d'entrer un string ou de faire simplement enter) et on doit tout recommencer.Mais je n'ai pas d'idées pour empêcher ça.

Source

  • print "intervalles par ORINYM"
  • compteur=0
  • score=0
  • a="Quelle est la composition d'"
  • b="? Par exemple si la réponse est 6 tons et 3 demi-tons, tapez 7.5 sans rajouter \"ton(s)\" derrière (attention! Pour les décimales, ce n'est pas une virgule su'il faut mettre mais un point!)"
  • c="Bien, c'est la bonne réponse, vous gagnez 1 point"
  • d="désolé, ce n'est pas la bonne réponse."
  • e="patientez S.V.P. ..."
  • f="La bonne réponse était"
  • g="merci d'avoir utilisé ce programme."
  • h="Vous êtes nul(le)! XD"
  • i="Vous êtes mauvais(e)! :s"
  • j="Votre niveau est passable. o_o"
  • k="vous êtes plutôt bon(ne). :) Mais il y a encore des progrès à faire!"
  • l="très bien! encore un petit effort et ce sera la perfection! =)"
  • m="exellent! Vous n'avez plus vraiment besoin de vous exercer sur ce programme! :D"
  • import random
  • numéroquestion=random.randint(1,21)
  • print numéroquestion
  • while (compteur<20):
  • compteur=compteur+1
  • print "question",compteur
  • if (numéroquestion==1):
  • print a,"un unisson juste",b
  • réponse=input()
  • if (réponse==0):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"0"
  • elif (numéroquestion==2):
  • print a,"un unisson augmenté",b
  • réponse=input()
  • if (réponse==0.5):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"0.5"
  • elif (numéroquestion==3):
  • print a,"une seconde mineure",b
  • réponse=input()
  • if (réponse==0.5):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"0.5"
  • elif (numéroquestion==4):
  • print a,"une seconde majeure",b
  • réponse=input()
  • if (réponse==1):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"1"
  • elif (numéroquestion==5):
  • print a,"une seconde augmentée",b
  • réponse=input()
  • if (réponse==1.5):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"1.5"
  • elif (numéroquestion==6):
  • print a,"une tierce mineure",b
  • réponse=input()
  • if (réponse==1.5):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"1.5"
  • elif (numéroquestion==7):
  • print a,"une tierce majeure",b
  • réponse=input()
  • if (réponse==2):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"2"
  • elif (numéroquestion==8):
  • print a,"une quarte diminuée",b
  • réponse=input()
  • if (réponse==2):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"2"
  • elif (numéroquestion==9):
  • print a,"une quarte juste",b
  • réponse=input()
  • if (réponse==2.5):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"2.5"
  • elif (numéroquestion==10):
  • print a,"une quarte augmentée",b
  • réponse=input()
  • if (réponse==3):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"3"
  • elif (numéroquestion==11):
  • print a,"une quinte diminuée",b
  • réponse=input()
  • if (réponse==3):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"3"
  • elif (numéroquestion==12):
  • print a,"une quinte juste",b
  • réponse=input()
  • if (réponse==3.5):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"3.5"
  • elif (numéroquestion==13):
  • print a,"une quinte augmentée",b
  • réponse=input()
  • if (réponse==4):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"4"
  • elif (numéroquestion==14):
  • print a,"une sixte mineure",b
  • réponse=input()
  • if (réponse==4):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"4"
  • elif (numéroquestion==15):
  • print a,"une sixte majeure",b
  • réponse=input()
  • if (réponse==4.5):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"4.5"
  • elif (numéroquestion==16):
  • print a,"une septième diminuée",b
  • réponse=input()
  • if (réponse==4.5):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"4.5"
  • elif (numéroquestion==17):
  • print a,"une septième mineure",b
  • réponse=input()
  • if (réponse==5):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"5"
  • elif (numéroquestion==18):
  • print a,"une septième majeure",b
  • réponse=input()
  • if (réponse==5.5):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"5.5"
  • elif (numéroquestion==19):
  • print a,"une octave diminuée",b
  • réponse=input()
  • if (réponse==5.5):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"5.5"
  • elif (numéroquestion==20):
  • print a,"une octave juste",b
  • réponse=input()
  • if (réponse==6):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"6"
  • elif (numéroquestion==21):
  • print a,"une octave augmentée",b
  • réponse=input()
  • if (réponse==6.5):
  • print c
  • score=score+1
  • else:
  • print d
  • print f,"6.5"
  • n=0
  • while (n<100):
  • print e
  • n=n+1
  • o=20-compteur
  • if (o!=0):
  • print "il vous reste",o,"question(s)"
  • print "vous avez",score,"points sur",compteur
  • numéroquestion =numéroquestion+5
  • if(numéroquestion>21):
  • numéroquestion=numéroquestion-21
  • if (o==0):
  • print "vous avez terminé"
  • print "vous avez",score,"points sur",compteur
  • if (score<6):
  • print h
  • elif (score>5) and (score<10):
  • print i
  • elif (score>9) and (score<13):
  • print j
  • elif (score>12) and (score<16):
  • print k
  • elif (score>15) and (score<19):
  • print l
  • elif (score>18):
  • print m
  • print g
print "intervalles par ORINYM"
compteur=0
score=0
a="Quelle est la composition d'"
b="? Par exemple si la réponse est 6 tons et 3 demi-tons, tapez 7.5 sans rajouter \"ton(s)\" derrière (attention! Pour les décimales, ce n'est pas une virgule su'il faut mettre mais un point!)"
c="Bien, c'est la bonne réponse, vous gagnez 1 point"
d="désolé, ce n'est pas la bonne réponse."
e="patientez S.V.P. ..."
f="La bonne réponse était"
g="merci d'avoir utilisé ce programme."
h="Vous êtes nul(le)! XD"
i="Vous êtes mauvais(e)! :s"
j="Votre niveau est passable. o_o"
k="vous êtes plutôt bon(ne). :) Mais il y a encore des progrès à faire!"
l="très bien! encore un petit effort et ce sera la perfection! =)"
m="exellent! Vous n'avez plus vraiment besoin de vous exercer sur ce programme! :D"

import random

numéroquestion=random.randint(1,21)
print numéroquestion
while (compteur<20):

    compteur=compteur+1
    print "question",compteur

    if (numéroquestion==1):
        print a,"un unisson juste",b
        réponse=input()

        if (réponse==0):
            print c
            score=score+1

        else:
            print d
            print f,"0"

    elif (numéroquestion==2):
        print a,"un unisson augmenté",b
        réponse=input()

        if (réponse==0.5):
            print c
            score=score+1

        else:
            print d
            print f,"0.5"

    elif (numéroquestion==3):
        print a,"une seconde mineure",b
        réponse=input()

        if (réponse==0.5):
            print c
            score=score+1

        else:
            print d
            print f,"0.5"

    elif (numéroquestion==4):
        print a,"une seconde majeure",b
        réponse=input()

        if (réponse==1):
            print c
            score=score+1

        else:
            print d
            print f,"1"

    elif (numéroquestion==5):
        print a,"une seconde augmentée",b
        réponse=input()

        if (réponse==1.5):
            print c
            score=score+1

        else:
            print d
            print f,"1.5"

    elif (numéroquestion==6):
        print a,"une tierce mineure",b
        réponse=input()

        if (réponse==1.5):
            print c
            score=score+1

        else:
            print d
            print f,"1.5"

    elif (numéroquestion==7):
        print a,"une tierce majeure",b
        réponse=input()

        if (réponse==2):
            print c
            score=score+1

        else:
            print d
            print f,"2"

    elif (numéroquestion==8):
        print a,"une quarte diminuée",b
        réponse=input()

        if (réponse==2):
            print c
            score=score+1

        else:
            print d
            print f,"2"

    elif (numéroquestion==9):
        print a,"une quarte juste",b
        réponse=input()

        if (réponse==2.5):
            print c
            score=score+1

        else:
            print d
            print f,"2.5"

    elif (numéroquestion==10):
        print a,"une quarte augmentée",b
        réponse=input()

        if (réponse==3):
            print c
            score=score+1

        else:
            print d
            print f,"3"

    elif (numéroquestion==11):
        print a,"une quinte diminuée",b
        réponse=input()

        if (réponse==3):
            print c
            score=score+1

        else:
            print d
            print f,"3"

    elif (numéroquestion==12):
        print a,"une quinte juste",b
        réponse=input()

        if (réponse==3.5):
            print c
            score=score+1

        else:
            print d
            print f,"3.5"

    elif (numéroquestion==13):
        print a,"une quinte augmentée",b
        réponse=input()

        if (réponse==4):
            print c
            score=score+1

        else:
            print d
            print f,"4"

    elif (numéroquestion==14):
        print a,"une sixte mineure",b
        réponse=input()

        if (réponse==4):
            print c
            score=score+1

        else:
            print d
            print f,"4"

    elif (numéroquestion==15):
        print a,"une sixte majeure",b
        réponse=input()

        if (réponse==4.5):
            print c
            score=score+1

        else:
            print d
            print f,"4.5"

    elif (numéroquestion==16):
        print a,"une septième diminuée",b
        réponse=input()

        if (réponse==4.5):
            print c
            score=score+1

        else:
            print d
            print f,"4.5"

    elif (numéroquestion==17):
        print a,"une septième mineure",b
        réponse=input()

        if (réponse==5):
            print c
            score=score+1

        else:
            print d
            print f,"5"

    elif (numéroquestion==18):
        print a,"une septième majeure",b
        réponse=input()

        if (réponse==5.5):
            print c
            score=score+1

        else:
            print d
            print f,"5.5"

    elif (numéroquestion==19):
        print a,"une octave diminuée",b
        réponse=input()

        if (réponse==5.5):
            print c
            score=score+1

        else:
            print d
            print f,"5.5"

    elif (numéroquestion==20):
        print a,"une octave juste",b
        réponse=input()

        if (réponse==6):
            print c
            score=score+1

        else:
            print d
            print f,"6"

    elif (numéroquestion==21):
        print a,"une octave augmentée",b
        réponse=input()

        if (réponse==6.5):
            print c
            score=score+1

        else:
            print d
            print f,"6.5"


    n=0
    while (n<100):
        print e
        n=n+1

    o=20-compteur

    if (o!=0):

        print "il vous reste",o,"question(s)"

        print "vous avez",score,"points sur",compteur

        numéroquestion =numéroquestion+5

        if(numéroquestion>21):
            numéroquestion=numéroquestion-21

    if (o==0):

        print "vous avez terminé"
        print "vous avez",score,"points sur",compteur

        if (score<6):
            print h
        elif (score>5) and (score<10):
            print i
        elif (score>9) and (score<13):
            print j
        elif (score>12) and (score<16):
            print k
        elif (score>15) and (score<19):
            print l
        elif (score>18):
            print m
print g

 Conclusion

Programme long à écrire même s'il est simple , il n'utilise que des fonctions logiques (si, et, boucles). Les questions peuvent être adaptée en fonction d'un autres sujet.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

01 mai 2009 21:01:43 :
j'ai trouvé l'erreur, qui était juste un petit problème d'indentation. c'était passé inaperçu jusqu'à ce que je pense à la vérifier. j'en ai profité pour corriger les fautes d'orthographe!^^
01 mai 2009 21:03:29 :
encore des fautes d'orthographe^!^^ dûrdûr d'être un g33k!^^

 Sources de la même categorie

Source avec Zip SCRIPT PERMETTANT DE DÉCODER LA STRUCTURE SECONDAIRE D'UNE P... par Basilio
SUPPRESSION par Rano Its
Source avec Zip RECONNAISSANCE VOCALE par brennal
CONVERTISSEUR DE TEMPÉRATURE par skizo00o
Source avec Zip Source avec une capture I.A. (DÉBUTANT) par Rano Its

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture [PYTHON] JEU DU PENDU par The_tito
Source avec Zip Source avec une capture EQUATION STANDARD DE LA DROITE par calogerogigante
SIMPLE COMPARATEUR IPV4 EN PYTHON par erebos
Source avec Zip Source avec une capture UN CLASSIC SOKOBAN par blackgrimly
CHANGEMENT DE CASSE par linkid

Commentaires et avis

Commentaire de aera group le 01/05/2009 19:37:24

Les Accents sont interdits dans les noms de variables !!!!! Voila l'erreur

Commentaire de ornym le 01/05/2009 21:07:44

mais si,ça marche!
non le seul problème c'était une erreur d'indentation qui plombait tout!
mais bon, est-ce que quelqu'un aurait une idée pour le rendre plus simple, ou plus pratique?
par exemple pour éviter que lorsque l'on entre un string ou que l'on appuie sur une touche par erreur le programme soir interrompu...

Commentaire de aera group le 02/05/2009 12:06:35

NON ÇA NE MARCHE PAS !!!! :(

En Python (tout du moins jusqu'à la version 2.5) il est INTERDIT d'utiliser des nom de variables contenant des accents et python GÉNÈRE UNE ERREUR en signalant ce problème d'accentuation. Voila où la principale erreur du programme. De plus à la ligne 87 il y "aurait" une erreur d'alignement des teste (perso je l'ai pas vu mais Python génère cette erreur à cette ligne ! Un simple ré-alignement sous IDLE permet de régler ce problème).

Voici comment on peut faire de ton pseudo code un vrai programme ...


# -*- coding: cp1252 -*-

import random

#####################
# Programme corrigé #
# Intervalles Music #
# Par Aéra / ORINYN #
#####################


    # ============== Variables de texte ============== #
"Utile pour changer de langue ..."

t0 = u"Bonjour et bienvenu dans notre programme d'entrainement musical. Répondez aux 20 questions proposés, nous définirons votre niveau."    
t1 = u"Quelle est la composition d'"
t2 = u" ? Par exemple si la réponse est 6 tons et 3 demi-tons, tapez 7.5 sans rajouter \"ton(s)\" derrière (attention! Pour les décimales, ce n'est pas une virgule su'il faut mettre mais un point !)."
t3 = u"Bien, c'est la bonne réponse, vous gagnez 1 point."
t4 = u"Désolé, ce n'est pas la bonne réponse."
t5 = u"La bonne reponse etait "
t6 = u", vous êtes nul(le) ! XD"
t7 = u", vous êtes mauvais(e) ! :s"
t8 = u", votre niveau est passable. o_o"
t9 = u", vous êtes plutôt bon(ne). :) Mais il y a encore des progrès à faire !"
t10 = u", c'est très bien ! Encore un petit effort et ce sera la perfection ! =)"
t11 = u", c'est exellent ! Vous n'avez plus vraiment besoin de vous exercer sur ce programme ! :D"
t12 = u"Voulez vous rejouer ? (Oui/Non)"
t13 = u"Nous n'avons pas compris votre réponse. La réponse attendu est "
t14 = u"un nombre."
t15 = u"oui ou non"
t16 = u"Vous avez "
t17 = u" point(s) sur "
t18 = u"."
t19 = u"Il reste "
t20 = u" question(s)."
t21 = u"Question n°"
t22 = u"Vous avez terminer l'exercice. Avec "

r0 = [u"oui",u"non"] # Réponses attendues sans majuscules

q0 = [(u"un unisson juste",u"0"),(u"un unisson augmenté",u"0.5"),(u"une seconde mineure",u"0.5"),(u"une seconde majeure",u"1"),(u"une seconde augmentée",u"1.5"),
      (u"une tierce mineure",u"1.5"),(u"une tierce majeure",u"2"),(u"une quarte diminuée",u"2"),(u"une quarte juste",u"2.5"),(u"une quarte augmentée",u"3"),
      (u"une quinte diminuée",u"3"),(u"une quinte juste",u"3.5"),(u"une quinte augmentée",u"4"),(u"une sixte mineure",u"4"),(u"une sixte majeure",u"4.5"),
      (u"une septième diminuée",u"4.5"),(u"une septième mineure",u"5"),(u"une septième majeure",u"5.5"),(u"une octave diminuée",u"5.5"),(u"une octave juste",u"6"),(u"une octave augmentée",u"6.5")] # Liste des questions avec réponse


def question(texte,rep=1):
    while 1:
        print texte
        a = raw_input(u'>> ')
        if rep == 1:
            try:
                float(a)
            except:
                print t13 + t14
                print u""
            else:
                print u""
                return a
        else:
            if a.lower() in r0:
                print u""
                return a.lower()
            else:
                print t13 + t15
                print u""

def selec_question():
    while 1:
        a = random.randint(0,len(q0)-1)
        if not(a in question_sortie):
            question_sortie.append(a)
            return q0[a]


    # ============== Programme Principale ============== #

print t0
print u"\n"

i = 0
pt = 0
question_sortie = [] # Pour ne pas mettre deux fois les mêmes questions

while 1:
    i = i + 1
    print t21 + str(i)
    
    qu = selec_question()
    rep = question(t1 + qu[0] + t2)
    
    if rep == qu[1]:
        pt = pt + 1
        print t3
    else:
        print t4
        print t5 + qu[1] + t18

    print t16 + str(pt) + t17 + str(i) + t18    

    if i < 20:
        print t19 + str(20-i) + t20
        print u""
    else:
        if pt>18:
            temp = t11
        elif pt>15:
            temp = t10
        elif pt>12:
            temp = t9
        elif pt>9:
            temp = t8
        elif pt>5:
            temp = t7
        else:
            temp = t6
        print u""
        print t22 + str(pt) + t17 + str(i) + temp
        
        print u"\n\n"
        rep = question(t12,2)
        if rep == r0[1]:
            break
        else:
            i = 0
            pt = 0
            question_sortie = []
            print u'\n\n'

Commentaire de ornym le 02/05/2009 18:41:53

merci c moins long que le mien^^
je vais l'éssayer comme ca!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

tutoriaux python [ par slachz ] voilà un tuto FR tres remplie en python (il existe en bouquin mais est telechargeable gratuitement) :http://www.ulg.ac.be/cifen/inforef/swi/python.htm installation python [ par champagnef ] Bonjour,je suis nouveau sur python. J'apprends (en amateur intéressé) avec le cours de G. Swinnen et autres tuto.Je suis sur Mac Os X.3.5 et je pense Projet Python: Lecteur de flux RSS. [ par Marvin ] Amis codeurs, bien le bonjour (ou plutot bonsoir car il est 00:33 ( GTM + 1h ) ) ,J'ai en tête depuis déja quelques jours, de créer un lecteur de flux Paramétrage de python [ par deguelatore ] salut à tous. Je voulai vous demandez si on peut se débarrasser du mode interactif de python?? Vous savez les 3 flèches (&gt;&gt;&gt;).C'est juste pas Tk vs wx [ par bonac ] Bonjour,Je doit faire une assez grosse application en python, le problème est que je ne connaissait pas python (du moins de nom) le mois dernier. Cett Help : Python/DB/CGI [ par Chill_Sik ] Bonjour à tous, voila qqjours que je me casse les dents sur un petit problème alors je me décide a appeler "au secour" car on ne sait jamais que certa WebCam [ par DoudouBidou ] Après plusieurs recherche je n'ai pas trouvé de script python capable de diffusé une webcam sur un réseaudonc je lance le débat, est-il possible de ré dll avec python? [ par LokR ] Salut tout le monde!je me pose une kestion, je pense pas que ce soit possible mais d'un autre coté je pensais pas kon puisse faire d' *.exe avec pytho aide pour xchat svp [ par Jamu ] Salut a tous Je debute sur xchat et le python ben je connais pas,j'ai chercher des tuto sur google mais j'ai trouvé que des tuto de python en général les variables vu par Plone... [ par onlybjork ] Bonjour.Je suis designer, et dans le cadre d'une intégration de charte sous plone, j'ai besoin d'incrémenter tout simplement une variable. Seulement,


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales