PKU数据结构与算法Python版--习题总结(4)--十进制转换为十六以下进制

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)))


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值