Ich habe vor kurzem angefangen zu programmieren und stieß auf etwas, das ich nicht vollständig verstanden habe, als ich versuchte, Python in der Codecademy zu lernen.Python-Fehler in der Funktion [Anfänger]
Die Aufgabe war es, eine Funktion zu erstellen, die sagen würde, ob sie aufgerufen wurde, ob die Nummer eine Primzahl war oder nicht.
Also hier meine erste Lösung war:
def is_prime(x):
if x < 2:
return False
elif x == 2:
return True
else:
for n in range(2, x-1):
if x % n == 0:
return False
else:
return True
print is_prime(5)
Nach dem Ausführen es, hielt es die Nachricht zu geben, die is_prime (3) falsch war zu geben, anstatt eine wahre geben. So nach ein wenig auf den Codecademy Foren Suche fand ich, dass, wenn das letzte Bit des Codes wurde alterd zu:
def is_prime(x):
if x < 2:
return False
elif x == 2:
return True
else:
for n in range(2, x-1):
if x % n == 0:
return False
return True
print is_prime(5)
begann es normal arbeiten. Kann mir jemand erklären, wie diese Änderung den Code verursacht hat? Vielen Dank im Voraus.
Denken Sie darüber nach, wenn Ihre erste Version wahr zurückgibt. Arbeite an einem Beispiel mit Papier und Bleistift. Es sollte ziemlich offensichtlich sein, was der Fehler ist (obwohl Sie bei der Berechnung von Primzahlen bei weitem nicht die erste Person sind, die diesen Fehler macht, auch wenn Sie heute nur Python SO Fragen stellen, also keine Angst). – jonrsharpe
Ich sehe nicht, wie 'is_prime (3) 'entweder' True' oder 'False' für die erste Version zurückgibt, da' range (2, 3-1) 'leer ist und somit der Code nie eine Chance bekommt gib etwas anderes als den Standard 'None' zurück. – TigerhawkT3
@ TigerhawkT3 Ich denke, der Grader sah 'None' als falsch-y – jonrsharpe