猫史档案馆


【Python作品分享】进制转换v2.1【求助帖】

用户:盒子的box盒子的box查看:13 回复:3 评论:13 创建时间:2020-03-18T13:22:42


【作品展示】

center_image

 

【作品介绍】

BUGBUG!

谁来帮帮我!

奖励300源码币!

要求:

效果和https://shequ.codemao.cn/community/256254上的差不多。

 

【作品源代码】

t1 = ('A', 'B', 'C', 'D', 'E', 'F')
t2 = ('10', '11', '12', '13', '14', '15')

def out():
    global num
    for i in num:
        if (i in t2):
            j = list(t2)
            num[j.index(i)] = t1[j.index(i)]
    print('结果是', ''.join(num))


while True:
    try:
        a = 0
        b = 0
        num = list(input('初始值是多少?'))
        for i in num:
            if (i in t1):
                j = list(t1)
                num[j.index(i)] = t2[j.index(i)]
        jz = int(input('此值为几进制?'))
        tjz = int(input('转换为几进制?'))
        if (jz == tjz):
            out()
        else:
            for i in range(len(num)):
                a += (int(num[b]) * (jz ** (len(num) - b - 1)))
                b += 1
            num = [str(a % tjz)]
            a = a // tjz
            while (a != 0):
                num = [str(a % tjz)] + num
                a = a // tjz
            out()
    except:
        print('程序出错了emmm......')

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
wrmdcxywrmdcxy

如果是想修复Bug,这样肯定不行

如果我遇到了Bug,我会把try...except语句注释,然后再做一次,看一下是什么错误。如果只打印“程序出错了emmm......”是不知道错在哪的

点赞0


评论


wrmdcxywrmdcxy

我正在测试你的代码。。。。

Error1:

IndexError: list assignment index out of range

含义:列表出超出范围的赋值索引

分析:num只有2项,而j.index(i)返回的是5,所以报错

解决:需要设置在相应的索引去更改内容

点赞0


评论


wrmdcxywrmdcxy

调试完成。

t1 = ('A', 'B', 'C', 'D', 'E', 'F')
t2 = ('10', '11', '12', '13', '14', '15')

def out():
    global num
    for i in num:
        if (i in t2):
            j = list(t2)
            num[j.index(i)] = t1[j.index(i)]
    print('结果是', ''.join(num))


while True:
    try:
        a = 0
        b = 0
        num = list(input('初始值是多少?'))
        #出错位置:从此//
        index=0#项数
        for i in num:
            if (i in t1):
                j = list(t1)
                num[index] = t2[j.index(i)]
            index+=1#迭代计算正确的项数
        #至此//
        jz = int(input('此值为几进制?'))
        tjz = int(input('转换为几进制?'))
        if (jz == tjz):
            out()
        else:
            for i in range(len(num)):
                a += (int(num[b]) * (jz ** (len(num) - b - 1)))
                b += 1
            num = [str(a % tjz)]
            a = a // tjz
            while (a != 0):
                num = [str(a % tjz)] + num
                a = a // tjz
            out()
    except Exception as e:#便于调试
        print('程序出错了emm......\n(Error:%s\ndescribe:%s'%(str(e),str(repr(e))))

点赞0


评论