Python: vérifier une entrée
koriolis
-
loveparade Messages postés 515 Statut Membre -
loveparade Messages postés 515 Statut Membre -
Bonjour à la communauté,
Je développe en python et je cherche à:
enter une commande >> vérifier si elle existe dans une chaine >> l'exécuter si oui / dire qu'elle n' n'existe pas sinon.
J'en suis à ça:
chaine="liste des commandes séparés par un "/" "
def entrercom():
commande=input()
for commande in chaine:
commande()
else:
print "commande invalide"
entrercom()
le hic, c'est que si j'entre une valeur qui n'éxiste pas, cela m'offre un joli " name trucmachin is not definited ", alors que j'aimerais bien afficher un beau " commande inconnue... " et revenir au commande=input().
Auriez-vous une idée ? Merci d'avance !
Je développe en python et je cherche à:
enter une commande >> vérifier si elle existe dans une chaine >> l'exécuter si oui / dire qu'elle n' n'existe pas sinon.
J'en suis à ça:
chaine="liste des commandes séparés par un "/" "
def entrercom():
commande=input()
for commande in chaine:
commande()
else:
print "commande invalide"
entrercom()
le hic, c'est que si j'entre une valeur qui n'éxiste pas, cela m'offre un joli " name trucmachin is not definited ", alors que j'aimerais bien afficher un beau " commande inconnue... " et revenir au commande=input().
Auriez-vous une idée ? Merci d'avance !
A voir également:
- Python: vérifier une entrée
- Citizen code python - Accueil - Outils
- Citizen code python solution - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
- [PyCharm] Pas d'interpréteur python ✓ - Forum Python
3 réponses
from sys import stdout
chaine = "commande1 / commande2 ..."
req = raw_input("Commande a tester\n")
if req in chaine:
exec req+"()"
Exemple:
from sys import stdout
def ech():
stdout.write("ok"\n)
ch = "ech ebh"
while 1:
a = "ech"
if a in ch:
exec a+"()"
break
else:
stdout.write("Commande inconnue\n")
mais bon, c'est pas très esthétique. C'est pour quoi faire au juste?
Ok après tu peux les mettres dans un dic par exemple
genre :
Enfin a toi d'adapter, car de plus, le python est relativement simple. A plus tard.
genre :
def dir_function(): ...
def del_function(): ...
commande = dict()
commande['dir'] = dir_function
commande['dir'] = del_function
cmd = "dir"
if commande.has_key(cmd):
commande[cmd]()
Enfin a toi d'adapter, car de plus, le python est relativement simple. A plus tard.
Je vais de ce pas adapter (maintenant que c'est compris ) ce code à mon projet...
En fait, je cherche par simple amusement à faire une sorte de console type dos (Windows) ou shell (linux)...
Pour l'heure, mon programme se décompose comme ceci:
l'interface ou l'on écrit la commande >> une fonction exécute la commande spécifique >> retour à l'interface ou l'on écrit ladite commande...
Le hic, c'est que si j'ai déjà pas mal de fonctions que j'ai développé ( listing des dossier/fichiers, création/édition de dossier, documents texte, contrôle de l'ordinateur ( éteindre, mettre en veille... (uniquement sous windows, pour le coup)) et autres... ), il y a toujours le risque que l'utilisateur se trompe dans la syntaxe de la commande... d'où ma question ^^
Sinon, je ne fais vraiment ça que par pur amusement...