2016-03-31 3 views
2

Итак, я пытаюсь преобразовать этот «валидатор» из Pseudocode в Python, но я не слишком уверен, что мои значения помещаются в список. После ввода первого значения появляется сообщение об ошибке: 'int' object is not callable. Но тогда, если я избавлюсь от isbn = mylist(), он говорит, что name 'isbn' is not defined. Может кто-то указать мне, где моя ошибка?Проверка правильности номера книги ISBN Python

Я уверен, что не правильно настроил свой список.

Вот ПСЕВДОКОД я следующее:

enter image description here

И мой код:

def checkDigit(): 
    calculateDigit = 0 
    count = 1 
    calculateDigit = 10 - calculateDigit 
    for count in range (1,14): 
     mylist = int(input("Please enter the next digit of the ISBN: ")) 
#  isbn = mylist() 
    while (count <= 13): 
     calculateDigit = calculateDigit + isbn[count] 
     count = count + 1 
     calculateDigit = calculateDigit + (isbn[count] * 3) 
     count = count + 1 
    while (calculateDigit >= 10): 
     calculateDigit = calculateDigit - 10 
    if (calculateDigit == 10): 
     calculateDigit = 0 
    if (calculateDigit == isbn[13]): 
     print ("Valid ISBN") 
    else: 
     print ("Invalid ISBN") 



checkDigit() 
+0

'mylist' фактически представляет собой целое число, которое меняет каждую итерацию. Если вы хотите, чтобы 'mylist' содержал список всех номеров ISBN, определите' mylist' вне цикла for и добавьте его внутри цикла foor. Кроме того, я считаю, что 'input()' автоматически преобразуется в 'int', хотя я не уверен в этом. –

ответ

1

Youre получая эту ошибку, потому что вы назначили Int в MyList, а затем вызвать его. Это равносильно тому, что-то вроде установки

>>>5() # 'int' object is not callable error 

попробовать свой номер ISBN как и для строки

isbn = "" 
    for count in range (1,14): 
    mylist = int(input("Please enter the next digit of the ISBN: ")) 
    isbn += mylist 

или как это для списка чисел

isbn = [] 
    for count in range (1,14): 
    mylist = int(input("Please enter the next digit of the ISBN: ")) 
    isbn.append(mylist) 
+0

Хорошо, я думаю, что работает. По какой-то причине он теперь выдает ошибку, указав индекс списка вне диапазона. –

+0

@Filip ваш псевдо-код говорит, что вы должны зацикливаться до (исключая ** **) ** 13 **, ваш цикл кода (включая ** ** = **) ** 13 **. Посмотрите на свой цикл while. –

1

MyList представляет собой целое число, вы не можете выполнить операцию mylist()

Я думаю, что вы намерены сделать это isbn.append(mylist), поэтому, когда концы цикла заканчиваются, у вас есть все элементы, хранящиеся в isbn

Смежные вопросы