import sys
print(sys.platform)
print(2**100)
raw_input()
J'utilise Python 3.1 et je ne peux pas obtenir le raw_input
pour "geler" la fenêtre contextuelle. Le livre que je lis est pour Python 2.5 et j'utilise Python 3.1
Que dois-je faire pour résoudre ce problème?
raw_input()
a été renommé en input()
From Nouveautés de Python 3. .
Cela fonctionne dans Python 3.x et 2.x:
# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))
Un moyen fiable de résoudre ce problème est
from six.moves import input
six est un module qui corrige la plupart des 2/3 points douloureux courants de la base de code.
Dans Python 3.xx, vous avez simplement besoin de input()
pas raw_input()
Comme d'autres l'ont indiqué, la fonction raw_input
a été renommée en input
dans Python 3.0, et vous seriez mieux servi par un livre plus récent, mais je tiens à souligner qu'il existe de meilleures façons de voir la sortie de votre script.
D'après votre description, je pense que vous utilisez Windows, vous avez enregistré un fichier .py
puis vous double-cliquez dessus pour l'exécuter. La fenêtre du terminal qui s'ouvre se ferme dès la fin de votre programme. Vous ne pouvez donc pas voir le résultat de votre programme. Pour résoudre ce problème, votre livre recommande l'ajout d'une instruction raw_input
/input
à attendre jusqu'à ce que l'utilisateur appuie sur Entrée. Cependant, comme vous l'avez vu, si quelque chose ne va pas, par exemple une erreur dans votre programme, cette instruction ne sera pas exécutée et la fenêtre se fermera sans que vous ne puissiez voir ce qui s'est mal passé. Vous trouverez peut-être plus facile d'utiliser une invite de commande ou IDLE.
Dans la fenêtre du dossier contenant votre programme Python, maintenez la touche Maj enfoncée, puis cliquez avec le bouton droit de la souris dans la zone d’arrière-plan blanc de la fenêtre. Le menu qui apparaît devrait contenir une entrée "Ouvrir la fenêtre de commande ici". (Je pense que cela fonctionne sur Windows Vista et Windows 7.) Cela ouvrira une fenêtre d'invite de commande qui ressemble à ceci:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Weeble\My Python Program>_
Pour exécuter votre programme, tapez ce qui suit (en remplaçant votre nom de script):
python myscript.py
... et appuyez sur Entrée. (Si vous obtenez une erreur indiquant que "python" n'est pas une commande reconnue, voir http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96 ) Lorsque votre programme est en cours d'exécution, se termine avec succès ou non, la fenêtre restera ouverte et l'invite de commande réapparaîtra pour vous permettre de saisir une autre commande. Si vous souhaitez exécuter votre programme à nouveau, vous pouvez appuyer sur la flèche vers le haut pour rappeler la commande précédente que vous avez entrée et appuyer sur Entrée pour l'exécuter à nouveau, sans avoir à saisir le nom du fichier à chaque fois.
IDLE est un éditeur de programme simple installé avec Python. Parmi d'autres fonctionnalités, il peut exécuter vos programmes dans une fenêtre. Cliquez avec le bouton droit de la souris sur votre fichier .py
et choisissez "Éditer en mode IDLE". Lorsque votre programme apparaît dans l'éditeur, appuyez sur F5 ou choisissez "Module d'exécution" dans le menu "Exécuter". Votre programme s'exécutera dans une fenêtre qui restera ouverte à la fin de votre programme et dans laquelle vous pourrez entrer les commandes Python à exécuter immédiatement.
La solution de Timmerman fonctionne parfaitement lors de l'exécution du code, mais si vous ne souhaitez pas obtenir les erreurs Undefined name
lors de l'utilisation de pyflakes ou d'un linter similaire, vous pouvez utiliser les éléments suivants:
try:
import __builtin__
input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
pass
Voici un morceau de code que j'ai mis dans mes scripts et que je ne voudrais pas exécuter dans un environnement py2/3-agnostic:
# Thank you, python2-3 team, for making such a fantastic mess with
# input/raw_input :-)
real_raw_input = vars(__builtins__).get('raw_input',input)
Vous pouvez maintenant utiliser real_raw_input. C'est assez cher mais court et lisible. Utiliser une entrée brute prend généralement beaucoup de temps (attendre une entrée), donc ce n’est pas important.
En théorie, vous pouvez même affecter raw_input au lieu de real_raw_input, mais certains modules peuvent vérifier l’existence de raw_input et se comporter en conséquence. Mieux vaut rester prudent.
Ce n’était probablement pas la meilleure solution, mais avant de venir ici, j’ai juste fait ça à la volée pour continuer à travailler sans interruption rapide des études.
def raw_input(x):
input(x)
Ensuite, lorsque je lance raw_input('Enter your first name: ')
sur le script sur lequel je travaillais, il le capture comme le ferait input()
.
Il y a peut-être une raison pour ne pas faire ceci, que je n'ai pas encore rencontré!
la fonction raw_input () a été supprimée de Python 3.x. pour prendre l'entrée python2 avait deux fonctions qui étaient input () et raw_input ()
Si vous voulez avoir la même fonctionnalité de 2.x dans 3.x pour prendre le paramètre d'entrée, veuillez suivre ce lien wiki https://en.wikibooks.org/wiki/Python_Programming/Input_and_Output