0

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

    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)。谢谢

4

3 回答 3

3

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

于 2012-03-14T20:42:45.133 回答
1

查看您的代码,您可以看到您接受了request来自用户的值,但是在检查了它的长度之后,您不再对它做任何其他事情。这个程序的输出不可能改变。

于 2012-03-14T20:45:53.420 回答
0

您似乎没有计算您向用户询问的变量的任何内容。后面的代码中没有用到变量request...

于 2012-03-14T20:45:28.413 回答