可以将10进制数据转换成2进制,8进制,16进制等。
晚上练练算法和数据结构哈。
# coding = utf-8
class Stack:
def __init__(self):
self.items = []
# 是否为空
def is_empty(self):
return self.items == []
# 进栈
def push(self, item):
self.items.append(item)
# 出栈
def pop(self):
return self.items.pop()
# 返回栈顶值,不改变栈
def peek(self):
return self.items[len(self.items) - 1]
# 返回栈长度
def size(self):
return len(self.items)
def base_converter(dec_num, base):
digits = '0123456789ABCDEF'
s = Stack()
while dec_num > 0:
# 取余
remainder_num = dec_num % base
# 进栈
s.push(remainder_num)
# 取整
dec_num = dec_num // base
base_str = ''
while not s.is_empty():
# 出栈并定位字符
base_str += digits[s.pop()]
return base_str
print(base_converter(317, 2))
print(base_converter(1098, 6))
print(base_converter(4327, 8))
print(base_converter(86730, 16))
输出:
C:\Users\Sahara\.virtualenvs\untitled\Scripts\python.exe D:/test/python_stack.py
100111101
5030
10347
152CA
Process finished with exit code 0