סקריפט: חישוב ספרת ביקורת בתעודת זהות

ניתן לקרוא כאן על אופן חישוב ספרת ביקורת בתעודת זהות. כדי להקל על החישוב כתבתי סקריפט שמבצע את החישוב. הסקריפט מטפל במצבים החריגים הבאים:

  • קבלת מספר שמכיל פחות מ- 8 ספרות. במצב זה יתווספו "אפסים" מובילים עד להשלמה ל- 8 ספרות.
  • קבלת מספר שמכיל יותר מ- 8 ספרות.
  • הכנסת קלט משובש (מכיל תווים שאינם ספרות).

הורדה: כאן
שימוש: python calculateID.py 12345678
הסבר: 12345678 הוא מספר תעודת זהות
הערה: דווחו על באגים 🙂

My Signature
פורסם בקטגוריה פיתוח. אפשר להגיע לכאן עם קישור ישיר.

5 תגובות בנושא סקריפט: חישוב ספרת ביקורת בתעודת זהות

  1. מאת OSH‏:

    יהיה exception של list index out of range. במקום רק להדפיס את זה תצא מן התוכנית באופן מפןרש באמצעות exit:
    [code]
    exit("Error: Missing argument (Usage: id ID_Number\n")
    [/code]

    נ.ב
    המערכת שלך מאוד מציקה, כאשר שוכחים שדה צריך לכתוב את הכל מחדש. למה אתה לא עושה ואדליציה באמצעות JS?

  2. מאת ilanshavit‏:

    ההערה לגבי הקוד נכונה.

    לגבי המערכת: לא אני כתבתי אותה. מדובר ב- wordpress ואני צריך לבדוק אם יש פתרון לבעיה שהצגת.

  3. מאת OSH‏:

    יש פיתרון, hack the source :D.

  4. מאת mcComBat‏:

    a cooler version
    id = 12345678
    result = 10 – (reduce(lambda x, y: int(x) + int(y), reduce(lambda x, y: x+y, map(lambda x: str(int(x[0]) * x[1]), zip(list(id), map(lambda x: bool(x % 2) + 1, range(len(id))))))) % 10)
    result = result * abs(bool(result == 10) – 1)

  5. מאת Elazar‏:


    tr = lambda i, d : d if i%2==1 else sum([int(k) for k in str(d * 2)])
    def isvalid_userid(userid):
    return (userid % 10) == (-sum([tr(i, int(d)) for i, d in enumerate(str(userid // 10))]) % 10)

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *