Quiero tomar el enésimo dígito de un número de N dígitos en python. Por ejemplo:
number = 9876543210 i = 4 number[i] # should return 6
¿Cómo puedo hacer algo así en python? ¿Debería cambiarlo primero a cadena y luego cambiarlo a int para el cálculo?
Primero trata el número como una cuerda
number = 9876543210 number = str(number)
Luego para obtener el primer dígito:
number[0]
El cuarto dígito:
number[3]
EDITAR:
Esto devolverá el dígito como un carácter, no como un número. Para convertirlo de nuevo usa:
int(number[0])
Puedes hacerlo con división entera y métodos de rest.
def get_digit(number, n): return number // 10**n % 10 get_digit(987654321, 0) # 1 get_digit(987654321, 5) # 6
La //
realiza una división de enteros por una potencia de diez para mover el dígito a la posición de las unidades, luego el %
obtiene el rest después de la división por 10. Tenga en cuenta que la numeración en este esquema utiliza la indexación de cero y comienza desde el lado derecho de número.
Recomendaría agregar un cheque booleano para la magnitud del número. Estoy convirtiendo un alto valor de milisegundos a datetime. Tengo números del 2 al 200,000,200 por lo que 0 es una salida válida. La función que tiene @Chris Mueller devolverá 0 incluso si el número es menor que 10 ** n.
def get_digit(number, n): return number // 10**n % 10 get_digit(4231, 5) # 0
def get_digit(number, n): if number - 10**n < 0: return False return number // 10**n % 10 get_digit(4321, 5) # False
Debe tener cuidado al verificar el estado booleano de este valor de retorno. Para permitir que 0 sea un valor de retorno válido, no puede usarlo solo if get_digit:
if get_digit is False:
utilizar if get_digit is False:
para evitar que 0
comporte como un valor falso.
Ok, primero que todo, usa la función str () en python para convertir ‘número’ en una cadena
number = 9876543210 #declaring and assigning number = str(number) #converting
Luego obtenga el índice, 0 = 1, 4 = 3 en notación de índice, use int () para convertirlo de nuevo en un número
print(int(number[3])) #printing the int format of the string "number"'s index of 3 or '6'
si te gusta en forma corta
print(int(str(9876543210)[3])) #condensed code lol, also no more variable 'number'