Python Nombres Premiers [Résolu/Fermé]

Messages postés
68
Date d'inscription
mardi 14 février 2017
Statut
Membre
Dernière intervention
18 avril 2017
- - Dernière réponse : MaitS31
Messages postés
68
Date d'inscription
mardi 14 février 2017
Statut
Membre
Dernière intervention
18 avril 2017
- 9 mars 2017 à 17:56
Salut à tous,

Alors je suis en Terminale S (spé Maths), et je m'amuse à faire un algorithme sur Python qui est en lien avec ce que je fais en spé : les nombres premiers ! Donc j'ai fais (j'ai plutôt recopier) un algorithme qui me permet de dire si le nombre que j'entre est Premier ou pas.
Or j'ai un gros problème... Lorsque je rentre une valeur normale, tout se passe bien. Cependant lorsque je veux rentrer un nombre avec un exposant, du type : 2**2, ça ne marche pas . J'ai un message d'erreur qui est celui ci (image jointe). Je regarde donc mon algorithme, mais je ne vois pas ce que je peux faire pour remédier à cela...
Je vous met aussi en image à quoi ressemble mon algorithme !

Je vous remercie d'avance pour votre aide !

Cordialement.

Message d'erreur :


Mon algorithme :
Afficher la suite 

1 réponse

Messages postés
542
Date d'inscription
mercredi 9 mars 2016
Statut
Membre
Dernière intervention
8 mars 2018
71
0
Merci
prim.py:


a = input("Nombre :")
a = eval(a)
print(a)



python prim.py 
Nombre :5
5

python prim.py
Nombre :4**2
16


Ce est qui est embêtant ici c'est que l'utilisateur peut faire exécuter n'importe quoi par le script, pour faire les choses bien il faudrait vérifier que chaque caractère entré par l'utilisateur est bien un chiffre. Sinon l'idée est là
MaitS31
Messages postés
68
Date d'inscription
mardi 14 février 2017
Statut
Membre
Dernière intervention
18 avril 2017
10 -
Merci pour votre réponse, mais je ne suis pas sûr de bien saisir ce que vous avez fait.
Fin si, un peu... Entre ma ligne 3 et 4 j'insère "a=eval(a)". je pense que ce soit ça dont vous voulez parler ; mais quand je le teste, ça ne marche pas, j'ai exactement le même message qui apparaît...

Mais je vous remercie beaucoup quand même pour votre réponse rapide !
Rocailleux
Messages postés
542
Date d'inscription
mercredi 9 mars 2016
Statut
Membre
Dernière intervention
8 mars 2018
71 -
Si tu fais ça ligne 4, ton int() aura déja converti la chaine en entier, je suppose que c'est pour cette raison que tu te manges une erreur. Change ta ligne 3 en :

a = int(eval(input("Nombre :")))
MaitS31
Messages postés
68
Date d'inscription
mardi 14 février 2017
Statut
Membre
Dernière intervention
18 avril 2017
10 > Rocailleux
Messages postés
542
Date d'inscription
mercredi 9 mars 2016
Statut
Membre
Dernière intervention
8 mars 2018
-
Mais comment te dire...

MERCIIIII !!!!!

Enfin ça marche !
Je vous remercie énormément, vous m'avez beaucoup aidé !^^