import string inputIBAN = 'DE520000418' LETTERS_DICT={} for i,d in enumerate(string.digits + string.ascii_uppercase): LETTERS_DICT[ord(d)] = str(i) def iban_letter_replacement(iban_string): iban_numeric = iban_string.translate(LETTERS_DICT) return iban_numeric def iban_valid(iban_string): inverted_iban = iban_string[4:] + iban_string[:4] inverted_numeric = int(iban_letter_replacement(inverted_iban)) return (inverted_numeric % 97) ==1 def iban_char_verify(iban_string): iban_nc = iban_string[4:] + iban_string[:2] + '00' iban_nc_inv_num = int(iban_letter_replacement(iban_nc)) return '{:02}'.format(98 - iban_nc_inv_num % 97)==iban_string[2:4] def check_iban(iban_string): return iban_char_verify(iban_string) and iban_valid(iban_string) print(check_iban(inputIBAN))