Python中的类未返回变量
我是python的新手,我想写一个如此简单的脚本,让别人猜我的年龄。我还想计算猜测的次数(self.trytes),但脚本不计算。我哪里出错了Python中的类未返回变量,python,class,Python,Class,我是python的新手,我想写一个如此简单的脚本,让别人猜我的年龄。我还想计算猜测的次数(self.trytes),但脚本不计算。我哪里出错了 class Age: def __init__(self, *tries): self.tries = tries self.my_age = 14 def guess(self): self.tries = 0 number = int(input('How old I am?- ')) if numb
class Age:
def __init__(self, *tries):
self.tries = tries
self.my_age = 14
def guess(self):
self.tries = 0
number = int(input('How old I am?- '))
if number == self.my_age:
print('')
print('Congratulations, you guessed it from the 1st time!')
else:
if number > self.my_age:
print(f'\nTry no.: {self.tries}')
self.tries += 1
print(f'|-- Incorrect. I am younger than {number} --|')
repeat = input('Try once again? (Y/N)- ').upper()
if repeat == 'Y':
self.guess()
else:
pass
elif number < self.my_age:
print(f'\nTry no.: {self.tries}')
self.tries += 1
print(f'|-- Incorrect. I am older than {number} --|')
repeat = input('Try once again? (Y/N)- ').upper()
if repeat == 'Y':
self.guess()
else:
pass
仅在
\uuuu init\uuuu
中声明尝试
变量,不要在猜测
函数中再次用0初始化它。您将通过以下方式获得正确的计数:
class Age:
def __init__(self, *tries):
self.tries = tries
self.my_age = 14
self.tries = 1
def guess(self):
number = int(input('How old I am?- '))
if number == self.my_age:
print('')
print('Congratulations, you guessed it from the 1st time!')
else:
if number > self.my_age:
print(f'\nTry no.: {self.tries}')
self.tries += 1
print(f'|-- Incorrect. I am younger than {number} --|')
repeat = input('Try once again? (Y/N)- ').upper()
if repeat == 'Y':
self.guess()
else:
pass
elif number < self.my_age:
print(f'\nTry no.: {self.tries}')
self.tries += 1
print(f'|-- Incorrect. I am older than {number} --|')
repeat = input('Try once again? (Y/N)- ').upper()
if repeat == 'Y':
self.guess()
else:
pass
x = Age(1)
x.guess()
班级年龄:
定义初始化(self,*尝试):
self.tries=尝试
self.my_年龄=14岁
self.tries=1
def猜测(自我):
number=int(输入('我多大?-'))
如果number==self.my_年龄:
打印(“”)
print('恭喜你,你第一次就猜到了!')
其他:
如果编号>自我我的年龄:
打印(f'\n试验编号:{self.trys}')
self.tries+=1
打印(f'|--不正确。我比{number}--|年轻)
repeat=input('再试一次?(Y/N)-')。upper()
如果repeat==“Y”:
self.guess()
其他:
通过
elif编号
我简化了问题,以提请注意解决方案的一些关键部分。在程序中反复做同样事情的最简单方法是使用循环。对于这个问题,您希望在用户交互代码上不断循环,直到用户正确猜测或放弃为止。在循环时,您希望跟踪尝试自定义消息的次数,并告知用户他们的努力
例如:
def guess_my_age(actual_age):
keep_trying = True
tries = 0
while keep_trying:
tries += 1
print(f"Try number: {tries}")
guessed_age = int(input("How old am I? "))
if guessed_age == actual_age:
if tries == 1:
print("Congratulations, you guessed my age on your first try!")
else:
print(f"Nice, you guessed my age after {tries} tries.")
keep_trying = False
else:
if guessed_age > actual_age:
print(f"Sorry, I am younger than {guessed_age}.")
else:
print(f"Sorry, I am older than {guessed_age}.")
keep_trying = input('Try again? (Y/N) ').upper() == "Y"
guess_my_age(14)
您可以在每次调用
x.guess()
后执行print(x.trytes)
,在方法定义的第一行设置self.trytes=0
。您在调用Age(1)
时将self.trytes
定义为1
,然后在guess()
您将其设置回0
谢谢。已解决!:)