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?
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])
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 .
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.
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'