Comment éviter l'insertion d'une nouvelle ligne dans les fonctions d'entrée
Lors de l'utilisation de la fonction d'entrée en Python, il est souvent souhaitable de l'empêcher d'ajouter automatiquement une nouvelle ligne après la saisie de l'utilisateur. Cela permet un flux plus fluide dans certains scénarios.
Pour y parvenir, de nombreux utilisateurs de Python connaissent la méthode de suppression du caractère de nouvelle ligne dans les instructions d'impression à l'aide d'une virgule finale. Cependant, la même technique ne s'applique pas lorsqu'il s'agit de fonctions d'entrée telles que raw_input dans Python 2.x ou input dans Python 3.x.
Comprendre le problème
Lors de l'utilisation de raw_input (ou input), un caractère de nouvelle ligne (représenté par « n ») est systématiquement ajouté après la saisie de l'utilisateur. Cela peut être problématique dans les situations où l'invite doit suivre la même ligne que l'entrée, comme dans l'exemple suivant :
print "Hello, " name = raw_input() print ", how do you do?"
Résultat :
Hello, Tomas , how do you do?
Résultat souhaité :
Hello, Tomas, how do you do?
Surmonter la limitation
Méthode 1 : Utiliser une approche personnalisée
Comme mentionné par Ferdinand Beyer, il n'est fondamentalement pas possible d'éliminer le caractère de nouvelle ligne directement depuis raw_input ou input. Cependant, il existe une solution de contournement qui implique une approche personnalisée.
En exploitant les séquences de contrôle du terminal ' 33[{}C 33[1A'.format(len(x) y), où x est la longueur de l'utilisateur input et y est la longueur de la chaîne raw_input, il est possible de déplacer le curseur vers la ligne juste avant la saisie de l'entrée.
Méthode 2 : Alternatives aux fonctions d'entrée
Alternativement, il existe d'autres méthodes pour recueillir les entrées des utilisateurs sans rencontrer le problème de nouvelle ligne. L'une de ces méthodes utilise le module getpass :
import getpass name = getpass.getpass("Hello, ") print ", how do you do?"
Cette approche affiche l'invite sans nouvelle ligne de fin et renvoie l'entrée directement, évitant ainsi le saut de ligne supplémentaire. Cependant, il désactive également l'écho de l'entrée, ce qui peut ne pas convenir à toutes les situations.
En conclusion, même s'il n'est pas possible d'empêcher raw_input ou input d'ajouter une nouvelle ligne, en utilisant une approche personnalisée avec des séquences de contrôle de terminal ou l'exploration de méthodes de saisie alternatives telles que getpass peut fournir une solution qui correspond à des exigences spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!