TEST MUSIQUE INTERVALLES

aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 - 1 mai 2009 à 19:37
ornym Messages postés 2 Date d'inscription samedi 7 février 2009 Statut Membre Dernière intervention 2 mai 2009 - 2 mai 2009 à 18:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49952-test-musique-intervalles

ornym Messages postés 2 Date d'inscription samedi 7 février 2009 Statut Membre Dernière intervention 2 mai 2009
2 mai 2009 à 18:41
merci c moins long que le mien^^
je vais l'éssayer comme ca!
aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 18
2 mai 2009 à 12:06
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'
ornym Messages postés 2 Date d'inscription samedi 7 février 2009 Statut Membre Dernière intervention 2 mai 2009
1 mai 2009 à 21:07
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...
aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 18
1 mai 2009 à 19:37
Les Accents sont interdits dans les noms de variables !!!!! Voila l'erreur
Rejoignez-nous