栈的应用:十进制转换为二进制

栈的应用:十进制转换为二进制

1.内容

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2.练习

为了简洁明了,未做容错处理。

"""
Stack() 定义一个空栈
push(item) 添加一个元素
pop() 删除栈顶元素 返回元素
peek() "窥视"栈顶元素 不做修改
isEmpty() 返回是否是空栈
size() 返回栈大小
selectAll() 查看栈所有内容
"""


class Stack:
    def __init__(self):
        self.items = []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        return self.items[-1]

    def isEmpty(self):
        return self.items == []

    def size(self):
        return len(self.items)

    def selectAll(self):
        return self.items


if __name__ == '__main__':
    s = Stack()
    s.push(3)
    s.push('20')
    s.push([3, 5, 8])
    print(s)
    print(s.selectAll())
    print(s.size())
    print(s.peek())
    s.pop()
    print(s.pop())
    print(s.selectAll())
from pythonds.basic.Stack import Stack


def divideBy2(decNumber: int) -> str:
    stack = Stack()
    while decNumber:
        num = decNumber % 2
        stack.push(num)
        decNumber = decNumber // 2

    binString = ""
    while not stack.isEmpty():
        binString += str(stack.pop())

    return binString


def divideByAny(decNumber: int, base: int) -> str:
    digit = "0123456789ABCDEF"
    stack = Stack()
    while decNumber:
        num = decNumber % base
        stack.push(num)
        decNumber = decNumber // base

    String = ""
    while not stack.isEmpty():
        String += digit[stack.pop()]

    return String


if __name__ == '__main__':
    s = int(input("输入一个数:"))
    b = int(input("转换进制数(16进制及以下):"))
    print(divideBy2(s))
    print(divideByAny(s, b))

输入一个数:5201314
转换进制数(16进制及以下):8
10011110101110110100010
23656642

输入一个数:99
转换进制数(16进制及以下):7
1100011
201

输入一个数:250
转换进制数(16进制及以下):16
11111010
FA


版权声明:本文为weixin_45462577原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。