1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| def luhn(n:int):
| d = n
| luhn_checksum = 0
| while d != 0:
| # Verarbeitung der Stelle 10^0, 10^2, 10^4,...
| d,ungerade = divmod(d, 10)
| luhn_checksum += ungerade
| # Verarbeitung der Stelle 10^1, 10^2, 10^3,...
| d,gerade = divmod(d, 10)
| gerade *= 2
| if gerade > 9: gerade -= 9
| luhn_checksum += gerade
| return luhn_checksum, luhn_checksum%10 == 0
|
|
|
| n = int("371-4496-3539-8431".replace('-',''))
| checksum, valid = luhn(n)
| print(f"Luhn-checksum: {checksum}, gültig = {valid}")
|
|