Форум программистов, компьютерный форум, киберфорум
Наши страницы

Python: научные вычисления

Войти
Регистрация
Восстановить пароль
 
dencil
10 / 10 / 12
Регистрация: 23.09.2013
Сообщений: 145
#1

Объяснить ошибку - Python

02.11.2016, 22:37. Просмотров 349. Ответов 3
Метки нет (Все метки)

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def Evaltree(tree):
        if(tree.getRoot() not in ['*','+','-','/']):
            return tree.getRoot()
        else:
            currentTree=tree
            stack=currentTree
            while(currentTree.left.getRoot() in ['*','+','-','/']):
                currentTree=currentTree.left
            a=currentTree.left.getRoot()
            b=currentTree.right.getRoot()
            if(b in ['*','+','-','/']):
                Evaltree(currentTree.right)
            a=int(a)+int(b)
            currentTree.setRoot(a)
            currentTree.left.setRoot(None)
            currentTree.right.setRoot(None)
            Evaltree(stack)
Объясните пожалуйста, почему в последней строке выдается ошибка "NameError: name 'Evaltree' is not defined", а на 12 строчку не ругается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2016, 22:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Объяснить ошибку (Python):

Подробно объяснить строку кода - Python
:help: :help: :help: Кто-нибудь, объясните ПОСИМВОЛЬНО, пожалуйста, как ЭТА ЕРЕСЬ работает? Что это за сокращенный сатанинский обряд? ...

Просьба объяснить новичку по коду (поиск частоты слов) - Python
Только начал изучать питон, наткнулся в интернете на такой код: from urllib2 import urlopen # из модуля urllib2 импортируем...

Нужно объяснить ошибку - C++
#include <iostream> using namespace std; int main() { int chess,c1,c2, a1,a2; char line; int...

Объяснить ошибку в программе 20wmr - Delphi
Здравствуйте, нужно исправить ошибку в программе, - Array type required - никак не разберусь, откуда она... готов заплатить 20 wmr -...

Кто может объяснить ошибку? - C#
нужно найти сумму элементов нечетных столбцов, вроде все так, но ищет четных..в упор не вижу ошибку using System; using...

Найти ошибку в коде и объяснить природу ее возникновения - Pascal ABC
Функцию находит нормально, после того как ввожу Z всплывает ошибка, посмотрите.Решите пожалуйста ошибку в программе и если сможете...

3
vrm2
263 / 169 / 35
Регистрация: 03.12.2015
Сообщений: 295
Завершенные тесты: 2
03.11.2016, 00:13 #2
Что-то не воспроизводится ошибка. Есть пример вызова данной функции, которая приводит к ошибке?
0
dencil
10 / 10 / 12
Регистрация: 23.09.2013
Сообщений: 145
03.11.2016, 10:36  [ТС] #3
vrm2, вызываю из другого файла
Python
1
2
3
4
5
import BinaryTreeLib
 
BTL=BinaryTreeLib
t=BTL.BinaryTree.buildTree("( ( ( 1 + 2 ) + ( 3 + 4 ) ) + ( 5 + 6 ) )")
BTL.BinaryTree.Evaltree(t)
0
vrm2
263 / 169 / 35
Регистрация: 03.12.2015
Сообщений: 295
Завершенные тесты: 2
03.11.2016, 16:24 #4
Похоже, что Evaltree это метод в классе BinaryTree. Поэтому его надо пометить как @staticmethod и вызывать как BinaryTree.Evaltree(), а не просто как Evaltree()

Т.е. как-то так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@staticmethod # исправлено
def Evaltree(tree):
        if(tree.getRoot() not in ['*','+','-','/']):
            return tree.getRoot()
        else:
            currentTree=tree
            stack=currentTree
            while(currentTree.left.getRoot() in ['*','+','-','/']):
                currentTree=currentTree.left
            a=currentTree.left.getRoot()
            b=currentTree.right.getRoot()
            if(b in ['*','+','-','/']):
                BinaryTree.Evaltree(currentTree.right) # исправлено
            a=int(a)+int(b)
            currentTree.setRoot(a)
            currentTree.left.setRoot(None)
            currentTree.right.setRoot(None)
            BinaryTree.Evaltree(stack) # исправлено
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2016, 16:24
Привет! Вот еще темы с ответами:

дана программа нужно найти и объяснить ошибку... - Turbo Pascal
case x of 0...9:write ('введена цифра'); 10...99:('введено двухзначное число'); end.

Исправить ошибку в приведенном коде и объяснить ее происхождение - Java SE
Ругается в этой строчке: Item one = iter.next(); import java.util.ArrayList; import java.util.Iterator; public class...

не мог бы кто нибудь объяснить ошибку с темплейтами - C++
Добрый день, (или вечер) не мог бы кто нибудь помочь разобраться с ошибкой с темплейтами в пространстве Warning567 объявлено...

С# исправить ошибку и объяснить алгоритм нахождения седловых точек - C#
Можете подправить косяки, и объяснить как найти номер всех седловых точек массива. ЗЫ матрица А имеет седловую точку Аij, если Аij является...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru