Python : demander à l'utilisateur
Résolu
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)
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)
Configuration: Linux Firefox 3.0.7
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()-
-
@fiddyBonjour 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 -
Contributeur@Germdu51Bonjour,
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. -
ContributeurBonsoir 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. -
Contributeur@georges971/ 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.
-