首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IBAN检查器错误

IBAN检查器错误
EN

Stack Overflow用户
提问于 2016-11-20 23:46:40
回答 1查看 430关注 0票数 0

我是python的新手,我把它作为学校的一件额外的事情。我的老师让我们做一个IBAN生成器,但我不知道我做错了什么(可能有很多事情),但有人能帮我解决这个问题吗?

我的代码:

代码语言:javascript
复制
letter_dic = {"A": 10, "B": 11, "C": 12, "D": 13, "E": 14, "F": 15, "G": 16, "H": 17, "I": 18, "J": 19, "K": 20,
          "L": 21, "M": 22, "N": 23, "O": 24, "P": 25, "Q": 26, "R": 27, "S": 28, "T": 29, "U": 30, "V": 31,
          "W": 32, "X": 33, "Y": 34, "Z": 35}

def move_digits_to_back(iban_string):
    x = iban_string[0:4]
    y = iban_string[4:]
    iban_string = y + x
    return iban_string

def convert_characters_to_digits(iban_back):
    iban_num = (iban_string)[4:][:4].translate(letter_dic)
    print iban_num
    return int(iban_num)

def is_modulo_correct(iban_num):
    if iban_num % 97 != 1:
        return True
    return False

def validate_iban(iban_string):
    move_digits_to_back(iban_string)
    convert_characters_to_digits(iban_string)
    if is_modulo_correct(iban_num) is True:
        print("IBAN-nummer {} is correct".format(iban_string))
    else:
        print("IBAN-Nummer {} is niet correct".format(iban_string))

while True:
    iban_string = raw_input("Vul een IBAN-nummer in om te controleren.\n")
    validate_iban(iban_string)

和错误

代码语言:javascript
复制
    line 13, in convert_characters_to_digits
    iban_num = (iban_string)[4:][:4].translate(letter_dic)
TypeError: expected a string or other character buffer object

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-11-21 00:38:19

问题是您只能使用translate进行一对一映射,在本例中,您有一个字母映射到两个数字。这是你的代码的一个版本,可以解决这个问题。此外,您还忘记了获取convert_characters_to_string的返回值。以下是您的代码的一个版本,可以解决这些问题:

代码语言:javascript
复制
letter_dic = {"A": 10, "B": 11, "C": 12, "D": 13, "E": 14, "F": 15, "G": 16, "H": 17, "I": 18, "J": 19, "K": 20,
          "L": 21, "M": 22, "N": 23, "O": 24, "P": 25, "Q": 26, "R": 27, "S": 28, "T": 29, "U": 30, "V": 31,
          "W": 32, "X": 33, "Y": 34, "Z": 35}

def move_digits_to_back(iban_string):
    x = iban_string[0:4]
    y = iban_string[4:]
    iban_string = y + x
    return iban_string

def convert_characters_to_digits(iban_back):
    iban_num = (iban_string)[4:][:4]
    iban_num = iban_num.upper()
    for k, v in letter_dic.items():
        iban_num = iban_num.replace(k, str(v))
    return int(iban_num)

def is_modulo_correct(iban_num):
    if iban_num % 97 != 1:
        return True
    return False

def validate_iban(iban_string):
    move_digits_to_back(iban_string)
    iban_num = convert_characters_to_digits(iban_string)
    if is_modulo_correct(iban_num) is True:
        print("IBAN-nummer {} is correct".format(iban_string))
    else:
        print("IBAN-Nummer {} is niet correct".format(iban_string))

while True:
    iban_string = raw_input("Vul een IBAN-nummer in om te controleren.\n")
    validate_iban(iban_string)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40705999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档