Почему мой код python для преобразования числа в двоичное с использованием стека не работает? - PullRequest
0 голосов
/ 31 марта 2020

Ниже приведен мой код для преобразования числа в двоичное с использованием стеков, записанных в Python3. Всякий раз, когда я запускаю его, None выводится в качестве вывода. Что может быть причиной этого? Заранее спасибо.

class Stack():
    def __init__(self):
        self.stack = []
        self.top = -1

def push(self, val):
    self.stack.append(val)
    self.top += 1

def pop(self):
    if self.top == -1:
        print('Underflow')
    else:
        del self.stack[self.top]
        self.top -= 1

def empty(self):
    return self.stack == []

def peek(self):
    return self.top

def display(self):
    return self.stack

def binary(n):
    b = Stack()
    while n > 0:
        r = n%2
        b.push(r)
        n = n//2

    bn = ''
    while not b.empty():
        bn += str(b.pop())

    return bn

print(binary(242))

1 Ответ

0 голосов
/ 31 марта 2020

Эта строка просто извлекает элементы из стека и ничего не возвращает. Возвращает None.

bn += str(b.pop()) 

Вы должны сохранить верхний элемент в переменной, а затем вытолкнуть стек после него.

Попробуйте это ниже в вашей двоичной функции:

def binary(n):
    b = Stack()
    while n > 0:
        r = n % 2
        b.push(r)
        n = n//2
    print(b.stack)
    bn = ''
    while not b.empty():
        bn += str(b.stack[-1])
        b.pop()
    return bn
...