-
-
Save rbonvall/464824 to your computer and use it in GitHub Desktop.
# encoding=utf-8 | |
# Obtener el dígito verificador del RUT en Python. | |
# | |
# La función recibe el RUT como un entero, | |
# y entrega el dígito verificador como un entero. | |
# Si el resultado es 10, el RUT es "raya k". | |
from itertools import cycle | |
def digito_verificador(rut): | |
reversed_digits = map(int, reversed(str(rut))) | |
factors = cycle(range(2, 8)) | |
s = sum(d * f for d, f in zip(reversed_digits, factors)) | |
return (-s) % 11 |
Gracias!
Hermano... me ahorraste montón de tiempo... ahora cabe preguntarte... puedo usarlo en mi proyecto de titulo para validar mis formularios?
En Ruby:
def calcula_dv(rut_base)
reversed_digits = rut_base.to_s.reverse.chars.map(&:to_i)
factors = (2..7).to_a.cycle
suma = reversed_digits.zip(factors).inject(0) {|sum, (d, f)| sum + d * f }
dv = (-suma) % 11 == 10 ? 'K' : (-suma) % 11
end
Gracias @jrovegno ;-)
vale compadre, te pasaste 👍
Hola sabes que me da ese error :
como puedo solucionarlo
Traceback (most recent call last):
File "", line 1, in
File "", line 7, in udf_rn103_validar_dv
File "", line 7, in
ValueError: invalid literal for int() with base 10: 'K'
Muy bueno! agradecido, no es malo validarlo del lado del servidor.
Es para el RUT de Chile o para el de Uruguay?
De Chile
Gracias Amigo, me sirvió mucho. Saludos
Mil Gracias !!
grande! todavía vigente
muchas gracias
#Incluye la K
from itertools import cycle
def digito_verificador(rut):
reversed_digits = map(int, reversed(str(rut)))
factors = cycle(range(2, 8))
s = sum(d * f for d, f in zip(reversed_digits, factors))
return (-s) % 11 if (-s) % 11 < 10 else 'K'
Todavía vigente, muchas gracias. Además el detalle de @michalexvr está muy bueno.
me acabas de ahorrar tiempo, gracias bomba