Python : demander à l'utilisateur

Résolu/Fermé
la quiche
Messages postés
260
Date d'inscription
jeudi 27 mars 2008
Statut
Membre
Dernière intervention
11 novembre 2020
- 26 mars 2009 à 10:41
 tt_thoma - 26 mars 2020 à 17:40
Salut,
Je me vois forcée de faire un programme en python puisque ma calculette vient de rendre l'âme...
Je cherche à faire exactement 2 programmes : un qui calcule le discriminant et un qui résout une équation du type : ax^n + bx^n + cx +d.
Pour le programme en lui même, pas de problème (Le deuxième se fera par essai/erreur sur les nombres de -5 à +5, les solutions des équations ne dépassant généralement pas ces chiffres.
Par contre, j'ai un souci pour la partie du programme qui demande à l'utilisateur de rentrer ses chiffres. Ça se formule comment en python ? Je voudrais que le programme demande à l'utilisateur l'exposant de x et son indice (carré, cube...) ainsi que d.
Enfin, pour le calcul, l'exposant s'écrit comment en python ? Python respecte-t'il les priorités (d'abord l'exposant ensuite la multiplication, enfin les additions).

Merci de votre aide.
(C'est pas urgent du tout)
A voir également:

2 réponses

pour demander d'entrer une donnée on fait :
x=input()


pour écrire un nombre en puissance on fait :

x**5 pour (x puissance 5) :

remarque :pour la première question il vaut mieux faire :

print "Entrer la valeur de X"
x=input()
77
fiddy
Messages postés
11067
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 807
3 mai 2009 à 01:12

remarque :pour la première question il vaut mieux faire :

print "Entrer la valeur de X"
x=input()

input() est dangereux d'utilisation. Il vaut mieux utiliser raw_input().
Par exemple :
x=int(raw_input('Entrer la valeur de X : '))
Cdlt
1
Germdu51 > fiddy
Messages postés
11067
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022

Modifié par Germdu51 le 29/12/2015 à 19:10
Bonjour Fiddy, il est vrai que je répond tardivement à votre commentaire, mais pourquoi la commande "input()" est elle dangeureuse et pourquoi est il préférable d'utiliser "raw_input()" ?

Merci d'avance pour votre réponse,
Germdu51
-1
fiddy
Messages postés
11067
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 807 > Germdu51
29 déc. 2015 à 19:51
Bonjour,

Car, input() évalue ce que l'utilisateur entre. Donc, tu peux faire exécuter des opérations avec les droits du programme... raw_input() n'évalue pas.
Note : ma remarque s'applique à python 2.x. En python 3.x, input() correspond à raw_input() de la version 2.x. Donc input() en python 3.x peut être utilisé sans crainte.
0
georges97
Messages postés
9513
Date d'inscription
lundi 31 janvier 2011
Statut
Contributeur
Dernière intervention
25 juin 2022
2 169
29 déc. 2015 à 21:14
Bonsoir fiddy,

A mont tour de demander un complément d'explication (grand débutant):

1) que veut dire évaluer dans ce contexte. J'ai testé que dans le cas d'une chaîne de caractères input et raw_input n'opèrent pas le même traitement puisqu'avec le seconde instruction on peut entrer la chaîne sans guillemets (python 2.7).Cela concerne t'il le tyoage des variables numériques ?

2) Exécuter avec les droits du programme veut dire en paramétrant les propriétés pour rendre la programme exécutable n'est ce pas?

Sachant que j'ai utilisé input pour entrer une variable numérique, cette capacité d'évaluation ne peut elle être utilisée pour discriminer entre valeur numérique et chaîne avec un if consécutif à la saisie et qui filtrerait les entrés "chaînes" non-désirées quand on prévoit un nombre ?

Peux tu préciser en quoi consiste le danger et éventuellement comment le détecter dans IDLE en mode debugging ?

Merci d'avance.
0
fiddy
Messages postés
11067
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 807 > georges97
Messages postés
9513
Date d'inscription
lundi 31 janvier 2011
Statut
Contributeur
Dernière intervention
25 juin 2022

29 déc. 2015 à 21:54
1/ Avec input(), tu dois rentrer les guillemets car justement, il y a évaluation de ce que tu saisies au clavier. Par exemple, si tu écris coucou, il retournera le contenu de la variable coucou et ça plantera. C'est exactement pareil, si tu tapes coucou directement dans IDLE. Ca plantera. Avec raw_input(), il considère que ce qui est tapé est une chaîne. Donc pas besoin de guillemets.

2/Ce que je veux dire, c'est que si tu écris un code exécutable en lieu et place d'une variable, elle sera exécutée comme si c'était une instruction du programme.

3/Oui, tu dois pouvoir jouant avec les try catch. En revanche, l'utilisateur peut taper une chaîne qui ne fasse pas planter le programme (donc try catch ne fera rien) et qui sera exécuté par le programme.
Imagine par exemple :
b=5
a=input()

Si l'utilisateur tape b, a vaudra 5. Bien sûr, des personnes compétentes pourront faire des choses bien plus dédommageables... Donc, pour faire un programme robuste, il vaut mieux utiliser raw_input() et gérer la conversion en int.
0