2016-03-31 24 views
2

Ich habe also versucht, diesen 'Validator' von Pseudocode nach Python zu konvertieren, aber ich bin nicht sicher, ob meine Werte in eine Liste aufgenommen werden. Nachdem ich den ersten Wert eingegeben habe, erscheint eine Fehlermeldung: 'int' object is not callable. Aber dann, wenn ich von isbn = mylist() loszuwerden, heißt es, dass name 'isbn' is not defined. Kann mir jemand zeigen, wo mein Fehler ist?Überprüfen, ob eine ISBN-Buchnummer gültig ist Python

Ich bin mir ziemlich sicher, dass ich meine Liste nicht richtig aufstelle. Hier

ist die Pseudo-Code ich folgendes:

enter image description here

Und mein Code:

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'ist eigentlich eine ganze Zahl, die jede Iteration ändert. Wenn Sie möchten, dass 'mylist' eine Liste aller ISBN-Nummern enthält, definieren Sie' mylist' außerhalb der for-Schleife und fügen Sie sie innerhalb der foor-Schleife an. Ich glaube auch, dass 'input()' automatisch in 'int' konvertiert wird, obwohl ich mir nicht sicher bin. –

Antwort

1

youre bekommen, dass Fehler, weil Sie einen int zuweisen myList, und dann rufen. Dies entspricht etwas wie

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

versuchen Ihre isbn wie so Einrichten für einen String

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

oder, wie dies für eine Liste von Zahlen

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

Okay, ich denke, das funktioniert. Aus irgendeinem Grund gibt es jetzt einen Fehler, der besagt, dass der Listenindex außerhalb des Bereichs liegt. –

+0

@Filip Ihr ​​Pseudo-Code besagt, dass Sie in der Schleife (außer, ** <**) ** 13 **, Ihr Code-Schleifen zu (einschließlich, ** <= **) ** 13 **. Schau dir deine while-Schleife an. –

1

mylist eine ganze Zahl, Sie können keine Mylist() -Operation

Ich denke, was Sie vorhaben zu tun ist isbn.append(mylist) Wenn also die Schleife endet, haben Sie alle Elemente in isbn gespeichert

Verwandte Themen