#python-3.x #list #class
Вопрос:
Мне нужно реализовать класс стека, который будет хранить только целые числа. Реализуйте в этом классе метод, который вычисляет четные и нечетные числа и возвращает деление суммы четных на шансы. Чтобы добавить каждое число, необходимо разложить стопку. При использовании этого метода стек будет пуст. Вот мой код:
import sys
import re
class Stack:
def __init__(self):
self.stack=[] t
self.size_stack = 0
self.even=[]
self.odd=[]
def stack(self, e):
self.stack.append(e)
self.size_stack =1
#método para remover e retornar o final da pilha
def unstack(self):
if self.void() == False:
self.size_stack -=1
return self.stack.pop()
def top(self):
if self.void() == False:
return self.stack[-1]
#return None
def void(self):
if self.size_stack == 0 :
return True
return False
def size(self):
return self.size_stack
def sum_stack(self):
for num in self.stack:
if num % 2 == 0:
self.even.append(self.top)
self.stack.pop()
else:
self.odd.append(self.top)
self.stack.pop()
result_even = sum(self.even)
result_odd = sum(self.odd)
final_result = result_even/result_odd
return final_result
p = Stack()
n = int(input("Enter the number of digit to be entered: "))
for i in range(0, n):
print("Type the ",i 1,'º number: ')
inter = int(input())
p.empilhar(inter)
print(p.final_result())
Это дает мне эту ошибку при result_even = sum(self.even): «Ошибка типа: неподдерживаемые типы операндов для : «int» и «метод»»
Пожалуйста, помогите.
Комментарии:
1.
self.even.append(self.top)
это добавление метода (self.top
) вself.even
. Вы хотели вызвать этот метод? (self.even.append(self.top())
.2. Да. Это работает! Большое вам спасибо!!!
3. Также обратите внимание , что если внутри
top
,self.void() == False
равно False,top
будет неявно возвращеноNone
значение , которое будет помещено вself.evens
, что вызовет аналогичную ошибку, как и раньше.