2017-03-22 5 views
1

Ich habe folgende Fragen zu dem folgenden Code:Einige Fragen über den folgenden Code

  1. Welchen Wert hat 0 halten, in der zweiten Zeile? Ist es etwas wie "wahr" oder "falsch"? Oder ein Zahlenwert?

  2. Sind die Return-Anweisungen in der Funktion user_even erforderlich? Der Code funktioniert ohne sie, aber es scheint, dass alle benutzerdefinierten Funktionen eine Return-Anweisung in ihnen haben oder liege ich falsch?

def divisible(num1, num2): 
    return num1 % num2 == 0 

def user_even(): 
    num1 = int(input ("Choose a number: ")) 
    num2 = int(2) 

    if divisible(num1, num2): 
     print ("It's even") 
     return 
    else: 
     print ("it's odd") 
     return 
user_even() 
+0

1. Der Wert, den '0' enthält, ist, err, '0'. Es ist nur die Nummer Null. 2. Nein, das ist nicht der Fall, die Funktion wird implizit 'None zurückgeben 'und sich identisch verhalten, wenn sie entfernt werden. – jonrsharpe

+0

Ok, aber wenn num1 = 10 und num2 = 5, dann 10/2 = 5. Ich verstehe nicht, was die Null in diesem Fall bedeutet, weil die Antwort nicht 0 ist. Wie kommt 0 ins Spiel, wenn die Antworten gerade oder ungerade sind? Das ist so jenseits meines Verständnisses, dass ich nicht einmal weiß, ob ich es richtig erkläre. Ich bin ein abgeschlossenes Noob beim Codieren. – sleepylog

+0

Vergiss meinen vorherigen Kommentar, ich denke ich verstehe es. – sleepylog

Antwort

1

Zu Frage 1, wertet er die Anweisung aus und gibt einen Boolean (Wahr oder Falsch) Wert. Die 0 ist 0.

return 5 % 5 == 0 # Remainder of 5/5 is 0 so that returns True 
return 5 % 4 == 0 # Remainder of 5/4 is 1 so that returns False 

Für Frage 2 werden die Return-Anweisungen nicht benötigt. Eine Rückgabeanweisung sollte für Variablen oder Teile von Daten verwendet werden, die von der Funktion zurückgegeben werden müssen. In dem von Ihnen bereitgestellten Code werden keine Daten zurückgegeben, sodass die Rückgabeanweisung nicht erforderlich ist.

+0

Antwort für Frage 2 ist teilweise richtig, aber haben einige fehlende Punkte. 'return'-Anweisung wird auch verwendet, um eine Funktion zu beenden.Im obigen Beispiel gibt es keine solche Bedingung, aber wenn Sie eine längere Funktion haben, wo Sie die Ausführung der Funktion an einigen Punkten stoppen wollen, setzen Sie einfach' return' Anweisungen Es wird den Funktionsblock verlassen, ohne die weiteren Codezeilen auszuführen. Dies ist jedoch nicht in der obigen Frage der Fall. – FallenAngel

+0

Vielen Dank, das hat sehr geholfen! – sleepylog

0

1.) Return wird boolean sein, weil Sie Vergleicher Operatoren verwendet (==)

2.) return-Anweisung ist nicht erforderlich. Siehe diesen Thread. Is it ok to skip "return None"?

+0

Danke mllduran. Nur neugierig, schreibt "Return" das gleiche wie "Return None"? – sleepylog

+0

Es gibt keinen Unterschied. :) Die Verwendung von "return None" bedeutet jedoch, dass Ihre Funktion einen Wert für die spätere Verwendung zurückgeben soll. – mllduran