校驗身份證號碼並輸出個人信息(Python123)


校驗身份證號碼並輸出個人信息

描述

  1. 中國目前采用的是18位身份證號,其第7-10位數字是出生年,11-12位是出生月份,13-14是出生日期,第17位是性別,奇數為男性,偶數為女性,第18位是校驗位。
    如果身份證號碼的其中一位填錯了(包括最后一個校驗位),則校驗算法可以檢測出來。如果身份證號的相鄰2位填反了,則校驗算法可以檢測出來。校驗規則如下:
    1. 將前面的身份證號碼17位數分別乘以不同的系數。從第一位到第十七位的系數分別為:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。

      2. 將這17位數字和系數相乘的結果相加。
      3. 用加出來和除以11,看余數只可能是:0-1-2-3-4-5-6-7-8-9-10
    分別對應的最后一位身份證的號碼為:1-0-X-9-8-7-6-5-4-3-2
      4. 通過上面得知如果余數是2,就會在身份證的第18位數字上出現羅馬數字的X(大寫英文字母X)。如果余數是10,身份證的最后一位號碼就是2。

    用戶輸入一個身份證號,校驗其是否是合法的身份證號碼,如身份證號碼不合法輸出 '身份證校驗位錯誤!',如身份證號碼合法則分別在4行中輸出'身份證號碼校驗為合法號碼!'該人的出生年月日、年齡和性別。

    輸入格式

    一個18位身份證號,末位為數字或大寫字母X

    代碼

    import datetime
    numbers = input()
    l1 = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
    s = 0
    for index, number in enumerate(numbers[:-1]):
        s += l1[index] * int(number)
    l2 = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
    if numbers[-1] == l2[s % 11]:
        print('身份證號碼校驗為合法號碼!')
        print(f'出生:{numbers[6:10]}年{numbers[10:12]}月{numbers[12:14]}日')
        print(f'年齡:{int(datetime.datetime.now().year)-1-int(numbers[6:10])}')
        print('性別:男')if int(numbers[16])%2 else print('性別:女')
    else:
        print('身份證校驗位錯誤!')
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM