Erreur

Fermé
Unni - Modifié le 18 août 2019 à 23:55
 grigou - 17 août 2019 à 14:00
Bonjour,

Je suis nouveau en python et pour découvrir le principe des fonctions, j'essaie d'en écrire une qui détermine si oui ou non un numéro entré est un nombre premier.

J'ai écrit ceci :

m = input("""Entrez le chiffre à essayer: """)

def testprim(n,p):
 n = float(n)
 p is True
 if float(n%1) != 0 or int(n) < 0 :
  p is False
 else :
  n = int(n)
  t = 2
  while t<(n-1) :
   if (n%t) == 0 :
    p is False
    t = n
   else :
    t+=1
    
testprim(m,premier = True)
    
if premier is True :
 print(m,"""est premier.""")
else :
 print(m,"""n'est pas premier.""")
 
input("""Entrez entrée pour fermer le programme.""")


Cependant j'ai l'impression que la fonction
testprim
ne parvient pas à fonctionner comme je le souhaite. S'il vous plaît, expliquez-moi la subtilité du problème.

Merci d'avance.

1 réponse

Bonjour, il y a beaucoup de problèmes dans ton script.

- Utilise au moins 2 espaces pour indenter ton code, en python la norme est de 4 espaces.
-
testprim(m,premier = True)
la fonction testprim n'a pas de paramètre premier, mais n et p.
-
p is True
il y a confusion le mot clef is sert à tester l'égalité de valeur et d'objet, pas de faire une affectation, d'ailleurs mieux vaut éviter d'utiliser ce mot clef hors rares cas très spécifiques.
>>> False == 0
True
>>> False is 0
False
- Ta fonction doit tester si un nombre est premier, de là, il convient à ce qu'elle retourne un booléen, et un seul paramètre à cette fonction suffit, celui du nombre à tester.
0