思路分析:进制转换问题我们一般会想到除进制位数进行取余的办法,例如十进制转二进制,用数字除以2每步进行取余,取余后的结果反过来就是我们需要的答案,一般可以转换成字符串进行反转,也可以利用栈的后进先出结构进行操作,这里我们选用后面这种方法进行实现,代码如下:
class Stack(object):
def __init__(self):
self.__items = []
def isEmpty(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)
十进制转二进制:
import stack
def convertBinary(num):
"""十进制转二进制"""
s = stack.Stack()
while num > 0:
remainder = num % 2
s.push(remainder)
num //= 2
binaryNum = ''
while s.size():
binaryNum += str(s.pop())
print(binaryNum)
十进制转任意进制:
import stack
def convert(num, scale):
"""十进制转任意进制"""
s = stack.Stack()
while num > 0:
remainder = num % scale # 除数取余
s.push(remainder) # 余数进栈
num //= scale
scaleNum = ''
while s.size():
scaleNum += str(s.pop())
print(scaleNum)