Доступ к глобальным переменным внутри функций Python - PullRequest
1 голос
/ 05 июня 2019

Я пытаюсь обновить переменную 1 или 2 из функции calc, а затем распечатать ее в функции rob. Но всякий раз, когда я делаю это, он возвращается к нулю, и это вызывает проблемы

Использовал ключевое слово global как упомянуто Использование глобальных переменных в функции и не может получить доступ к глобальной переменной изнутри функции в python , но это, похоже, не работает

class Solution(object):
    one=0
    two= 0
    def calc(self,root,flag):
        global one
        global two
        if root == None:
            return
        if flag:
            self.one+=root.val
            Solution().calc(root.left,False)
            Solution().calc(root.right, False)
        else :
            self.two+=root.val
            Solution().calc(root.left, True)
            Solution().calc(root.right, True)
        print (str(root.val)+" " + str(self.one) + " " + str(self.two))
    def rob(self, root):
        self.calc(root,True)
        global one
        global two        
        print self.one
        print self.two
        return max(self.one,self.two)

Это в основном всегда возвращать один и два обратно в ноль

1 Ответ

0 голосов
/ 05 июня 2019

Без определения root и примера вызова кода, который дает неправильный ответ, трудно ответить на ваш вопрос. Тем не менее, я думаю, что проблема в том, что вы присваиваете root.val атрибуту Solution, не увеличивающему глобальные значения:

# You have:
self.one += root.val
# You want:
one += root.val
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...