Débutant cherche de l'aide !

Syba - 18 oct. 2013 à 17:32
lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 - 26 oct. 2013 à 16:36
Bonjour,

On vient de commencer l'algorithme et python. J'ai toujours pas très bien saisi les fonctions de base. Je vous pose ici deux petits exercices, afin de pouvoir comprendre comment ca marche.

Ecrire en algorithme, et le traduire ensuite en python, qui:
-A partir d'un nombre donné de jours, donne le nombre d'années, de mois et de jours qui le composent.
-A partir d'une somme d'argent donnée, donne le nombre minimal de billets de 50, de 20, et de pièces de 2, et de 1.

J'ai déja fait le premier algorithme, quant au second je sais pas très bien comment s'y prendre. Et pour le code python, meme si j'applique le cours, càd traduire les fonctions une par une... lors du test avec le logiciel, il m'affiche une erreur de syntaxe sans préciser dans quelle ligne elle a été détectée.

Voila tout, merci d'avance pour votre aide, et à bientot !

8 réponses

jordane45 Messages postés 38219 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juillet 2024 344
18 oct. 2013 à 17:56
jordane45 Messages postés 38219 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juillet 2024 344
Modifié par jordane45 le 18/10/2013 à 18:55
En ce qui concerne cet exercie.. c'est des maths de collège..(et encore...)
-A partir d'une somme d'argent donnée, donne le nombre minimal de billets de 50, de 20, et de pièces de 2, et de 1.


Commencer par diviser le nombre par 50 : Donne le nombre de billets de 50
Prendre ce qui reste.. le diviser par 20 : -> Nb billets de 20...
Etc...

meme si j'applique le cours, càd traduire les fonctions une par une... lors du test avec le logiciel, il m'affiche une erreur de syntaxe sans préciser dans quelle ligne elle a été détectée

Sans nous montrer le code en question ni nous fournir le message d'erreur rencontré.. c'est sur que nous ne pourrons pas t'aider...



Cordialement,
Jordane
Bonsoir,
Tout d'abord, je m'excuse car je n'étais pas assez clair, et j'ai pas respecté certaines règles sans m'en rendre compte.
Ensuite, je tiens à vous remercier pour votre réponse. Mais, le problème en lui meme n'est pas le raisonnement mathématique de toute évidence, mais juste comment l'exprimer d'une manière élégante d'une part, et juste de l'autre!
Pour le premier algo, voici mon travail:

Variables:
njour, a, m, j: entier
Début
écrire("Introduisez un nombre de jours:");
lire(njour);
j <- njour mod 30;
m <- ( njour / 30 ) mod 12;
a <- njour / 365
écrire(njour, "valent:", a, "an(s)", m, "mois", j,"jour(s)");
Fin

Lorsque je traduis en python, ca m'affiche un message du genre: Erreur de syntaxe... etc. Ce que je suppose, c'est qu'il y a plusieurs versions de python, et c'est sur qu'il existe des différences entre ces versions, ca doit etre ca le problème. Mais dans ce cas la, quelle est la version la plus courante et la plus connue ? Et ces différences sont à quel niveau ?
J'attends votre réponse avec impatience !
jordane45 Messages postés 38219 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juillet 2024 344
18 oct. 2013 à 22:58
0
N = input("Introduisez un nombre de jours:")
a = N // 365
N = N-a*365
m = N // 30
N = N-m*30
j = N
print(njour, "valent:", a, "an(s)", m, "mois", j,"jour(s)")

quelle est l'erreur dans ce code svp ?

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 77
24 oct. 2013 à 10:17
Bonjour,

L'instruction "input" récupère une chaine de caractères de type string (str)
Si vous voulez effectuer des calculs numériques vous devrez la transformer dans un type compatible "integer" (int)

Vous pouvez coder directement:
N = int(input("Introduisez un nombre de jours:"))


La variable "njour" n'existe pas ça ira mieux avec:
print(N, "valent:", a, "an(s)", m, "mois", j,"jour(s)")


--
Traceback (most recent call last):
File "C:/Python33/1.py", line 1, in <module>
N = int(input("Introduisez un nombre de jours:"))
ValueError: invalid literal for int() with base 10: ''

Il m'affiche ceci..
lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 77
25 oct. 2013 à 16:26
Bonjour,

Ma tête à couper que vous n'avez pas entré des caractères numériques.
Le même code avec un contrôle:

N = input("Introduisez un nombre de jours:")
if N.isnumeric():
N = int(N)
a = N // 365
N = N-a*365
m = N // 30
N = N-m*30
j = N
print(N, "valent:", a, "an(s)", m, "mois", j,"jour(s)")
else:
print("ERREUR : Entrez des caracteres numériques!!!")


--
lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 77
26 oct. 2013 à 16:36
Bonjour,

Mes réponses précédentes supposaient que vous êtes en Python V3
Si vous êtes en Python V2 vous devrez coder:
N = raw_input("Introduisez un nombre de jours:")


--
Rejoignez-nous