鱼C论坛

 找回密码
 立即注册
查看: 2420|回复: 7

[已解决]编写一个将十进制转换为二进制的函数,要求采用“除2取余”的方式,结...

[复制链接]
发表于 2022-10-4 22:41:22 | 显示全部楼层 |阅读模式

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

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

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


真的太难了  大神能不能给我个详细注释啊。。。。。我真的太笨了。。。。
最佳答案
2022-10-4 22:57:20
本帖最后由 jackz007 于 2022-10-4 23:27 编辑
def Dec2Bin(dec):
    r = ''                    # 需要循环累加得到结果,最终结果是字符串,所以,先把 r 初始化为空串
    while dec:                # 只要 dec 不为 0 就开始(或继续)循环
        r = str(dec % 2) + r  # 把 dec 除以 2 的余数转换为字符累加到 r 的开头  
        dec //= 2             # dec = dec // 2 (地板除)
    return r                  # 反馈字符串 r
print(Dec2Bin(512))
        至于十进制转二进制数的原理,为了形象直观,可以参考下面十进制转十进制代码的运行结果
def Dec2Dec(dec):
    c , r = 0 , ''
    while dec:
        print('第 %d 次循环:dec = %4d' % ((c + 1) , dec) , end = '')
        r = str(dec % 10) + r
        print('    dec %% 10 = %d , dec // 10 = %3d    r = %s' % ((dec % 10) , (dec // 10) , r))
        dec //= 10
        c += 1
    return r

print(Dec2Dec(3578))
       两个代码的计算方法完全对等,不同之处只是在于这个代码是 10 进制到十进制的转换,运行结果反映了转换原理
       下面是运行结果:
D:\[00.Exerciese.2022]\Python>python x.py
第 1 次循环:dec = 3578    dec % 10 = 8 , dec // 10 = 357    r = 8
第 2 次循环:dec =  357    dec % 10 = 7 , dec // 10 =  35    r = 78
第 3 次循环:dec =   35    dec % 10 = 5 , dec // 10 =   3    r = 578
第 4 次循环:dec =    3    dec % 10 = 3 , dec // 10 =   0    r = 3578
3578

D:\[00.Exerciese.2022]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-4 22:57:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-10-4 23:27 编辑
def Dec2Bin(dec):
    r = ''                    # 需要循环累加得到结果,最终结果是字符串,所以,先把 r 初始化为空串
    while dec:                # 只要 dec 不为 0 就开始(或继续)循环
        r = str(dec % 2) + r  # 把 dec 除以 2 的余数转换为字符累加到 r 的开头  
        dec //= 2             # dec = dec // 2 (地板除)
    return r                  # 反馈字符串 r
print(Dec2Bin(512))
        至于十进制转二进制数的原理,为了形象直观,可以参考下面十进制转十进制代码的运行结果
def Dec2Dec(dec):
    c , r = 0 , ''
    while dec:
        print('第 %d 次循环:dec = %4d' % ((c + 1) , dec) , end = '')
        r = str(dec % 10) + r
        print('    dec %% 10 = %d , dec // 10 = %3d    r = %s' % ((dec % 10) , (dec // 10) , r))
        dec //= 10
        c += 1
    return r

print(Dec2Dec(3578))
       两个代码的计算方法完全对等,不同之处只是在于这个代码是 10 进制到十进制的转换,运行结果反映了转换原理
       下面是运行结果:
D:\[00.Exerciese.2022]\Python>python x.py
第 1 次循环:dec = 3578    dec % 10 = 8 , dec // 10 = 357    r = 8
第 2 次循环:dec =  357    dec % 10 = 7 , dec // 10 =  35    r = 78
第 3 次循环:dec =   35    dec % 10 = 5 , dec // 10 =   3    r = 578
第 4 次循环:dec =    3    dec % 10 = 3 , dec // 10 =   0    r = 3578
3578

D:\[00.Exerciese.2022]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-4 23:20:14 | 显示全部楼层
2022104_231857.png
看图,思路多清晰,你只要把这图的思路转换成代码,在简单不过了吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-5 21:07:53 | 显示全部楼层
jackz007 发表于 2022-10-4 22:57
至于十进制转二进制数的原理,为了形象直观,可以参考下面十进制转十进制代码的运行结果

     ...

r 的空串默认数值就是0吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-5 21:22:42 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-5 21:23 编辑
fjsboy 发表于 2022-10-5 21:07
r 的空串默认数值就是0吗??


       字符串就是字符串,和整型数是两个完全不同东西,二者没有任何关系。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-5 21:56:00 | 显示全部楼层
jackz007 发表于 2022-10-5 21:22
字符串就是字符串,和整型数是两个完全不同东西,二者没有任何关系。

在请问下  while temp:  当temp =[0]的时候  还会循环下去吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-5 22:11:45 | 显示全部楼层
fjsboy 发表于 2022-10-5 21:56
在请问下  while temp:  当temp =[0]的时候  还会循环下去吗

       试一下就知道了
temp = [0]
if temp:
    print('Bingo !')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-10-5 22:40:06 | 显示全部楼层

谢谢 谢谢  懂了 懂了   真的太难了  还是自己基础知识把握的不好。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 22:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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