Python返回错误NameError: name 'subject_t'未定义
Python 报错了
Traceback (most recent call last):
File "<stdin>", line 29, in <module>
NameError: name 'subject_t' is not defined
代码:
name = raw_input('Enter your name')
if name == 'Truxten':
print "Hello Truxten"
user_name = 'truxten'
if name == 'Hannah':
print "Hello Hannah"
user_name = hannah
if name == 'Matthew':
print "Hello Matthew"
user_name = matthew
if name == 'Jax':
print "Hello Jax"
user_name = jax
if name == 'Ellie':
print "Hello Ellie"
user_name = ellie
def t_subject():
subject_t = raw_input('Enter the Subject')
if user_name == 'truxten':
t_subject()
print subject_t
2 个回答
1
当你在你的 t_subject
函数里给变量 subject_t
赋值时,其实是把这个值放在了函数的局部范围内。你需要在全局范围内定义 subject_t
,可以这样做:
subject_t = None
def t_subject():
global subject_t
subject_t = raw_input('Enter the Subject')
而且你是无条件地打印 subject_t
。如果你使用全局范围的方法,如果 t_subject()
从来没有被调用过,subject_t
就会是 None
(或者你在全局范围内赋给它的其他值)。
另外,这和你问的问题没有直接关系,但你赋值的其实是叫 hannah
、matthew
的变量,而不是像 'truxten'
这样的字符串。
3
这是因为 subject_t
超出了作用域,实际上它 并没有被定义。
变量 subject_t
只在 t_subject()
这个函数里面存在。所以你不能显示它。
你可以使用:
def t_subject():
subject_t = raw_input('Enter the Subject')
print subject_t
但我建议,像很多函数一样,加入一个返回语句:
subject = None
def t_subject():
subject_t = raw_input('Enter the Subject')
return subject_t
if name == 'truxten':
subject = t_subject()
if subject is not None:
print subject
我觉得你需要进一步研究一下关于 函数、变量、作用域 和 类 的内容……尤其是类。
祝你好运!