我是python的新手,我把它作为学校的一件额外的事情。我的老师让我们做一个IBAN生成器,但我不知道我做错了什么(可能有很多事情),但有人能帮我解决这个问题吗?
我的代码:
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)和错误
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提前谢谢。
发布于 2016-11-21 00:38:19
问题是您只能使用translate进行一对一映射,在本例中,您有一个字母映射到两个数字。这是你的代码的一个版本,可以解决这个问题。此外,您还忘记了获取convert_characters_to_string的返回值。以下是您的代码的一个版本,可以解决这些问题:
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)https://stackoverflow.com/questions/40705999
复制相似问题