Besoin d'aide pour un petit programme Python.

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Besoin d'aide pour un petit programme Python.

Message par fakbill » 16 oct. 2015 14:51

et donc ca donne?
Et nous n'avons pas encore vu le 'int' en réalité, donc je ne sais pas trop à quoi cela correspond...
misère de misère (rien contre toi mais contre la facon dont on vous enseigne tout ca...) : "int" c'est "integer" et en info c'est un entier (au passage, les entiers en python3 ne sont pas comme les entiers dans bien d'autres langages car...car quoi?? (que ceux qui sont en spé répondent) )
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.


Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Besoin d'aide pour un petit programme Python.

Message par fakbill » 16 oct. 2015 18:03

corderaide : oui mais ca c'est le cas en java aussi ou dans d'autre langages :) LE changement entre python2 et python3 pour qui fait un peu de numérique en pur python c'est....que le type "long" m'existe plus en python3. En python", on avait les int qui étaient des entiers machine et, si le nombre devenait trop grand, ca castait automatiquement en long. Un "long"c'est un nombre de digit non borné (enfin borné un jour par la mémoire dispo mais pas par une limite de 32 ou 64bits) Voir https://docs.python.org/2/library/stdty ... pesnumeric

En python3, il n'y a plus qu'un type entier appellé "int"...donc une multiplication de deux "int" en python3 est loin de couter la même chose selon que les nombres en questions "rentrent" dans un entier machine ou pas (dans ce cas, python passe à ca https://en.wikipedia.org/wiki/Arbitrary ... arithmetic et ca coute beaucoup plus cher (mais c'est transparent pour l'utilisateur)).

Bref, en python, la question "qu'est ce qu'un entier" est assez fun.
Un float en python c'est, sur toutes les plateformes que je connaisse, "IEEE-754 double precision”. Il n'y a pas de merdouille comme en C entre float et double.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Besoin d'aide pour un petit programme Python.

Message par fakbill » 16 oct. 2015 18:06

ps : cette histoire de taille de nombre est un gag dans les calculs de complexité. Parfois, on trouve des preuves de complexité qui "oublient" le fait qu'une addition ou une multiplication n'a un cout constant que si les nombres tiennent dans des entiers machine. Si l'algo utilise des nombres qui peuvent devenir trop grands pour un entier machine alors + et * ne coutent plus un temps constant mais plus que ca ;)
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

cloclo816

Re: Besoin d'aide pour un petit programme Python.

Message par cloclo816 » 23 oct. 2015 13:47

Bonjour,
Excusez moi ne pas avoir répondu à toutes vos réponses, mais je ne comprenais pas toutes vos explications...
J'ai réussi mon exercice, sauf que la suite traite de la question suivante: Je dois créer une fonction qui recevant un entier naturel non nul renvoie le produit des chiffres de ce nombre.
J'ai fait cela, mais ça ne fonctionne absolument pas, et je ne vois pas d'autres méthodes. Effectivement, nous n'avons pas réellement de cours là-dessus, et étant débutante, il est difficile de découvrir de soi-même la discipline...

Code : Tout sélectionner

def produit_des_chiffres (a):
    produit = 1
    while a != 0:
        produit= produit * a%10
        a = a//10
    return produit 
    
Merci de votre aide !
De plus, j'ai déjà la somme, et je dois lier les deux, pour que lorsque je rentre cet entier il en ressorte directement la somme et le produit ....
Dernière modification par cloclo816 le 23 oct. 2015 16:57, modifié 1 fois.

Charo

Re: Besoin d'aide pour un petit programme Python.

Message par Charo » 23 oct. 2015 14:04

Protip : quand t'as un bug dans le genre, un moyen simple de trouver où tu as faux c'est d'afficher les calculs que fait ton programme :

Code : Tout sélectionner

def produit_des_chiffres (a):
    produit = 1
    while a != 0:
        produit= produit * a%10
        print("produit=", produit)
        a = a//10
        print("a=", a)
    return produit 
Dans le shell :

Code : Tout sélectionner

In [18]: produit_des_chiffres(1234)
produit= 4
a= 123
produit= 2
a= 12
produit= 4
a= 1
produit= 4
a= 0
Out[18]: 4
On remarque rapidement que le problème c'est que produit * a%10 est interprété comme (produit * a)%10 et non produit * (a%10) comme on le voudrait.

cloclo816

Re: Besoin d'aide pour un petit programme Python.

Message par cloclo816 » 23 oct. 2015 16:55

Ah oui je vois, d'accord merci beaucoup, en rajoutant les parenthèses ça fonctionne !

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Besoin d'aide pour un petit programme Python.

Message par fakbill » 23 oct. 2015 20:16

Une string ce n'est jamais d'un tableau qui contient le code ascii des lettres. (c'est FAUX car c'est de l'UTF8 en python3 mais bon c'est l'idée...c'est un vecteur de lettres.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Besoin d'aide pour un petit programme Python.

Message par fakbill » 24 oct. 2015 12:34

JustSayin' : sql c'est pour donner une idée de ce qu'est une base de données.
Pour le code : Souvent, au début de sup, on demande de coder des choses assez triviales qui existe dans le coeur ou dans la lib de python...donc ça ne peut pas être du très bon code python ;). Du moment qu'on le DIT aux étudiants je ne vois pas le problème. Petit à petit, quand les problèmes se compliquent, le code demandé commence à ressembler à du python.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Répondre