1、题目
输入一个十进制数以及目标进制,输出它对应的目标进制的数。
2、方法
除k取余法
3、思路
由于取余的过程中涉及先进后出的特点,采用栈的结构储存余数,然后把栈中的余数依次pop出来即可。
注意在十进制以上的表示采用了字母‘ABCDEF’
4、代码
#栈的实现(使用列表)
class Stack:
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.item)
#定义函数,函数参数分别是待处理的数以及目标进制
def baseConverter(decNumber,base):
#可供选择的用来表示的字符
digits='0123456789ABCDEF'
#储存余数的栈
remstack=Stack()
#商不为零就进行操作
while decNumber>0:
#得到余数并压入栈中
rem=decNumber%base
remstack.push(rem)
#得到商
decNumber=decNumber//base
#余数的依次输出。注意: 10以上的数字要用字母代替
binString=""
while not remstack.isEmpty():
binString=binString+digits[remstack.pop()]
return binString
x=int(input("请输入待处理的数"))
y=int(input("请输入目标进制"))
print((baseConverter(x,y)))