Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python] Découper un integer

Calculer la somme des chiffres d'un nombre.

Sujet résolu
27 février 2010 à 18:28:13

Bonjour, j'ai besoin d'aide.

J'ai une variable qui vaut une valeur quelconque (mettons 42) et je veux pouvoir calculer la somme des chiffres (donc 4 + 2). Si je ne m'abuse, cela se résume à découper l'integer pour en additionner les parties.

J'ai essayé d'écrire une fonction qui le ferait mais je me suis heurté à un problème : comment faire pour que l'interpréteur sache quoi additionner car à ma connaissance on ne peut pas pas écrire
variable_numérique [i]


De plus, on ne peut pas faire
len(variable_numérique)
pour déterminer le nombre de chiffres composant le nombre.
Car il faudrait que la fonction puisse traiter les nombres à 2 ou 3 chiffres.

J'espère avoir été clair mais n'hésitez pas à demander pour plus d'informations. Si vous avez la solution ou même une idée, répondez.
  • Partager sur Facebook
  • Partager sur Twitter
27 février 2010 à 19:04:14

Bonjour, tu peux faire la liste des chiffres puis faire tes opérations sur cette liste (avec la fonction sum dans ton cas). Pour cela il y a plusieurs façons.

La méthode «bourrin» et simple :
>>> map(int,str(123)) # convertit en chaine puis transforme chaque caractère en entier
[1, 2, 3]

La méthode matheux pour 3 chiffres : 123 = 1.10² + 2.10¹ + 3.10 = (1.10 + 2).10 + 3
>>> def chiffres(a3a2a1):
...     a1 = a3a2a1 % 10
...     a3a2 = a3a2a1 / 10
...     a2 = a3a2 % 10
...     a3 = a3a2 / 10
...     return [a1, a2, a3]
... 
>>> chiffres(123)
[3, 2, 1]

La méthode matheux générale :
>>> def chiffres(n):
...     c = []
...     while n != 0:
...         c.append(n % 10)
...         n = n / 10
...     return c
... 
>>> chiffres(1230)
[0, 3, 2, 1]
  • Partager sur Facebook
  • Partager sur Twitter
27 février 2010 à 19:24:50

Ça y est, ça marche enfin !

Merci beaucoup Dentuk pour tes 3 réponses.
Je n'avais pas pensé à utiliser le modulo et que diviser par un int donne un int.

Par contre je ne comprends pas vraiment le fonctionnement du 1er exemple.
  • Partager sur Facebook
  • Partager sur Twitter
27 février 2010 à 19:43:33

Quelques exemples, je sais pas si ça suffira :
>>> def succ(n): return n+1
... 
>>> succ(2)
3
>>> map(succ, [0,1,2,3,4]) # applique succ à chaque élément de la liste
[1, 2, 3, 4, 5]
>>> int("12")
12
>>> map(int, ["12",12.0,12]) # applique int à chaque élément de la liste
[12, 12, 12]
>>> str(123)
'123'
>>> map(int, str(123)) # applique int à chaque caractère de str(123)
[1, 2, 3]
  • Partager sur Facebook
  • Partager sur Twitter
27 février 2010 à 19:52:15

Merci pour les exemples, j'ai enfin compris.
Et puis j'ai découvert plein de nouvelles fonctions !

Résolu.
  • Partager sur Facebook
  • Partager sur Twitter
27 février 2010 à 21:15:02

sum(map(int,str(1234)))

ou
reduce(lambda x,y:int(x)+int(y),str(1234))
  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

26 octobre 2021 à 14:51:45 - Message modéré pour le motif suivant : Réponse à un message supprimé


26 octobre 2021 à 15:32:59

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter

Moderateur forum || FAQ 3D || discord 3D francophone || OC Tweak script