Skip to content

Instantly share code, notes, and snippets.

@rbonvall
Created July 5, 2010 23:56
Show Gist options
  • Save rbonvall/464824 to your computer and use it in GitHub Desktop.
Save rbonvall/464824 to your computer and use it in GitHub Desktop.
Dígito verificador del RUT en Python
# 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
@ShelbyCobraGT500
Copy link

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'

@DiegoArrieta
Copy link

Muy bueno! agradecido, no es malo validarlo del lado del servidor.

@unho
Copy link

unho commented Jun 4, 2019

Es para el RUT de Chile o para el de Uruguay?

@mraddatz
Copy link

De Chile

@nikom1912
Copy link

Gracias Amigo, me sirvió mucho. Saludos

@katacliny
Copy link

Mil Gracias !!

@jtperez2
Copy link

grande! todavía vigente

@Francisco-88
Copy link

muchas gracias

@michalexvr
Copy link

michalexvr commented Apr 25, 2023

#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'

@alvaro-diaz-valenzuela
Copy link

Todavía vigente, muchas gracias. Además el detalle de @michalexvr está muy bueno.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment