2016-03-29 10 views
0

Ich habe mehrere Fragen wie diese gesehen, aber keine von ihnen löst mein Problem in der richtigen Weise. Das bedeutet, dass die Antwort nicht funktioniert oder für mich keinen Sinn ergibt. Ich gebe dir den Code, der mir passt und den Fehler, den er gibt.Fehler: nicht unterstützte Operandentyp (en) für /: 'NoneType' und 'int'

Error: unsupported operand type(s) for /: 'NoneType' and 'int' 

Ist der Fehler und der Code ist:

#Define iteration# 
iteration=0; 
iterationNum=0; 

#Define encryption# 
def encrypt(num,iteration): 
    num=cos(num/(iteration+1)); 

def runEncrypt(array,iterationNum): 
    for j in range(iterationNum): 
     for i in range (len(array)): 
      array[i]=encrypt(array[i],j); 

#Internal test area# 
array1=[1,2,3,4,5]; 
encryptedArray=runEncrypt(array1,4); 
print(encryptedArray); 

Antwort

2

Die encrypt Funktion keine return Anweisung hat, so wird der Rückgabewert ohne returnNone (der Standardrückgabewert für Python-Funktionen sein Anweisung) und so wird None jedem Element von array in der ersten Iteration der äußeren Schleife in runEncrypt() zugewiesen werden. Dies bedeutet, dass in der zweiten und späteren Iterationen der äußeren Schleife encrypt() mit (None, j) als Argumente aufgerufen wird, und der Fehler wird ausgelöst, weil das Programm versucht, None durch eine Ganzzahl zu teilen, die undefiniert ist.

Um dies zu beheben, neu zu definieren einfach encrypt wie folgt:

def encrypt(num, iteration): 
    return cos(num/(iteration + 1))