148 votes

Python 2.7 obtient l'entrée de l'utilisateur et la manipule comme une chaîne sans guillemets

Je veux obtenir une chaîne de caractères d'un utilisateur, puis la manipuler.

testVar = input("Ask user for something.")

Existe-t-il un moyen de faire en sorte que testVar soit une chaîne de caractères sans que l'utilisateur doive saisir sa réponse entre guillemets ? Par exemple, "Hello" ou "Hello".

Si l'utilisateur tape "Hello", j'obtiens l'erreur suivante :

NameError : le nom 'Hello' n'est pas défini

268voto

Sven Marnach Points 133943

Utilisez raw_input() au lieu de input() :

testVar = raw_input("Ask user for something.")

input() évalue en fait l'entrée comme du code Python. Je suggère de ne jamais l'utiliser. raw_input() renvoie la chaîne verbatim saisie par l'utilisateur.

14voto

chuck Points 168

La fonction input évaluera également les données qu'il vient de lire comme du code python, ce qui n'est pas vraiment ce que vous voulez.

L'approche générique consisterait à traiter l'entrée de l'utilisateur (à partir de sys.stdin ) comme tout autre fichier. Essayez

import sys
sys.stdin.readline()

Si vous voulez faire court, vous pouvez utiliser raw_input qui est identique à input mais omet l'évaluation.

11voto

Projesh Bhoumik Points 357

Nous pouvons utiliser le raw_input() dans Python 2 et la fonction input() dans Python 3. Par défaut, la fonction d'entrée prend une entrée au format chaîne de caractères. Pour d'autres types de données, vous devez convertir l'entrée de l'utilisateur.

En Python 2, nous utilisons la fonction raw_input() fonction. Il attend que l'utilisateur tape des données et appuie sur la touche return et nous devons stocker la valeur dans une variable en la coulant comme notre type de données désiré. Soyez prudent lorsque vous utilisez le casting de type

x = raw_input("Enter a number: ") #String input

x = int(raw_input("Enter a number: ")) #integer input

x = float(raw_input("Enter a float number: ")) #float input

x = eval(raw_input("Enter a float number: ")) #eval input

En Python 3, nous utilisons la fonction input() qui renvoie une valeur d'entrée utilisateur.

x = input("Enter a number: ") #String input

Si vous entrez une chaîne de caractères, un int, un float, eval, il prendra comme entrée de chaîne de caractères

x = int(input("Enter a number: ")) #integer input

Si vous entrez une chaîne de caractères pour int cast ValueError: invalid literal for int() with base 10:

x = float(input("Enter a float number: ")) #float input

Si vous entrez une chaîne de caractères pour la distribution des flottants ValueError: could not convert string to float

x = eval(input("Enter a float number: ")) #eval input

Si vous entrez une chaîne pour eval cast NameError: name ' ' is not defined Ces erreurs sont également applicables à Python 2.

7voto

Prav001 Points 323

Si vous voulez utiliser input au lieu de raw_input dans python 2.x, alors cette astuce vous sera utile

    if hasattr(__builtins__, 'raw_input'):
      input=raw_input

Après quoi,

testVar = input("Ask user for something.")

fonctionnera très bien.

2voto

Artur Gaspar Points 1664
testVar = raw_input("Ask user for something.")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X