[Débutant] Mon premier programme Python, mes premiers soucis
4 réponses
Patrice
Bonjour
Je viens de me remettre à la programmation avec
pour premier objectif de créer une calculatrice
d'heures de vol.
Le langage Python m'ayant semblé être
"relativement" simple, je me suis lancé.
Elle fonctionne (mal pour l'instant) en ligne de
commande et j'espère pouvoir la faire fonctionner
avec une interface graphique (mais je n'en suis
pas encore là ! :-) )
Voilà ce que ça donne (je m'excuse par avance pour
la longueur) :
#!/usr/bin/env python
# Calculatrice d'heures de vol
# Variables
heures = 0
minutes = 0
resultat_heure = 0
resultat_minute = 0
compteur = 0
aide = "- h : cette aide \n - q : pour quitter \n
- 0 et 0 : met les compteurs à 0\n"
# Programme principal
while 1:
compteur = compteur + 1 # Compteur du nombre
d'opérations
heures = raw_input("Heures : ") # Demande les
heures
if heures == "q": # Pour quitter
break
if heures == "h": # Pour avoir l'aide
print aide
if heures == "":
heures = 0
heures = int(heures)
minutes = raw_input("Minutes : ") # Demande les
minutes
if minutes == "q": # Pour quitter
break
if minutes == "h": # Pour avoir l'aide
print aide
if minutes == "":
minutes = 0
minutes = int(minutes)
if heures == "" and minutes == "": # Quitte
faute d'arguments corrects
print "Entrez des valeurs correctes"
break
if str(heures[0]) == "-": # Regarde le signe
positif ou négatif
minutes = - int(minutes) # Si le signe est
négatif, fais passer les minutes en négatif aussi
if int(heures) == 0 and int(minutes) == 0: #
Remet les compteurs à 0 si 0 est entré à heure et
minutes
resultat_heure = 0
resultat_minute = 0
compteur = 0
resultat_heure = int(resultat_heure) +
int(heures) # Additionne les heures précédentes
avec les nouvelles
resultat_minute = int(resultat_minute) +
int(minutes) # Additionne les minutes précédentes
avec les nouvelles
if int(minutes) >= 60: # Vérifie qu'il n'y a
pas plus de 60 minutes
heures = int(heures) + 1
minutes = int(minutes) - 60
else:
heures = int(heures)
minutes = int(minutes)
if int(resultat_minute) >= 60: # Vérifie
qu'il n'y a pas plus de 60 minutes
resultat_minute = int(resultat_minute) - 60
resultat_heure = int(resultat_heure) + 1
else:
resultat_heure = int(resultat_heure)
resultat_minute = int(resultat_minute)
if int(resultat_minute) < 0: # Si le signe
des minutes est négatif
resultat_heure = int(resultat_heure) - 1 #
transforme l'opération pour un affichage
resultat_minute = 60 + int(resultat_minute) #
correct des heures
else:
resultat_heure = int(resultat_heure)
resultat_minute = int(resultat_minute)
print resultat_heure, "h", resultat_minute,
"m" # Affiche le résultat de l'addition
resultat_heure = int(resultat_heure) # Met en
mémoire la nouvelle valeur de l'addition
resultat_minute = int(resultat_minute)
Voici mes problèmes :
- je n'arrive pas à faire en sorte qu'un appui
sur Entrée équivaut à entrer 0
- quand je demande l'aide, je ne sais pas faire
reprendre le programme au départ et donc, erreur !
- je sais que des erreurs apparaissent quand on
commence à avoir des heures négatives
Je pense qu'il faut utiliser def qqchose() pour
que ça soit plus clair et pour que ça fonctionne
mais je ne sais pas trop comment.
Bref, si quelqu'un peut éclairer ma lanterne,
merci par avance.
Patrice
PS : pour utiliser la calculatrice, il suffit
d'entrer les heures, les minutes et le résultat de
l'addition s'affiche.Pour soustraire, il faut
mettre - devant l'heure seulement.
La remise du compteur à 0 se fait en tapant 0 pour
les heures et pour les minutes.q sert à quitter.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Roger That
Voici mes problèmes : - je n'arrive pas à faire en sorte qu'un appui sur Entrée équivaut à entrer 0 - quand je demande l'aide, je ne sais pas faire reprendre le programme au départ et donc, erreur ! - je sais que des erreurs apparaissent quand on commence à avoir des heures négatives
Plusieurs conseils: - fais une fonction pour lire une minute ou une heure (qui prendra en paramètre le texte à afficher et qui retournera un booleen selon si il faut quitter le programme ou non). Eviter un maximum de copier coller le code - ne fais pas des effectations qui servent à rien minutes = 0 minutes = int(minute) La deuxième ligne est inutile - le fait que "minutes" et "heures" puisse être des chaines et des nombres à différents moments du programme est pour moi dangereux - Au lieu de if str(heures[0]) == "-" tu peux faire if heures<0
Voici mes problèmes :
- je n'arrive pas à faire en sorte qu'un appui sur Entrée équivaut à
entrer 0
- quand je demande l'aide, je ne sais pas faire reprendre le programme
au départ et donc, erreur !
- je sais que des erreurs apparaissent quand on commence à avoir des
heures négatives
Plusieurs conseils:
- fais une fonction pour lire une minute ou une heure (qui prendra en
paramètre le texte à afficher et qui retournera un booleen selon si il
faut quitter le programme ou non). Eviter un maximum de copier coller le
code
- ne fais pas des effectations qui servent à rien
minutes = 0
minutes = int(minute)
La deuxième ligne est inutile
- le fait que "minutes" et "heures" puisse être des chaines et des
nombres à différents moments du programme est pour moi dangereux
- Au lieu de
if str(heures[0]) == "-"
tu peux faire
if heures<0
Voici mes problèmes : - je n'arrive pas à faire en sorte qu'un appui sur Entrée équivaut à entrer 0 - quand je demande l'aide, je ne sais pas faire reprendre le programme au départ et donc, erreur ! - je sais que des erreurs apparaissent quand on commence à avoir des heures négatives
Plusieurs conseils: - fais une fonction pour lire une minute ou une heure (qui prendra en paramètre le texte à afficher et qui retournera un booleen selon si il faut quitter le programme ou non). Eviter un maximum de copier coller le code - ne fais pas des effectations qui servent à rien minutes = 0 minutes = int(minute) La deuxième ligne est inutile - le fait que "minutes" et "heures" puisse être des chaines et des nombres à différents moments du programme est pour moi dangereux - Au lieu de if str(heures[0]) == "-" tu peux faire if heures<0
Benoit HURON
J'ai quelques remarques que j'insère dans votre code (précédées de *).
Patrice wrote:
#!/usr/bin/env python
# Calculatrice d'heures de vol
# Variables
heures = 0 minutes = 0 resultat_heure = 0 resultat_minute = 0 compteur = 0 aide = "- h : cette aide n - q : pour quitter n - 0 et 0 : met les compteurs à 0n"
# Programme principal
while 1: compteur = compteur + 1 # Compteur du nombre d'opérations
heures = raw_input("Heures : ") # Demande les heures if heures == "q": # Pour quitter break if heures == "h": # Pour avoir l'aide print aide
* C'est ici qu'il faut insérer un continue statement (continue) pour recommencer la boucle (et éviter ainsi les erreurs)
if heures == "": heures = 0
* Remplacez ceci par : * if not heures : heures = 0 * D'autre part, si l'input n'est ni 'h' ni 'q' c'est forcément un nombre. Il est donc possible de le transformer en entier pour la suite de votre code (en dehors de l'if statement). heures = int(heures) (toutes ces remarques s'appliquent aussi aux minutes)
if heures == "" and minutes == "": # Quitte faute d'arguments corrects print "Entrez des valeurs correctes" break
* Ce bout de code ne s'effectuera jamais (nous avons changé les valeurs en 0).
if str(heures[0]) == "-": # Regarde le signe positif ou négatif * Mettre if heures < 0 (pareil pour les minutes)
minutes = - int(minutes) # Si le signe est négatif, fais passer les minutes en négatif aussi
* en fait ce code ne fait passer minutes en négatif mais inverse son signe. Si vous voulez minutes en négatif utilisez -abs(minutes)
if int(heures) == 0 and int(minutes) == 0: # Remet les compteurs à 0 si 0 est entré à heure et minutes resultat_heure = 0 resultat_minute = 0 compteur = 0
resultat_heure = int(resultat_heure) + int(heures) # Additionne les heures précédentes avec les nouvelles
* Utilisez resultat_heure += heures (pareil pour les minutes)
resultat_minute = int(resultat_minute) + int(minutes) # Additionne les minutes précédentes avec les nouvelles
if int(minutes) >= 60: # Vérifie qu'il n'y a pas plus de 60 minutes heures = int(heures) + 1 minutes = int(minutes) - 60 else: heures = int(heures) minutes = int(minutes)
* Tout ce bout de code est mal placé. Vous n'utilisez plus les variables heures et minutes.
if int(resultat_minute) >= 60: # Vérifie qu'il n'y a pas plus de 60 minutes resultat_minute = int(resultat_minute) - 60 resultat_heure = int(resultat_heure) + 1 else: resultat_heure = int(resultat_heure) resultat_minute = int(resultat_minute)
* Je ne comprends pas à quoi sert int(resultats_minutes). resultats-minutes est déjà un entier depuis le début du programme.
if int(resultat_minute) < 0: # Si le signe des minutes est négatif resultat_heure = int(resultat_heure) - 1 # transforme l'opération pour un affichage resultat_minute = 60 + int(resultat_minute) # correct des heures else: resultat_heure = int(resultat_heure) resultat_minute = int(resultat_minute)
print resultat_heure, "h", resultat_minute, "m" # Affiche le résultat de l'addition
* Utilisez print '%02d h %02d m' % (resultat_heures, resultat_minutes) * Adaptez ce format en fonction de vos besoin (par exemple si vos heures peuvent dépasser 99.
resultat_heure = int(resultat_heure) # Met en mémoire la nouvelle valeur de l'addition resultat_minute = int(resultat_minute)
Voici mes problèmes : - je n'arrive pas à faire en sorte qu'un appui sur Entrée équivaut à entrer 0 - quand je demande l'aide, je ne sais pas faire reprendre le programme au départ et donc, erreur ! - je sais que des erreurs apparaissent quand on commence à avoir des heures négatives Je pense qu'il faut utiliser def qqchose() pour que ça soit plus clair et pour que ça fonctionne mais je ne sais pas trop comment. Bref, si quelqu'un peut éclairer ma lanterne, merci par avance. Patrice PS : pour utiliser la calculatrice, il suffit d'entrer les heures, les minutes et le résultat de l'addition s'affiche.Pour soustraire, il faut mettre - devant l'heure seulement. La remise du compteur à 0 se fait en tapant 0 pour les heures et pour les minutes.q sert à quitter.
* J'espère que ça ira.
J'ai quelques remarques que j'insère dans votre code (précédées de *).
Patrice wrote:
#!/usr/bin/env python
# Calculatrice d'heures de vol
# Variables
heures = 0
minutes = 0
resultat_heure = 0
resultat_minute = 0
compteur = 0
aide = "- h : cette aide n - q : pour quitter n
- 0 et 0 : met les compteurs à 0n"
# Programme principal
while 1:
compteur = compteur + 1 # Compteur du nombre
d'opérations
heures = raw_input("Heures : ") # Demande les
heures
if heures == "q": # Pour quitter
break
if heures == "h": # Pour avoir l'aide
print aide
* C'est ici qu'il faut insérer un continue statement (continue) pour
recommencer la boucle (et éviter ainsi les erreurs)
if heures == "":
heures = 0
* Remplacez ceci par :
* if not heures : heures = 0
* D'autre part, si l'input n'est ni 'h' ni 'q' c'est forcément un nombre. Il
est donc possible de le transformer en entier pour la suite de votre code
(en dehors de l'if statement). heures = int(heures) (toutes ces remarques
s'appliquent aussi aux minutes)
if heures == "" and minutes == "": # Quitte
faute d'arguments corrects
print "Entrez des valeurs correctes"
break
* Ce bout de code ne s'effectuera jamais (nous avons changé les valeurs en
0).
if str(heures[0]) == "-": # Regarde le signe
positif ou négatif
* Mettre if heures < 0 (pareil pour les minutes)
minutes = - int(minutes) # Si le signe est
négatif, fais passer les minutes en négatif aussi
* en fait ce code ne fait passer minutes en négatif mais inverse son signe.
Si vous voulez minutes en négatif utilisez -abs(minutes)
if int(heures) == 0 and int(minutes) == 0: #
Remet les compteurs à 0 si 0 est entré à heure et
minutes
resultat_heure = 0
resultat_minute = 0
compteur = 0
resultat_heure = int(resultat_heure) +
int(heures) # Additionne les heures précédentes
avec les nouvelles
* Utilisez resultat_heure += heures (pareil pour les minutes)
resultat_minute = int(resultat_minute) +
int(minutes) # Additionne les minutes précédentes
avec les nouvelles
if int(minutes) >= 60: # Vérifie qu'il n'y a
pas plus de 60 minutes
heures = int(heures) + 1
minutes = int(minutes) - 60
else:
heures = int(heures)
minutes = int(minutes)
* Tout ce bout de code est mal placé. Vous n'utilisez plus les variables
heures et minutes.
if int(resultat_minute) >= 60: # Vérifie
qu'il n'y a pas plus de 60 minutes
resultat_minute = int(resultat_minute) - 60
resultat_heure = int(resultat_heure) + 1
else:
resultat_heure = int(resultat_heure)
resultat_minute = int(resultat_minute)
* Je ne comprends pas à quoi sert int(resultats_minutes). resultats-minutes
est déjà un entier depuis le début du programme.
if int(resultat_minute) < 0: # Si le signe
des minutes est négatif
resultat_heure = int(resultat_heure) - 1 #
transforme l'opération pour un affichage
resultat_minute = 60 + int(resultat_minute) #
correct des heures
else:
resultat_heure = int(resultat_heure)
resultat_minute = int(resultat_minute)
print resultat_heure, "h", resultat_minute,
"m" # Affiche le résultat de l'addition
* Utilisez print '%02d h %02d m' % (resultat_heures, resultat_minutes)
* Adaptez ce format en fonction de vos besoin (par exemple si vos heures
peuvent dépasser 99.
resultat_heure = int(resultat_heure) # Met en
mémoire la nouvelle valeur de l'addition
resultat_minute = int(resultat_minute)
Voici mes problèmes :
- je n'arrive pas à faire en sorte qu'un appui
sur Entrée équivaut à entrer 0
- quand je demande l'aide, je ne sais pas faire
reprendre le programme au départ et donc, erreur !
- je sais que des erreurs apparaissent quand on
commence à avoir des heures négatives
Je pense qu'il faut utiliser def qqchose() pour
que ça soit plus clair et pour que ça fonctionne
mais je ne sais pas trop comment.
Bref, si quelqu'un peut éclairer ma lanterne,
merci par avance.
Patrice
PS : pour utiliser la calculatrice, il suffit
d'entrer les heures, les minutes et le résultat de
l'addition s'affiche.Pour soustraire, il faut
mettre - devant l'heure seulement.
La remise du compteur à 0 se fait en tapant 0 pour
les heures et pour les minutes.q sert à quitter.
J'ai quelques remarques que j'insère dans votre code (précédées de *).
Patrice wrote:
#!/usr/bin/env python
# Calculatrice d'heures de vol
# Variables
heures = 0 minutes = 0 resultat_heure = 0 resultat_minute = 0 compteur = 0 aide = "- h : cette aide n - q : pour quitter n - 0 et 0 : met les compteurs à 0n"
# Programme principal
while 1: compteur = compteur + 1 # Compteur du nombre d'opérations
heures = raw_input("Heures : ") # Demande les heures if heures == "q": # Pour quitter break if heures == "h": # Pour avoir l'aide print aide
* C'est ici qu'il faut insérer un continue statement (continue) pour recommencer la boucle (et éviter ainsi les erreurs)
if heures == "": heures = 0
* Remplacez ceci par : * if not heures : heures = 0 * D'autre part, si l'input n'est ni 'h' ni 'q' c'est forcément un nombre. Il est donc possible de le transformer en entier pour la suite de votre code (en dehors de l'if statement). heures = int(heures) (toutes ces remarques s'appliquent aussi aux minutes)
if heures == "" and minutes == "": # Quitte faute d'arguments corrects print "Entrez des valeurs correctes" break
* Ce bout de code ne s'effectuera jamais (nous avons changé les valeurs en 0).
if str(heures[0]) == "-": # Regarde le signe positif ou négatif * Mettre if heures < 0 (pareil pour les minutes)
minutes = - int(minutes) # Si le signe est négatif, fais passer les minutes en négatif aussi
* en fait ce code ne fait passer minutes en négatif mais inverse son signe. Si vous voulez minutes en négatif utilisez -abs(minutes)
if int(heures) == 0 and int(minutes) == 0: # Remet les compteurs à 0 si 0 est entré à heure et minutes resultat_heure = 0 resultat_minute = 0 compteur = 0
resultat_heure = int(resultat_heure) + int(heures) # Additionne les heures précédentes avec les nouvelles
* Utilisez resultat_heure += heures (pareil pour les minutes)
resultat_minute = int(resultat_minute) + int(minutes) # Additionne les minutes précédentes avec les nouvelles
if int(minutes) >= 60: # Vérifie qu'il n'y a pas plus de 60 minutes heures = int(heures) + 1 minutes = int(minutes) - 60 else: heures = int(heures) minutes = int(minutes)
* Tout ce bout de code est mal placé. Vous n'utilisez plus les variables heures et minutes.
if int(resultat_minute) >= 60: # Vérifie qu'il n'y a pas plus de 60 minutes resultat_minute = int(resultat_minute) - 60 resultat_heure = int(resultat_heure) + 1 else: resultat_heure = int(resultat_heure) resultat_minute = int(resultat_minute)
* Je ne comprends pas à quoi sert int(resultats_minutes). resultats-minutes est déjà un entier depuis le début du programme.
if int(resultat_minute) < 0: # Si le signe des minutes est négatif resultat_heure = int(resultat_heure) - 1 # transforme l'opération pour un affichage resultat_minute = 60 + int(resultat_minute) # correct des heures else: resultat_heure = int(resultat_heure) resultat_minute = int(resultat_minute)
print resultat_heure, "h", resultat_minute, "m" # Affiche le résultat de l'addition
* Utilisez print '%02d h %02d m' % (resultat_heures, resultat_minutes) * Adaptez ce format en fonction de vos besoin (par exemple si vos heures peuvent dépasser 99.
resultat_heure = int(resultat_heure) # Met en mémoire la nouvelle valeur de l'addition resultat_minute = int(resultat_minute)
Voici mes problèmes : - je n'arrive pas à faire en sorte qu'un appui sur Entrée équivaut à entrer 0 - quand je demande l'aide, je ne sais pas faire reprendre le programme au départ et donc, erreur ! - je sais que des erreurs apparaissent quand on commence à avoir des heures négatives Je pense qu'il faut utiliser def qqchose() pour que ça soit plus clair et pour que ça fonctionne mais je ne sais pas trop comment. Bref, si quelqu'un peut éclairer ma lanterne, merci par avance. Patrice PS : pour utiliser la calculatrice, il suffit d'entrer les heures, les minutes et le résultat de l'addition s'affiche.Pour soustraire, il faut mettre - devant l'heure seulement. La remise du compteur à 0 se fait en tapant 0 pour les heures et pour les minutes.q sert à quitter.
* J'espère que ça ira.
Patrice
Benoit HURON a écrit:
J'ai quelques remarques que j'insère dans votre code (précédées de *).
[GROSSE AIDE]
* J'espère que ça ira.
Salut ! Merci pour votre aide (à Roger That aussi). Je m'en vais tenter d'améliorer ça ! :-) Juste une remarque : quand je rentre -0, si je lui demande de vérifier heures < 0, ça ne fonctionne pas car il ne connait que 0 et pas un zéro positif ou négatif... Bref, mes noeuds au cerveau ne sont pas complètement démèlés, mais ça va "viendre" ! A + ... Patrice
Benoit HURON a écrit:
J'ai quelques remarques que j'insère dans votre code (précédées de *).
[GROSSE AIDE]
* J'espère que ça ira.
Salut !
Merci pour votre aide (à Roger That aussi).
Je m'en vais tenter d'améliorer ça ! :-)
Juste une remarque : quand je rentre -0,
si je lui demande de vérifier heures < 0,
ça ne fonctionne pas car il ne connait que
0 et pas un zéro positif ou négatif...
Bref, mes noeuds au cerveau ne sont pas
complètement démèlés, mais ça va "viendre" !
A + ...
Patrice
J'ai quelques remarques que j'insère dans votre code (précédées de *).
[GROSSE AIDE]
* J'espère que ça ira.
Salut ! Merci pour votre aide (à Roger That aussi). Je m'en vais tenter d'améliorer ça ! :-) Juste une remarque : quand je rentre -0, si je lui demande de vérifier heures < 0, ça ne fonctionne pas car il ne connait que 0 et pas un zéro positif ou négatif... Bref, mes noeuds au cerveau ne sont pas complètement démèlés, mais ça va "viendre" ! A + ... Patrice
ingrid123456
Le mardi 17 Août 2004 à 12:57 par Benoit HURON :
J'ai quelques remarques que j'insère dans votre code (précédées de *). Patrice wrote:
#!/usr/bin/env python # Calculatrice d'heures de vol # Variables heures = 0 minutes = 0 resultat_heure = 0 resultat_minute = 0 compteur = 0 aide = "- h : cette aide n - q : pour quitter n - 0 et 0 : met les compteurs à 0n" # Programme principal while 1: compteur = compteur + 1 # Compteur du nombre d'opérations heures = raw_input("Heures : ") # Demande les heures if heures == "q": # Pour quitter break if heures == "h": # Pour avoir l'aide print aide
* C'est ici qu'il faut insérer un continue statement (continue) pour recommencer la boucle (et éviter ainsi les erreurs)
if heures == "": heures = 0
* Remplacez ceci par : * if not heures : heures = 0 * D'autre part, si l'input n'est ni 'h' ni 'q' c'est forcément un nombre. Il est donc possible de le transformer en entier pour la suite de votre code (en dehors de l'if statement). heures = int(heures) (toutes ces remarques s'appliquent aussi aux minutes)
if heures == "" and minutes == "": # Quitte faute d'arguments corrects print "Entrez des valeurs correctes" break
* Ce bout de code ne s'effectuera jamais (nous avons changé les valeurs en 0).
if str(heures[0]) == "-": # Regarde le signe positif ou négatif * Mettre if heures < 0 (pareil pour les minutes)
minutes = - int(minutes) # Si le signe est négatif, fais passer les minutes en négatif aussi
* en fait ce code ne fait passer minutes en négatif mais inverse son signe. Si vous voulez minutes en négatif utilisez -abs(minutes)
if int(heures) == 0 and int(minutes) == 0: # Remet les compteurs à 0 si 0 est entré à heure et minutes resultat_heure = 0 resultat_minute = 0 compteur = 0 resultat_heure = int(resultat_heure) + int(heures) # Additionne les heures précédentes avec les nouvelles
* Utilisez resultat_heure += heures (pareil pour les minutes)
resultat_minute = int(resultat_minute) + int(minutes) # Additionne les minutes précédentes avec les nouvelles if int(minutes) >= 60: # Vérifie qu'il n'y a pas plus de 60 minutes heures = int(heures) + 1 minutes = int(minutes) - 60 else: heures = int(heures) minutes = int(minutes)
* Tout ce bout de code est mal placé. Vous n'utilisez plus les variables heures et minutes.
if int(resultat_minute) >= 60: # Vérifie qu'il n'y a pas plus de 60 minutes resultat_minute = int(resultat_minute) - 60 resultat_heure = int(resultat_heure) + 1 else: resultat_heure = int(resultat_heure) resultat_minute = int(resultat_minute)
* Je ne comprends pas à quoi sert int(resultats_minutes). resultats-minutes est déjà un entier depuis le début du programme.
if int(resultat_minute) < 0: # Si le signe des minutes est négatif resultat_heure = int(resultat_heure) - 1 # transforme l'opération pour un affichage resultat_minute = 60 + int(resultat_minute) # correct des heures else: resultat_heure = int(resultat_heure) resultat_minute = int(resultat_minute) print resultat_heure, "h", resultat_minute, "m" # Affiche le résultat de l'addition
* Utilisez print '%02d h %02d m' % (resultat_heures, resultat_minutes) * Adaptez ce format en fonction de vos besoin (par exemple si vos heures peuvent dépasser 99.
resultat_heure = int(resultat_heure) # Met en mémoire la nouvelle valeur de l'addition resultat_minute = int(resultat_minute) Voici mes problèmes : - je n'arrive pas à faire en sorte qu'un appui sur Entrée équivaut à entrer 0 - quand je demande l'aide, je ne sais pas faire reprendre le programme au départ et donc, erreur ! - je sais que des erreurs apparaissent quand on commence à avoir des heures négatives Je pense qu'il faut utiliser def qqchose() pour que ça soit plus clair et pour que ça fonctionne mais je ne sais pas trop comment. Bref, si quelqu'un peut éclairer ma lanterne, merci par avance. Patrice PS : pour utiliser la calculatrice, il suffit d'entrer les heures, les minutes et le résultat de l'addition s'affiche.Pour soustraire, il faut mettre - devant l'heure seulement. La remise du compteur à 0 se fait en tapant 0 pour les heures et pour les minutes.q sert à quitter.
* J'espère que ça ira.
Bonjour, J ai pu constater que la programmation en python n avait pas de secret pour vous pourriez vous m aider à décider un prog ? Je vous remercie par avance .
Le mardi 17 Août 2004 à 12:57 par Benoit HURON :
> J'ai quelques remarques que j'insère dans votre code
> (précédées de *).
>
> Patrice wrote:
>
>> #!/usr/bin/env python
>>
>> # Calculatrice d'heures de vol
>>
>> # Variables
>>
>> heures = 0
>> minutes = 0
>> resultat_heure = 0
>> resultat_minute = 0
>> compteur = 0
>> aide = "- h : cette aide n - q : pour quitter n
>> - 0 et 0 : met les compteurs à 0n"
>>
>> # Programme principal
>>
>> while 1:
>> compteur = compteur + 1 # Compteur du nombre
>> d'opérations
>>
>> heures = raw_input("Heures : ") # Demande les
>> heures
>> if heures == "q": # Pour quitter
>> break
>> if heures == "h": # Pour avoir l'aide
>> print aide
>>
> * C'est ici qu'il faut insérer un continue statement (continue) pour
> recommencer la boucle (et éviter ainsi les erreurs)
>
>
>> if heures == "":
>> heures = 0
>>
> * Remplacez ceci par :
> * if not heures : heures = 0
> * D'autre part, si l'input n'est ni 'h' ni 'q' c'est forcément un
> nombre. Il
> est donc possible de le transformer en entier pour la suite de votre code
> (en dehors de l'if statement). heures = int(heures) (toutes ces remarques
> s'appliquent aussi aux minutes)
>
>
>> if heures == "" and minutes == "": # Quitte
>> faute d'arguments corrects
>> print "Entrez des valeurs correctes"
>> break
>>
> * Ce bout de code ne s'effectuera jamais (nous avons changé les valeurs
> en
> 0).
>>
>>
>> if str(heures[0]) == "-": # Regarde le signe
>> positif ou négatif
>> * Mettre if heures < 0 (pareil pour les minutes)
>
>> minutes = - int(minutes) # Si le signe est
>> négatif, fais passer les minutes en négatif aussi
>>
> * en fait ce code ne fait passer minutes en négatif mais inverse son
> signe.
> Si vous voulez minutes en négatif utilisez -abs(minutes)
>>
>> if int(heures) == 0 and int(minutes) == 0: #
>> Remet les compteurs à 0 si 0 est entré à heure et
>> minutes
>> resultat_heure = 0
>> resultat_minute = 0
>> compteur = 0
>>
>>
>> resultat_heure = int(resultat_heure) +
>> int(heures) # Additionne les heures précédentes
>> avec les nouvelles
>>
> * Utilisez resultat_heure += heures (pareil pour les minutes)
>
>> resultat_minute = int(resultat_minute) +
>> int(minutes) # Additionne les minutes précédentes
>> avec les nouvelles
>>
>>
>> if int(minutes) >= 60: #
>> Vérifie qu'il n'y a
>> pas plus de 60 minutes
>> heures = int(heures) + 1
>> minutes = int(minutes) - 60
>> else:
>> heures = int(heures)
>> minutes = int(minutes)
>>
> * Tout ce bout de code est mal placé. Vous n'utilisez plus les variables
> heures et minutes.
>>
>>
>> if int(resultat_minute) >= 60: #
>> Vérifie
>> qu'il n'y a pas plus de 60 minutes
>> resultat_minute = int(resultat_minute) - 60
>> resultat_heure = int(resultat_heure) + 1
>> else:
>> resultat_heure = int(resultat_heure)
>> resultat_minute = int(resultat_minute)
>>
> * Je ne comprends pas à quoi sert int(resultats_minutes).
> resultats-minutes
> est déjà un entier depuis le début du programme.
>>
>>
>> if int(resultat_minute) < 0: # Si le signe
>> des minutes est négatif
>> resultat_heure = int(resultat_heure) - 1 #
>> transforme l'opération pour un affichage
>> resultat_minute = 60 + int(resultat_minute) #
>> correct des heures
>> else:
>> resultat_heure = int(resultat_heure)
>> resultat_minute = int(resultat_minute)
>>
>>
>> print resultat_heure, "h", resultat_minute,
>> "m" # Affiche le résultat de l'addition
>>
> * Utilisez print '%02d h %02d m' % (resultat_heures, resultat_minutes)
> * Adaptez ce format en fonction de vos besoin (par exemple si vos heures
> peuvent dépasser 99.
>
>
>> resultat_heure = int(resultat_heure) # Met en
>> mémoire la nouvelle valeur de l'addition
>> resultat_minute = int(resultat_minute)
>>
>> Voici mes problèmes :
>> - je n'arrive pas à faire en sorte qu'un appui
>> sur Entrée équivaut à entrer 0
>> - quand je demande l'aide, je ne sais pas faire
>> reprendre le programme au départ et donc, erreur !
>> - je sais que des erreurs apparaissent quand on
>> commence à avoir des heures négatives
>> Je pense qu'il faut utiliser def qqchose() pour
>> que ça soit plus clair et pour que ça fonctionne
>> mais je ne sais pas trop comment.
>> Bref, si quelqu'un peut éclairer ma lanterne,
>> merci par avance.
>> Patrice
>> PS : pour utiliser la calculatrice, il suffit
>> d'entrer les heures, les minutes et le résultat de
>> l'addition s'affiche.Pour soustraire, il faut
>> mettre - devant l'heure seulement.
>> La remise du compteur à 0 se fait en tapant 0 pour
>> les heures et pour les minutes.q sert à quitter.
>>
> * J'espère que ça ira.
Bonjour,
J ai pu constater que la programmation en python n avait pas de secret pour vous pourriez vous m aider à décider un prog ?
Je vous remercie par avance .
J'ai quelques remarques que j'insère dans votre code (précédées de *). Patrice wrote:
#!/usr/bin/env python # Calculatrice d'heures de vol # Variables heures = 0 minutes = 0 resultat_heure = 0 resultat_minute = 0 compteur = 0 aide = "- h : cette aide n - q : pour quitter n - 0 et 0 : met les compteurs à 0n" # Programme principal while 1: compteur = compteur + 1 # Compteur du nombre d'opérations heures = raw_input("Heures : ") # Demande les heures if heures == "q": # Pour quitter break if heures == "h": # Pour avoir l'aide print aide
* C'est ici qu'il faut insérer un continue statement (continue) pour recommencer la boucle (et éviter ainsi les erreurs)
if heures == "": heures = 0
* Remplacez ceci par : * if not heures : heures = 0 * D'autre part, si l'input n'est ni 'h' ni 'q' c'est forcément un nombre. Il est donc possible de le transformer en entier pour la suite de votre code (en dehors de l'if statement). heures = int(heures) (toutes ces remarques s'appliquent aussi aux minutes)
if heures == "" and minutes == "": # Quitte faute d'arguments corrects print "Entrez des valeurs correctes" break
* Ce bout de code ne s'effectuera jamais (nous avons changé les valeurs en 0).
if str(heures[0]) == "-": # Regarde le signe positif ou négatif * Mettre if heures < 0 (pareil pour les minutes)
minutes = - int(minutes) # Si le signe est négatif, fais passer les minutes en négatif aussi
* en fait ce code ne fait passer minutes en négatif mais inverse son signe. Si vous voulez minutes en négatif utilisez -abs(minutes)
if int(heures) == 0 and int(minutes) == 0: # Remet les compteurs à 0 si 0 est entré à heure et minutes resultat_heure = 0 resultat_minute = 0 compteur = 0 resultat_heure = int(resultat_heure) + int(heures) # Additionne les heures précédentes avec les nouvelles
* Utilisez resultat_heure += heures (pareil pour les minutes)
resultat_minute = int(resultat_minute) + int(minutes) # Additionne les minutes précédentes avec les nouvelles if int(minutes) >= 60: # Vérifie qu'il n'y a pas plus de 60 minutes heures = int(heures) + 1 minutes = int(minutes) - 60 else: heures = int(heures) minutes = int(minutes)
* Tout ce bout de code est mal placé. Vous n'utilisez plus les variables heures et minutes.
if int(resultat_minute) >= 60: # Vérifie qu'il n'y a pas plus de 60 minutes resultat_minute = int(resultat_minute) - 60 resultat_heure = int(resultat_heure) + 1 else: resultat_heure = int(resultat_heure) resultat_minute = int(resultat_minute)
* Je ne comprends pas à quoi sert int(resultats_minutes). resultats-minutes est déjà un entier depuis le début du programme.
if int(resultat_minute) < 0: # Si le signe des minutes est négatif resultat_heure = int(resultat_heure) - 1 # transforme l'opération pour un affichage resultat_minute = 60 + int(resultat_minute) # correct des heures else: resultat_heure = int(resultat_heure) resultat_minute = int(resultat_minute) print resultat_heure, "h", resultat_minute, "m" # Affiche le résultat de l'addition
* Utilisez print '%02d h %02d m' % (resultat_heures, resultat_minutes) * Adaptez ce format en fonction de vos besoin (par exemple si vos heures peuvent dépasser 99.
resultat_heure = int(resultat_heure) # Met en mémoire la nouvelle valeur de l'addition resultat_minute = int(resultat_minute) Voici mes problèmes : - je n'arrive pas à faire en sorte qu'un appui sur Entrée équivaut à entrer 0 - quand je demande l'aide, je ne sais pas faire reprendre le programme au départ et donc, erreur ! - je sais que des erreurs apparaissent quand on commence à avoir des heures négatives Je pense qu'il faut utiliser def qqchose() pour que ça soit plus clair et pour que ça fonctionne mais je ne sais pas trop comment. Bref, si quelqu'un peut éclairer ma lanterne, merci par avance. Patrice PS : pour utiliser la calculatrice, il suffit d'entrer les heures, les minutes et le résultat de l'addition s'affiche.Pour soustraire, il faut mettre - devant l'heure seulement. La remise du compteur à 0 se fait en tapant 0 pour les heures et pour les minutes.q sert à quitter.
* J'espère que ça ira.
Bonjour, J ai pu constater que la programmation en python n avait pas de secret pour vous pourriez vous m aider à décider un prog ? Je vous remercie par avance .