2017-06-30 5 views
-4

I don't know why it is there. If it has something to do with the function diffWarum bekomme ich jedes Mal, wenn die Schleife einmal ausgeführt wird, "keine"?

+1

Sie 'print' den Rückgabewert von' diff'. Da 'diff' nichts explizit zurückgibt, wird implizit eine' None' zurückgegeben. –

+0

@Nirbhay: Die Funktion wurde zuerst aus der Schleife aufgerufen, bekam aber nichts, bis "print differ" ausgeführt wurde und am Ende gab die Funktion nichts zurück, so dass Sie 'None' erhalten. – lkdhruw

+0

das war nützlich, hoch und funktioniert !! Danke –

Antwort

0

Funktion diff nichts zurückkehrt, deshalb print diff(z) nur None ausdrucken. Es sollte wie diese

def diff(n): 
    x = n**(1.0/2) 
    y = (n-2)**(1.0/2) 
    differ = x-y 
    return differ 

z = 2 
while z >= 0 and z <= 100: 
    print diff(z) 
    z = z+1 
0

sein, wie der Kommentar richtig darlegt, diff hat keinen expliziten Rückgabewert. Dies wäre nicht so schlecht, da diff den gewünschten Nebeneffekt hat, die gewünschte Zahl zu drucken. Da Sie Python jedoch bitten, das Ergebnis diff in der while-Schleife zu drucken, erhalten Sie None jedes Mal, wenn diff aufgefordert wird, einen Rückgabewert anzugeben. Sie können dies beheben, indem Sie diff ändern, um keine Nebenwirkungen zu haben, sondern den Wert zurückgeben (einfach print zu return ändern) oder die Funktion wegen ihres Nebeneffekts aufrufen, aber nicht versuchen, ihren Rückgabewert auszudrucken (die print Anweisung loszuwerden) in der while-Schleife).

hoffe, das hilft

Verwandte Themen