分配之前引用的局部变量“age”
问题描述:
我最近开始学习python。并正在处理一个问题。分配之前引用的局部变量“age”
class Person:
age = 0
def __init__(self,initial_Age):
if initial_Age<0:
age=0
print("This person is not valid, setting age to 0.")
else:
age = initial_Age
def amIOld(self):
if(age<13):
print("You are young.")
elif(age>=13 and age<18):
print("You are a teenager.")
else:
print("You are old.")
def yearPasses(self):
age = age + 1
T=int(input())
for i in range(0,T):
age=int(input())
p=Person(age)
p.amIOld()
for j in range(0,3):
p.yearPasses();
p.amIOld();
print ("")
我得到的错误显示如下:
Traceback (most recent call last):
File "solution.py", line 27, in <module>
p.yearPasses();
File "solution.py", line 19, in yearPasses
age = age + 1
UnboundLocalError: local variable 'age' referenced before assignment
这种情况的输入是这样:
4(Number of test cases)
-1
10
16
18
输出必须是这样的:
This person is not valid, setting age to 0.
You are young.
You are young.
You are young.
You are a teenager.
You are a teenager.
You are old.
You are old.
You are old.
可以请你引导我w我做错了什么?由于
答
在Python中,你必须使用明确self
访问实例属性:
class Person:
def __init__(self, initial_Age):
if initial_Age < 0:
self.age = 0
print("This person is not valid, setting age to 0.")
else:
self.age = initial_Age
def amIOld(self):
if self.age<13:
print("You are young.")
elif self.age>=13 and self.age<18:
print("You are a teenager.")
else:
print("You are old.")
def yearPasses(self):
self.age += 1
+0
太棒了。这工作。谢谢 – fahadkaleem
阿里纳斯(我想既然你是学习它可能是有用的):把更多的关注代码风格,检查[风格导(https://www.python.org/dev/peps/pep-0008/)。例如,使用'initial_age'而不是'initial_Age',使用骆驼式的方法名('am_i_old','year_passed'),不需要添加';'在行尾,不要使用像'T'和'p'这样的短变量。 –