Python中的类未返回变量

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

我是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 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
谢谢。已解决!:)