להורדה | סקריפט python שבודק תקינות מספרי ת"ז וכרטיסי אשראי לפי ספרת ביקורת
-
בעיקרון יש את זה גם בחשבונות בנק, אם כי לא ידוע לי מה הכללים של מספר הספרות (לכן לע"ע השארתי את הפונקציה ריקה)
המילון של חברות האשראי לא מושלם, ואני אמור להוסיף בהמשך גם פונקציה שתבדוק גם לפי הספרות הראשונותCorquet = "מספר תקין" unCorquet = "מספר לא תקין" def luhn_algorithm(num): number = int(num[-1]) #חלץ ספרת ביקורת for i in num[-2::-2]: #הכפלה ב2 לכל ספרה שניה i = int(i)*2 if i > 9: i -=9 number+=i for i in num[-3::-2]: number+=int(i) if number %10 == 0: print (Corquet) else: print (unCorquet) def id_number(num): if len(num) != 9: print (unCorquet) else: luhn_algorithm(num) def cradit_card(num): #פונקציה זו לא עובדת בכרטיסי אשראי של ישראכרט compeny = input("הזן את שם חברת האשראי באנגלית לעקיפה על שלב זה הקש אנטר\n") compeny_dic = {"visa":16, "mastercard" :16 ,"americanexpress":15, "diners":14} len_compeny = compeny_dic.get(compeny.lower()) if compeny.lower() in compeny_dic and len(num) == len_compeny or compeny == "" and 19 > len(num) > 7: luhn_algorithm(num) elif compeny.lower() == "isracard": print("סקריפט זה אינו בודק כרטיסי אשראי של ישראכרט") elif compeny.lower() not in compeny_dic and 19 > len(num) > 7: not_in_dic = print("חברה זו לא נמצאת במילון, לא נוכל לבדוק לפי מספר הספרות") luhn_algorithm(num) else: print(unCorquet) def bank_acunt(num): pass def main(num): type_of_num = input("לתעודת זהות הקש 1, לכרטיס אשראי הקש 2, לחשבון בנק הקש 3\n") if type_of_num == "1": id_number(num) elif type_of_num == "2": cradit_card(num) elif type_of_num == "3": bank_acunt(num) else: print("בחר באחת מהאפשרויות המוצעות") main(num) def input_number(): while True: num = input("הזן מספר תעודת זהות, כרטיס אשראי או חשבון בנק\n") if num.isnumeric(): main(num) elif num.lower() == "exit": break else: print("הזן ספרות בלבד") input_number()
אשמח לשמוע הערות והארות
-
@האדם-החושב מה זה אומר?
-
-
@האדם-החושב קובץ אקסל לחישוב ספרת ביקורת:
תעודת זהות-ספרת ביקורת.xlsx -
@האדם-החושב כתב בלהורדה | סקריפט python שבודק תקינות מספרי ת"ז וכרטיסי אשראי לפי ספרת ביקורת:
Corquet = "מספר תקין"
unCorquet = "מספר לא תקין"def luhn_algorithm(num):
number = int(num[-1]) #חלץ ספרת ביקורת
for i in num[-2::-2]: #הכפלה ב2 לכל ספרה שניה
i = int(i)*2
if i > 9:
i -=9
number+=i
for i in num[-3::-2]:
number+=int(i)
if number %10 == 0:
print (Corquet)
else:
print (unCorquet)def id_number(num):
if len(num) != 9:
print (unCorquet)
else:
luhn_algorithm(num)def cradit_card(num): #פונקציה זו לא עובדת בכרטיסי אשראי של ישראכרט
compeny = input("הזן את שם חברת האשראי באנגלית לעקיפה על שלב זה הקש אנטר\n")
compeny_dic = {"visa":16, "mastercard" :16 ,"americanexpress":15, "diners":14}
len_compeny = compeny_dic.get(compeny.lower())
if compeny.lower() in compeny_dic and len(num) == len_compeny or compeny == "" and 19 > len(num) > 7:
luhn_algorithm(num)
elif compeny.lower() == "isracard":
print("סקריפט זה אינו בודק כרטיסי אשראי של ישראכרט")
elif compeny.lower() not in compeny_dic and 19 > len(num) > 7:
not_in_dic = print("חברה זו לא נמצאת במילון, לא נוכל לבדוק לפי מספר הספרות")
luhn_algorithm(num)
else:
print(unCorquet)def bank_acunt(num):
passdef main(num):
type_of_num = input("לתעודת זהות הקש 1, לכרטיס אשראי הקש 2, לחשבון בנק הקש 3\n")
if type_of_num == "1":
id_number(num)
elif type_of_num == "2":
cradit_card(num)
elif type_of_num == "3":
bank_acunt(num)
else:
print("בחר באחת מהאפשרויות המוצעות")
main(num)def input_number():
while True:
num = input("הזן מספר תעודת זהות, כרטיס אשראי או חשבון בנק\n")
if num.isnumeric():
main(num)
elif num.lower() == "exit":
break
else:
print("הזן ספרות בלבד")input_number()
אשמח לשמוע הערות והארות