栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

自定义函数计算十进制整数d对应的三进制表示#def转换三进制

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自定义函数计算十进制整数d对应的三进制表示#def转换三进制

在 Begin-End 区间实现DecToTer_int(d)函数,其功能是计算十进制整数 d 对应的三进制表示,说明如下:
  1)d 可能为正数、0 和负数;
  2)不准使用 Python 提供的进制转换函数;
  

 问题代码:
########## Begin ##########
def f (d):
    if d==1:
        return '1'
    else:
        return f(d//3)+str(d%3)
def DecToTer_int(d):
    if d==0:
        return '0'
    if d>0:
        return f(d)
    if d<0:
        return '-'+f(d)
########## End ##########
d = int(input())     #十进制整数
t = DecToTer_int(d)  #转换成三进制
print('%s -> %s' % (d, t))

 问题代码分析:

-272 -> -101002

Traceback (most recent call last): File "src/step1/student1.py", line 16, in t = DecToTer_int(d) #转换成三进制 File "src/step1/student1.py", line 13, in DecToTer_int return '-'+f(d) File "src/step1/student1.py", line 6, in f return f(d//3)+str(d%3) File "src/step1/student1.py", line 6, in f return f(d//3)+str(d%3) File "src/step1/student1.py", line 6, in f return f(d//3)+str(d%3) [Previous line repeated 993 more times] File "src/step1/student1.py", line 3, in f if d==1: RecursionError: maximum recursion depth exceeded in comparison

 这个是错误代码的运行结果,代码在当d为正数,为0时都能得到正确的答案,但是当在负数时,就出现了上面的报错,出错可能是由于:

  • 公式写错了,导致运算不对
  • 循环可能有问题

在写这篇文的时候又测试了,显示通过了,有点懵!!!


这是我在出现报错后修改的,还有别的方式,但我更喜欢递归。
########## Begin ##########
def f(d):
    if d==1:
        return '1'
    if d>0:
        return f(d//3)+str(d%3) 
def DecToTer_int(d):
    if d==0:
        return '0'  
    if d>0:
        return f(d)
    if d<0:
        d=-d
        return '-' + f(d)  
########## End ##########
d = int(input())     #十进制整数
t = DecToTer_int(d)  #转换成三进制
print('%s -> %s' % (d, t))

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/829584.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号