ISBN校验数字计算问题

时间:2012-03-14 20:39:12

标签: python digit isbn

任何人都可以提供任何帮助,为什么下面的代码总是返回相同的校验位数?

    def ISBN():
        numlist = []
        request = raw_input("Please enter the 10 digit number:  ")
        if len(request) == 10:
            listofnums = [int(digit) for digit in '1234567890']
            multipliers = reversed(range(2,12))
            multipliednums = [a*b for a,b in zip(listofnums, multipliers)]
            print multipliednums
            added_result = sum(multipliednums)
            print added_result
            remainder = added_result % 11
            print remainder
            check_digit = 11 - remainder
            print check_digit
            ISBN()
        if len(request) != 10:
            print "Invalid Input"
            ISBN()

    ISBN()

关于我如何能够提供代码的任何信息或提示,或者无论输入什么,它为什么不断地使用相同的数字(9)。 谢谢

3 个答案:

答案 0 :(得分:3)

我认为for digit in '1234567890'应为for digit in request

答案 1 :(得分:1)

查看您的代码,您可以看到您接受来自用户的request的值,但在检查其长度后,您不再对其执行任何其他操作。这个程序的输出无法改变。

答案 2 :(得分:0)

您似乎没有计算您向用户询问的变量的任何内容。 变量请求未在后续代码中使用...