Primzahlenerkennungsprogramm Python?
Hallo habe hier ein Programm mithilfe einer Funktion geschrieben,welche erkennen soll ob die eingegebene Zahl eine Primzahl ist.Allerdings kann ich das Unterprogramm nicht aufrufen weil eine Fehlermeldung kommt.Könntet ihr mir bitte helfen.
Mein Programm:
a = int(input("Zahl ? " )
def primzahl (a) :
for i in range (0,a):
if a == 1:
return False
elif a%i == 0 :
return False
else:
return True
primzahl(a)
hier ein foto
3 Antworten
a = int(input(...)
Klammer fehlt
if a%i == 0 : ...
Manchmal steht dort: ???%0 == 0 . Aber man darft nicht durch null Teilen.
Hier eine vertige Funktion:
def Primzahl(Nr:int) :
'''Prüft, ob Nr eine Primzahl ist.
'''
if type(Nr) != int :
if type(Nr) != float :
raise TypeError('Nr muss ein int sein.')
else :
Nr = round(Nr)
n = Nr
a = []
for x in range(2, n):
if n % x == 0:
a.append(x)
if len(a) == 0 :
return True
else :
return False, tuple(a), len(a)
weil eine Fehlermeldung kommt
Und auf die Idee, uns mitzuteilen, wie die Fehlermeldung lautet, bist du nicht gekommen?
Ansonsten kann ich sagen...
- Es fehlen die Einrückungen. (Vermutlich beim Kopieren und Einfügen in die Frage kaputt gegangen.)
- Am Ende der Zeile „a = int(input("Zahl ? " )“ fehlt eine schließende Klammer.
- Du rufst „primzahl(a)“ auf, bevor die primzahl-Funktion überhaupt definiert wird.
- Bei der for-Schleife beginnst du mit i = 0. Wenn nun nicht a == 0 ist, wird a % i == 0 geprüft. Jedoch ist a % i für i = 0 überhaupt nicht definiert.
Dann würde das Programm zumindest laufen, aber die Primzahl-Funktion liefert nicht das korrekte Ergebnis. Da du jedes mal „False“ geliefert bekommst, da bei i = 2 im Fall „a % i == 0“ der Wert „False“ zurückgegeben wird und die Funktion damit beendet ist, ohne dass weitere Schleifendurchläufe stattfinden.
Ein Code, der funktioniert, wäre beispielsweise...
def primzahl(a):
if a == 1:
return(False)
for i in range (2, a):
if a % i == 0:
return(False)
return(True)
a = int(input("Zahl? " ))
print(primzahl(a))
Du hast die Funktion aufgerufen bevor du sie definiert hast.
ok danke,trotzdem kriege ich eine Fehlermeldung bei dieser Zeile def primzahl (a) :, da steht dann immer dass hier def primzahl (a) :
def primzahl(a):
Klammer und Doppelpunkt aneinander schreiben. Hast du das in deinem Programm?
Könnest du ein Bild reinstellen? In diesem Format hier sieht man das nicht sehr gut...
Du hast in der ersten Zeile vergessen, eine Klammer zu zu machen ;-) Jetzt sollte es funktionieren.
Uups, ich meinte natürlich im letzten Absatz meiner Antwort „[...] da bei i = 1 im Fall [...]“ statt „[...] da bei i = 2 im Fall [...]“.