Primzahlenerkennungsprogramm Python?


19.05.2020, 00:17

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)
Woher ich das weiß:eigene Erfahrung
weil eine Fehlermeldung kommt

Und auf die Idee, uns mitzuteilen, wie die Fehlermeldung lautet, bist du nicht gekommen?

Ansonsten kann ich sagen...

  1. Es fehlen die Einrückungen. (Vermutlich beim Kopieren und Einfügen in die Frage kaputt gegangen.)
  2. Am Ende der Zeile „a = int(input("Zahl ? " )“ fehlt eine schließende Klammer.
  3. Du rufst „primzahl(a)“ auf, bevor die primzahl-Funktion überhaupt definiert wird.
  4. 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.

mihisu  19.05.2020, 00:23

Uups, ich meinte natürlich im letzten Absatz meiner Antwort „[...] da bei i = 1 im Fall [...]“ statt „[...] da bei i = 2 im Fall [...]“.

0
mihisu  19.05.2020, 01:20
@mihisu

Und bei „Wenn nun nicht a == 0 ist, [...]“ meinte ich „Wenn nun nicht a == 1 ist, [...]“.

0
mihisu  19.05.2020, 00:28

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))
0

Du hast die Funktion aufgerufen bevor du sie definiert hast.

Woher ich das weiß:Hobby
apfel13rr 
Fragesteller
 19.05.2020, 00:10

ok danke,trotzdem kriege ich eine Fehlermeldung bei dieser Zeile def primzahl (a) :, da steht dann immer dass hier def primzahl (a) :

0
Raytex27  19.05.2020, 00:12
@apfel13rr

def primzahl(a):

Klammer und Doppelpunkt aneinander schreiben. Hast du das in deinem Programm?

0
Raytex27  19.05.2020, 00:14
@apfel13rr

Könnest du ein Bild reinstellen? In diesem Format hier sieht man das nicht sehr gut...

0
Raytex27  19.05.2020, 00:19
@apfel13rr

Du hast in der ersten Zeile vergessen, eine Klammer zu zu machen ;-) Jetzt sollte es funktionieren.

0