TC Kimlik Numarası Algoritması

@leventp'nin konsol üssü sohbetinde bahsettiği TC kimlik numarası algoritmasını pythonda yazmıştım daha önce. verilen kimlik numarasının doğruluğunu incelemekten öte, numarası verilen kişinin kütüğündeki akrabalarının TC kimlik numaralarını da yazdırabiliyor.

import argparse

def tc(tc, x=0):
    tc = int(str(tc)[:9])
    first9 = str(tc+29999*x)
    digit10 = (7*(int(first9[0])+int(first9[2])+int(first9[4])
                 +int(first9[6])+int(first9[8]))-(int(first9[1])
                 +int(first9[3])+int(first9[5])+int(first9[7])))%10
    first10 = first9+str(digit10)
    digit11 = str(sum(int(first10[x]) for x in range(10))%10)
    return first10+digit11

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('tc', help='Örnek: 123456789(ilk 9 hane) ya da 12345678950(ilk 11 hane)')
    parser.add_argument('-a', '--amount', type=int, help='yazdırılması istenen akraba sayısı',
                        default=20)
    args = parser.parse_args()
    for i in range(-args.amount//2, args.amount//2+1):
        if i == 0:
            msg = ''
            if len(args.tc) == 11:
                if args.tc == tc(args.tc):
                    msg = 'doğru'
                else:
                    msg = 'yanlış'
            print(tc(args.tc), '<--Verilen TC', msg)
        else:
            print(tc(args.tc, i))
BeğenFavori PaylaşYorum yap