1. 程式人生 > >1031 查驗身份證 Python語言

1031 查驗身份證 Python語言

1031 查驗身份證(15)(15 分)

一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下:

首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後將計算的和對11取模得到值Z;最後按照以下關係對應Z值與校驗碼M的值:

Z:0 1 2 3 4 5 6 7 8 9 10\ M:1 0 X 9 8 7 6 5 4 3 2

現在給定一些身份證號碼,請你驗證校驗碼的有效性,並輸出有問題的號碼。

輸入格式:

輸入第一行給出正整數N(<= 100)是輸入的身份證號碼的個數。隨後N行,每行給出1個18位身份證號碼。

輸出格式:

按照輸入的順序每行輸出1個有問題的身份證號碼。這裡並不檢驗前17位是否合理,只檢查前17位是否全為數字且最後1位校驗碼計算準確。如果所有號碼都正常,則輸出“All passed”。

輸入樣例1:

4
320124198808240056
12010X198901011234
110108196711301866
37070419881216001X

輸出樣例1:

12010X198901011234
110108196711301866
37070419881216001X

輸入樣例2:

2
320124198808240056
110108196711301862

輸出樣例2:

All passed

 問題分析:注意校驗碼中的x是大寫

程式:

x = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
y = ['1','0','X','9','8','7','6','5','4','3','2']
n = int(input())
m = 0
for i in range(n):
    num = str(input())
    if len(num)>18:
        print(num)
        m = 1
    else:
        a = num[:17]
        c = True
        b = 0
        for j in range(len(a)):
            try:
                b+=int(a[j])*x[j]
            except:
                c = False
                print(num)
                m = 1
                break
        if c:
            b = b%11
            if y[b]!=num[-1]:
                print(num)
                m = 1
if m==0:
    print('All passed')

相關推薦

1031 查驗身份證 Python語言

1031 查驗身份證(15)(15 分) 一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下: 首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後將計算的和對11

PTA C語言1031 查驗身份證(15)(15 分)

1031 查驗身份證(15)(15 分) 一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下: 首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後將計算的和對11

1031. 查驗身份證(15)

ret 分配 身份證號碼 bsp 順序 scan OS 輸入格式 輸出格式 一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下: 首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8

PAT乙級 1031 查驗身份證

一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下: 首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後將計算的和對11取模得到值Z;最後按照以下關係對應Z值與校驗碼M的值:

1031 查驗身份證——C/C++實現

題目 1031 查驗身份證 (15 point(s)) 一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下: 首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後將

1031 查驗身份證 (15 分)

一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下: 首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後將計算的和對11取模得到值Z;最後按照以下關係對應Z值與校驗

1031 查驗身份證 (未完)

#include <stdio.h> #include <stdlib.h> int main() { int n ; scanf("%d",&n); int sum[100] = {0} ,i,j; int a[100][18];

PAT 乙級 1031 查驗身份證

1031 查驗身份證 (15 point(s)) 一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下: 首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後將計

1031 查驗身份證 (15 分

本題用了判斷是否是數字的函式,isdigit(char) 函式,其餘沒有什麼難點; ps:昨天在寫本題時,無論怎麼寫都有錯,所以當自己遇到困難時,應該暫時放下,等到自己心情平靜下來了,才繼續往下面寫。 #include<cstdio> #include<iostream&g

PAT乙1031. 查驗身份證(15)

題目在這裡 1031. 查驗身份證(15) 時間限制 200 ms 記憶體限制 65536 kB 程式碼長度限制

PAT乙級—1031. 查驗身份證(15)-native

一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下: 首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後將計算的和對11取模得到值Z;最後按照以下關係

PAT (Basic Level) Practice (中文) 1031 查驗身份證 (15 分)(C++)

1031 查驗身份證 (15 分) 一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下: 首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後將計算的和對11取模得到值Z;

【算法筆記】B?1031 查驗身份證

pre list font -o tex ble color 算法筆記 日期 1031 查驗身份證 (15 分) 一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下: 首先對前17位數字加權求和,權重分配為:{7,9,

PAT——乙級1006:換個格式輸出整數&乙級1021:個位數統計&乙級1031查驗身份證

all tst 順序 sub ner 簡單的 驗證 乙級 wrong 1006 換個格式輸出整數 (15 point(s)) 讓我們用字母 B 來表示“百”、字母 S 表示“十”,用 12...n 來表示不為零的個位數字 n(<10),換個格式來輸出任一個

查驗身份證(c語言

一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下: 首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後將計算的和對11取模得到值Z;最後按照以下關係對應Z值與校驗碼M的值: Z:0 1 2 3 4

L1-016.查驗身份證

nbsp 是否 所有 pre 分配 關系 格式 有效 取模 一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下: 首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後

求斐波那契數的python語言實現---遞歸和叠代

put bsp print span return spa number n-2 遞歸實現 叠代實現如下: def fab(n): n1 = 1 n2 = 1 if n<1: print

批量安裝/卸載手機apk--python語言

listdir edi -- pri def shel time style pen import osimport timefiledir = "D:\\app"def install(): files = os.listdir(filedir) for fi

Python語言設計GUI界面

list head for qt4 雙擊 data- com http 彈出 我們大家都編寫過程序,但是如果能夠設計一個GUI界面,會使程序增添一個很大的亮點!今天就讓我們來用目前十分流行的python語言寫出一個最基本的GUI,為日後設計更加漂亮的GUI打下基礎。

selenium自動化實戰-基於python語言(二: 編寫腳本)

獲取 pat 打開 border 命令 需要 框架 attribute 一個 上一篇文章說到顯示等待和隱式等待語句,我們繼續學習下面的命令方法。 8. 定位一組元素 這裏書上是自己寫了一個頁面代碼,通過訪問本地這個頁面來舉例。但我覺得找一個現有的頁面自己琢磨更有意思,而且