2012-03-14 3 views
0

다음 코드가 항상 동일한 수표 번호를 반환하는 이유에 대해 도움을 줄 수 있습니까? 내가 코드를 imptove, 또는 수있는 방법에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) 상관없이 입력을 eturns 단지 이유. 고맙습니다.

+1

팁 : ISBN을 재귀 적으로 호출하지 마십시오. 영원히 무언가를하고 싶다면'while True :'블록을 사용하십시오 : ISBN 번호를 충분히 입력하면 파이썬 인터프리터를 중단시킬 수 있습니다. – DSM

답변

3

for digit in '1234567890'for digit in request이어야합니다.

+0

. 또한, 전에 확실히 이것에 대해 질문을 올렸습니다 ... 어떤 경우에도, 예, 코드를 붙여 넣는 것에주의하십시오. –

0

사용자가 물어 본 변수에 대해서는 아무 것도 계산하지 않은 것처럼 보입니다. 변수 요청이 후속 코드에서 사용되지 않음 ...

1

코드를 보면 사용자가 request의 값을 받아 들일 수 있지만 길이를 확인한 후에는 다른 작업을 수행하지 않은 것을 볼 수 있습니다. 다시. 이 프로그램의 출력이 바뀔 수는 없습니다.