Comment définir une valeur par défaut modifiable chaîne pour raw_input?
J'utilise Python 2.7 est raw_input
à lire depuis l'entrée standard.
Je veux permettre à l'utilisateur de modifier une chaîne par défaut.
Code:
i = raw_input("Please enter name:")
Console:
Please enter name: Jack
L'utilisateur doit être présenté avec Jack
mais peut changer (backspace) pour quelque chose d'autre.
La Please enter name:
argument serait l'invite pour raw_input
et qu'une partie ne devrait pas être modifiable par l'utilisateur.
- Double Possible de Montrer la valeur par défaut pour l'édition sur Python d'entrée possible?
Vous devez vous connecter pour publier un commentaire.
Que vous pouvez faire:
De cette façon, si l'utilisateur n'presses de retour sans entrer quoi que ce soit, "je" sera attribué à "Jack".
Jack
n'est pas modifiable.Python2.7 obtenir raw_input et définir une valeur par défaut:
Mettre ça dans un fichier appelé".py:
Exécuter le programme, il s'arrête et présente à l'utilisateur ce:
Le curseur est à la fin, l'utilisateur appuie sur la touche retour arrière jusqu'à ce que 'un insecticide' est parti, les types de quelque chose d'autre, puis appuie sur entrée:
Programme se termine comme cela, la réponse finale obtient ce que l'utilisateur a tapé:
Équivalent ci-dessus, mais travaille en Python3:
Plus d'infos sur ce qui se passe ici:
https://stackoverflow.com/a/2533142/445131
Dans dheerosaur de réponse Si l'utilisateur appuyez sur Entrée pour sélectionner la valeur par défaut dans la réalité, il ne sera pas enregistré comme python considère comme " chaîne afin d'Étendre un peu sur ce que dheerosaur.
Pour info .. Le
ASCII value
de retour arrière est08
Jack
est juste imprimé, mais pas par défaut.J'ai seulement ajouter cette raison, vous devez écrire une fonction simple pour la réutilisation. Ici est le seul que j'ai écrit:
Sur les plates-formes avec
readline
, vous pouvez utiliser la méthode décrite ici: https://stackoverflow.com/a/2533142/1090657Sur Windows, vous pouvez utiliser le msvcrt module:
Noter que les touches de direction ne fonctionne pas pour la version windows, quand il est utilisé, il ne se passera rien.
Pour windows utilisateurs avec
gitbash/msys2
oucygwin
vous pouvez l'utiliser intégré dans readline via python sous-processus. C'est une sorte de hack mais fonctionne très bien et ne nécessite pas de code tiers. Pour les outils personnels, cela fonctionne vraiment bien.Msys2 spécifique: Si vous voulez ctrl+c pour immédiatement la sortie, vous aurez besoin pour exécuter votre programme avec
winpty python program.py
Essayez ceci:
raw_input("Please enter name: Jack" + chr(8)*4)
La valeur ASCII de
backspace
est08
.Jack
est juste imprimé, mais pas par défaut.