web-dev-qa-db-fra.com

Comment prendre le nième chiffre d'un nombre en python

Je veux prendre le nième chiffre d'un nombre de N chiffres en python. Par exemple:

number = 9876543210
i = 4
number[i] # should return 6

Comment puis-je faire quelque chose comme ça en python? Devrais-je le changer d'abord en chaîne, puis en int pour le calcul?

13
zakaria musa

Commencez par traiter le numéro comme une chaîne

number = 9876543210
number = str(number)

Puis pour obtenir le premier chiffre:

number[0]

Le quatrième chiffre:

number[3]

MODIFIER:

Cela retournera le chiffre sous forme de caractère et non sous forme de nombre. Pour le reconvertir, utilisez:

int(number[0])
13
Patrick Haugh

Vous pouvez le faire avec les méthodes de division entière et de reste

def get_digit(number, n):
    return number // 10**n % 10

get_digit(987654321, 0)
# 1

get_digit(987654321, 5)
# 6

Le // effectue une division entière par une puissance de dix pour déplacer le chiffre vers la position des unités, puis le % obtient le reste après la division par 10. Notez que la numérotation dans ce schéma utilise l'indexation zéro et commence à droite . 

35
Chris Mueller

Je recommanderais d’ajouter une vérification booléenne de l’ampleur du nombre. Je convertis une valeur élevée en millisecondes en date/heure. J'ai des nombres de 2 à 200 000 200, donc 0 est une sortie valide. La fonction de @Chris Mueller renverra 0 même si le nombre est inférieur à 10 ** n.

def get_digit(number, n):
    return number // 10**n % 10

get_digit(4231, 5)
# 6

def get_digit(number, n):
    if number - 10**n < 0:
        return False
    return number // 10**n % 10

get_digit(4321, 5)
# False

Vous devez être prudent lors de la vérification de l'état booléen de cette valeur de retour. Pour autoriser 0 comme valeur de retour valide, vous ne pouvez pas simplement utiliser if get_digit:. Vous devez utiliser if get_digit is False: pour que 0 ne se comporte pas comme une valeur fausse.

0
Nathan Pyle

Ok, tout d’abord, utilisez la fonction str () en python pour transformer 'nombre' en chaîne

number = 9876543210 #declaring and assigning
number = str(number) #converting

Puis obtenez l'index, 0 = 1, 4 = 3 en notation d'index, utilisez int () pour le transformer en nombre

print(int(number[3])) #printing the int format of the string "number"'s index of 3 or '6'

si vous l'aimez en abrégé

print(int(str(9876543210)[3])) #condensed code lol, also no more variable 'number'
0
GeekOverdose