11
votes

Pourquoi `INPUT` in Python 3 Lancer NameError: nom ... n'est pas défini

J'ai une variable de chaîne test , dans Python 2.x Cela fonctionne bien. XXX

mais à Python 3.x, je fais: xxx

avec la chaîne d'entrée sdas , et je reçois un message d'erreur xxx


2 commentaires

J'ai eu le même problème lors de l'utilisation d'un terminal avec Python2 tout en écrivant le code dans Python3


Votre instruction Test n'est pas Python 3.x: il devrait être Imprimer (test) . Comme c'est le cas, Python tente d'évaluer le test comme commande.


7 Réponses :


6
votes

Je dirais que le code dont vous avez besoin est le suivant: xxx

sinon il ne doit pas être exécuté du tout, en raison d'une erreur de syntaxe. La fonction impression nécessite des supports dans Python 3. Je ne peux pas reproduire votre erreur, cependant. Êtes-vous sûr que ce sont ces lignes causant cette erreur?


0 commentaires

14
votes

Vous exécutez votre code Python 3 avec un interprète Python 2. Si vous n'étiez pas, votre instruction imprimer lancerait un syntaxierror avant de ne jamais vous inviter à entrer.

Le résultat est que vous utilisez Python 2's entrée , qui tente de eval votre entrée (probablement sdas ), déclare qu'il est invalide Python et meurt.


1 commentaires

La fonction d'entrée Python 3 est bien expliquée dans cette vidéo: YouTube.com/watch?v=i7Y9UGHJJUG.



0
votes

SDAS est en train d'être lu comme une variable. Pour saisir une chaîne dont vous avez besoin ""


2 commentaires

Es-tu sûr? Autant que j'ai bien compris, l'OP veut que Zu passe une variable définie afin que le script évalue la variable.


Pouvez-vous élaborer ce que vous voulez dire? Ce serait mieux si vous fournissez un extrait de code?




0
votes

Dans les systèmes d'exploitation tels que Ubuntu Python est préinstallé. Donc, la version par défaut est Python 2.7, vous pouvez confirmer la version en tapant la commande ci-dessous dans votre terminal xxx pré>

si vous l'avez installé mais n'a pas défini la version par défaut, vous verrez P>

test = input("enter the test")
print(test)


0 commentaires

1
votes

Si nous SETASIDE L'erreur de syntaxe d'impression, le moyen d'utiliser l'entrée dans plusieurs scénarios est -

si vous utilisez Python 2.x: xxx

si vous utilisez Python 3.x: xxx


0 commentaires

0
votes
temperature = input("What's the current temperature in your city? (please use the format ??C or ???F) >>> ")

### warning... the result from input will <str> on Python 3.x only
### in the case of Python 2.x, the result from input is the variable type <int>
### for the <str> type as the result for Python 2.x it's neccessary to use the another: raw_input()

temp_int = int(temperature[:-1])     # 25 <int> (as example)
temp_str = temperature[-1:]          # "C" <str> (as example)

if temp_str.lower() == 'c':
    print("Your temperature in Fahrenheit is: {}".format(  (9/5 * temp_int) + 32      )  )
elif temp_str.lower() == 'f':
    print("Your temperature in Celsius is: {}".format(     ((5/9) * (temp_int - 32))  )  )

0 commentaires