鱼C论坛

 找回密码
 立即注册
查看: 2303|回复: 4

[已解决]17课动手作业2的问题

[复制链接]
发表于 2020-11-9 20:25:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
编写一个将十进制转换为二进制的函数,要求采用“除2取余”(补脑链接)的方式,结果与调用 bin() 一样返回字符串形式。

def Dec2Bin(dec):
    temp = []
    result = ''

    while dec:
        quo = dec % 2
        dec = dec // 2
        temp.append(quo)

    while temp:
        result += str(temp.pop())

    return result

print(Dec2Bin(62))

对小甲鱼老师的这段代码比较懵,望关爱小白的大神帮忙梳理下思路,感谢~
最佳答案
2020-11-9 20:32:03
def Dec2Bin(dec):
    temp = []            #2. 不解释
    result = ''            #3. 不解释

    while dec:            #4.如果dec不等于0,则进入循环(while 条件,当条件结果为真或非0值则进入循环)
        quo = dec % 2     #5.把dec除以2的余数赋值给quo
        dec = dec // 2     #6.把dec除以2的结果的整数部分赋值给dec
        temp.append(quo)  #7.把quo加入列表temp

    while temp:          #8.循环解释同上
        result += str(temp.pop())   #9.等价于result=result+str(temp.pop()),也就是把result加temp列表的最后一个值的字符串类型相加的结果赋值给result,同时列表temp在取出最后一个值时会把它删除(列表pop方法的特性)

    return result  #10.把result返回

print(Dec2Bin(62))  #1.把62作为参数传入并调用Dec2Bin()函数,再用print()函数打印返回值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-9 20:32:03 | 显示全部楼层    本楼为最佳答案   
def Dec2Bin(dec):
    temp = []            #2. 不解释
    result = ''            #3. 不解释

    while dec:            #4.如果dec不等于0,则进入循环(while 条件,当条件结果为真或非0值则进入循环)
        quo = dec % 2     #5.把dec除以2的余数赋值给quo
        dec = dec // 2     #6.把dec除以2的结果的整数部分赋值给dec
        temp.append(quo)  #7.把quo加入列表temp

    while temp:          #8.循环解释同上
        result += str(temp.pop())   #9.等价于result=result+str(temp.pop()),也就是把result加temp列表的最后一个值的字符串类型相加的结果赋值给result,同时列表temp在取出最后一个值时会把它删除(列表pop方法的特性)

    return result  #10.把result返回

print(Dec2Bin(62))  #1.把62作为参数传入并调用Dec2Bin()函数,再用print()函数打印返回值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-9 20:34:47 | 显示全部楼层
def Dec2Bin(dec):
    result = ''
    if dec:
        result = Dec2Bin(dec // 2) #每取余得到二进制的一位,递归的参数就地板除二,直到dec为0为止,说明各位已取完
        return result + str(dec % 2) #取余2得到的余数为二进制各位的倒序,依次以字符串的形式拼接在一起,相当于正序
    else:
        return result #返回正序二进制字符串
print(Dec2Bin(62))#打印出返回值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-10 12:00:18 | 显示全部楼层

2位前辈的解答都对我很有帮助,感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-10 12:02:24 | 显示全部楼层

2位前辈的解答都对我很有帮助,感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 17:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表