algorytm.org

Implementacja w Python



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Numer dowodu osobistego - Implementacja w Python
Ocena użytkownikóww: *****  / 5
SłabyŚwietny
Nadesłany przez pako, 04 lipca 2011 14:55
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

do_1_py.py:
#weryfikacja numeru dowodu osobistego
#www.algorytm.org

letter_values = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
letter_values_len = 36;
 
def get_letter_value(letter):
    for i in xrange(0, letter_values_len):
        if letter == letter_values[i]:
            return i
    return -1
 
def check_id_number(id_number):
    # nieprawidlowa dlugosc
    if len(id_number) != 9:
        return False
    # nieprawidlowa seria dowodu
    for i in xrange(0, 3):
        if get_letter_value(id_number[i]) < 10:
            return False
    # nieprawidlowy numer dowodu
    for i in xrange(3, 9):
        if get_letter_value(id_number[i]) < 0 \
           or get_letter_value(id_number[i]) > 9:
            return False

    checkSum = 7 * get_letter_value(id_number[0]);
    checkSum += 3 * get_letter_value(id_number[1]);
    checkSum += 1 * get_letter_value(id_number[2]);
    checkSum += 7 * get_letter_value(id_number[4]);
    checkSum += 3 * get_letter_value(id_number[5]);
    checkSum += 1 * get_letter_value(id_number[6]);
    checkSum += 7 * get_letter_value(id_number[7]);
    checkSum += 3 * get_letter_value(id_number[8]);
    checkSum %= 10;
    if checkSum != get_letter_value(id_number[3]):
        return False
    return True
Komentarze
photo
+1 # Romek 2014-01-07 02:22
"nieprawidłowa seria dowodu " powinna wystąpić gdy jako litera będzie użyta litera O lub Q
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz