web-dev-qa-db-fra.com

Quelle est la différence entre raw_input () et input () dans python3.x?

Quelle est la différence entre raw_input() et input() dans python3.x?

321
pkumar

La différence est que raw_input() n'existe pas dans Python 3.x, contrairement à input(). En fait, l'ancienne raw_input() a été renommée en input() et l'ancienne input() a disparu, mais peut être facilement simulée à l'aide de eval(input()). (N'oubliez pas que eval() est diabolique. Essayez si possible d'utiliser des méthodes plus sûres pour analyser votre entrée.)

376
Sven Marnach

En Python 2 , raw_input() renvoie une chaîne et input() tente d'exécuter l'entrée en tant qu'expression Python.

Comme obtenir une chaîne était presque toujours ce que vous souhaitiez, Python 3 le fait avec input(). Comme le dit Sven, si vous voulez l'ancien comportement, eval(input()) fonctionne.

181
Thomas K

Python 2:

  • raw_input() prend exactement ce que l'utilisateur a saisi et le renvoie sous forme de chaîne. 

  • input() prend d'abord la raw_input(), puis effectue également une eval()

La principale différence est que input() attend une instruction python syntaxiquement correcte, contrairement à raw_input().

Python 3:

  • raw_input() a été renommé en input() alors input() renvoie la chaîne exacte.
  • L'ancien input() a été supprimé. 

Si vous souhaitez utiliser l'ancien input(), ce qui signifie que vous devez évaluer une entrée utilisateur en tant qu'instruction python, vous devez le faire manuellement à l'aide de eval(input()).

103
screenglow

En Python 3, raw_input() n'existe pas, ce qui a déjà été mentionné par Sven.

En Python 2, la fonction input() évalue votre entrée.

Exemple:  

name = input("what is your name ?")
what is your name ?harsha

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    name = input("what is your name ?")
  File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined

Dans l'exemple ci-dessus, Python 2.x tente d'évaluer harsha en tant que variable plutôt qu'en tant que chaîne. Pour éviter cela, nous pouvons utiliser des guillemets doubles autour de notre entrée comme "harsha":

>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha

entrée brute()

La fonction raw_input () `n'évalue pas, elle lit simplement ce que vous entrez.

Exemple:

name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'

Exemple:  

 name = eval(raw_input("what is your name?"))
what is your name?harsha

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    name = eval(raw_input("what is your name?"))
  File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined

Dans l'exemple ci-dessus, j'essayais simplement d'évaluer l'entrée de l'utilisateur avec la fonction eval.

24
Harsha Vardhan

Je voudrais ajouter un peu plus de détails à l'explication fournie par tout le monde pour les utilisateurs de python 2 . raw_input(), qui, à présent, vous savez, évalue les données saisies par l'utilisateur sous forme de chaîne. Cela signifie que python n'essaie même plus de comprendre les données saisies. Tout ce qui sera pris en compte, c'est que les données saisies seront des chaînes, que ce soit ou non une chaîne, int ou autre. 

Alors que input() essaye en revanche de comprendre les données saisies par l'utilisateur. Ainsi, l'entrée telle que helloworld afficherait même l'erreur sous la forme 'helloworld is undefined'. 

En conclusion, pour python 2 , pour entrer une chaîne, vous devez également la saisir comme 'helloworld', qui est la structure commune utilisée dans python pour utiliser des chaînes. 

7
Rubal

Si vous voulez vous assurer que votre code est en cours d'exécution avec python2 et python3, utilisez function input () dans votre script et ajoutez ceci au début de votre script:

from sys import version_info
if version_info.major == 3:
    pass
Elif version_info.major == 2:
    try:
        input = raw_input
    except NameError:
        pass
else:
    print ("Unknown python version - input function not safe")
0
Ing. Josef Klotzner