Local Variable “age” referenced before assignment
我最近开始学Python。我正在解决一个问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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 ("") |
我得到的错误显示在下面:
1 2 3 4 5 6 | 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 |
输入如下:
1 2 3 4 5 | 4(Number of test cases) -1 10 16 18 |
输出必须是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 | 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. |
你能告诉我我做错了什么吗?谢谢
在python中,必须显式使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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 |