Python : demander à l'utilisateur
Résolu/Fermé
la quiche
tt_thoma - 26 mars 2020 à 17:40
- Messages postés
- 260
- Date d'inscription
- jeudi 27 mars 2008
- Statut
- Membre
- Dernière intervention
- 11 novembre 2020
tt_thoma - 26 mars 2020 à 17:40
A voir également:
- Python demander une saisie
- Python demander une valeur - Meilleures réponses
- Demander une valeur python - Meilleures réponses
- Python : demander à l'utilisateur ✓ - Forum - Python
- Python , input() contrôler les entrées - Forum - Python
- [JAVA]Demander d'entrer une variable ✓ - Forum - Java
- Python demander liste - Forum - Python
- Python saisie utilisateur ✓ - Forum - Python
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
Modifié par Germdu51 le 29/12/2015 à 19:10
Merci d'avance pour votre réponse,
Germdu51
29 déc. 2015 à 19:51
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.
29 déc. 2015 à 21:14
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.
29 déc. 2015 à 21:54
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 :
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.