IBAN验证Python

时间:2018-11-02 17:11:00

标签: python iban

为实现统一性,我们必须编写代码,以验证德国,瑞士和法国的IBAN。德语IBAN DE08700901001234567890包含两个字母“ DE”,测试号08,银行号70090100和帐号1234567890。对于字母,您必须在其数字上加上+9(A = 10,B = 11,... Z = 35)。

要验证IBAN,必须将前四个数字移到末尾,并用字母DE补充字母1314。验证号700901001234567567890131408 Modul0 97必须为1。

我们是绝对的初学者。今天我们讲座的主题是“同时循环”,因此代码必须很容易。我认为,这与列表有关,因为您添加了数字,但我们在讲座中尚未讨论列表。

我的尝试

# add 9 to the letter
D = 13
E = 14
F = 15
R = 28
C = 12
H = 17

list = ibannummer = input ('Enter your IBAN number')
if 'DE' in ibannummer :
    banknumber = ibannummer[5,6,7,8,9,10,11] #banknumber 70090100
    accountumber = ibannummer[12:] #accountnummer 1234567890
    valiationnumber = bankleitzahl + kontonummer.append(ibannummer[0,1,2,3])
      if valiationnumber % 97 == 1 :
                        print ('validierte IBAN')

1 个答案:

答案 0 :(得分:1)

这只是基于我所了解的临时工作理论:

IBAN = 'DE08700901001234567890'
if IBAN[0:2] == 'DE':
    testNumber = IBAN[2:4]
    bankNumber = IBAN[4:12]
    accNumber = IBAN[12:]
    valNumber= int("1314"+IBAN[6:]+IBAN[2:6])
    print(valNumber)
    if (valNumber%97)==1:
        print("This is a valid IBAN number")
    else:
        print("Excuse me sir, but this is not valid...")

但是,此代码(如果可以快速运行)与您提供的验证代码不匹配。如果您希望将DE视为数字:

IBAN = 'DE08700901001234567890'
if IBAN[0:2] == 'DE':
    testNumber = IBAN[2:4]
    bankNumber = IBAN[4:12]
    accNumber = IBAN[12:]
    valNumber= int(bankNumber+accNumber+str(1314)+testNumber)
    print(valNumber)
    if (valNumber%97)==1:
        print("This is a valid IBAN number")
    else:
        print("Excuse me sir, but this is not valid...")

我不知道您为什么必须将所有字母=都写成一个数字(即D = 13),因为您要检查它是否以DE开头,所以无论如何它都会变成1314。