2012-03-14 164 views
0

任何一個可以提供任何幫助,至於爲什麼下面的代碼總是返回相同的校驗位是多少?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() 

如何我可以imptove的代碼,或任何信息或提示就是爲什麼它不斷eturns相同數字(9)無論什麼輸入。 謝謝

+1

一個建議:不要遞歸調用ISBN。如果你想永遠做一些事情,可以使用'while True:'block。如果輸入足夠的ISBN數字,我可以使Python解釋器崩潰。 – DSM 2012-03-14 20:45:29

回答

3

我認爲for digit in '1234567890'應該是for digit in request

+0

這個。另外,很確定你之前發佈了一個關於這個問題......在任何情況下,是的,小心複製粘貼代碼。 – 2012-03-14 20:44:54

0

你似乎並不被計算在您從用戶要求的任何變化。 後續代碼中不使用變量請求...

1

查看您的代碼,可以看到您接受用戶的值request,但在檢查其長度後,您不會執行任何其他操作它再次。這個程序的輸出無法改變。