2014-04-20 103 views
0

当运行在终端以下代码:NameError:名称“___”没有定义

import getpass 
import sys 
import telnetlib 
import time 

user = input("Please Enter Your Username: ") 
password = input("Please Enter Your Password: ") 
ip = input("Please Enter RPi IP Address: ") 

bot = telnetlib.Telnet(ip) 
bot.read_until("login: ") 
bot.write(user + "\n") 
bot.read_until("password: ") 
bot.write(password + "\n") 

我得到一个错误消息说:

Traceback (most recent call last): 
    File "con.py", line 6, in <module> 
    use = input("Please Enter Your Username: ") 
    File "<string>", line 1, in <module> 
NameError: name 'pi' is not defined 

PS pi是什么送给可变user。它运行在python shell中(直到它到达telnet部分,但它显然不能在shell中工作)。为什么它不会在终端中运行?

由于

+0

'input'应该是'raw_input'。 – Blender

+0

@blender不适用于Python 3及以上版本? – crossboy007

+0

它看起来不像你在用Python 3执行脚本。你是如何运行它的? – Blender

回答

3

在Python 2,使用raw_input()代替input()采取来自用户的字符串输入。

input()尝试将输入评估为Python表达式;在Python表达式中,裸字符串被视为变量名称,因此是NameError。您可以改为输入"pi",但这不是一个好的用户界面。

演示:

>>> input("Please Enter Your Username: ") 
Please Enter Your Username: pi 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<string>", line 1, in <module> 
NameError: name 'pi' is not defined 
>>> raw_input("Please Enter Your Username: ") 
Please Enter Your Username: pi 
'pi' 
相关问题