鱼C论坛

 找回密码
 立即注册
查看: 3113|回复: 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 编辑
  1. def Dec2Bin(dec):
  2.     r = ''                    # 需要循环累加得到结果,最终结果是字符串,所以,先把 r 初始化为空串
  3.     while dec:                # 只要 dec 不为 0 就开始(或继续)循环
  4.         r = str(dec % 2) + r  # 把 dec 除以 2 的余数转换为字符累加到 r 的开头  
  5.         dec //= 2             # dec = dec // 2 (地板除)
  6.     return r                  # 反馈字符串 r
  7. print(Dec2Bin(512))
复制代码

        至于十进制转二进制数的原理,为了形象直观,可以参考下面十进制转十进制代码的运行结果
  1. def Dec2Dec(dec):
  2.     c , r = 0 , ''
  3.     while dec:
  4.         print('第 %d 次循环:dec = %4d' % ((c + 1) , dec) , end = '')
  5.         r = str(dec % 10) + r
  6.         print('    dec %% 10 = %d , dec // 10 = %3d    r = %s' % ((dec % 10) , (dec // 10) , r))
  7.         dec //= 10
  8.         c += 1
  9.     return r

  10. print(Dec2Dec(3578))
复制代码

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

  7. D:\[00.Exerciese.2022]\Python>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-4 22:57:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-10-4 23:27 编辑
  1. def Dec2Bin(dec):
  2.     r = ''                    # 需要循环累加得到结果,最终结果是字符串,所以,先把 r 初始化为空串
  3.     while dec:                # 只要 dec 不为 0 就开始(或继续)循环
  4.         r = str(dec % 2) + r  # 把 dec 除以 2 的余数转换为字符累加到 r 的开头  
  5.         dec //= 2             # dec = dec // 2 (地板除)
  6.     return r                  # 反馈字符串 r
  7. print(Dec2Bin(512))
复制代码

        至于十进制转二进制数的原理,为了形象直观,可以参考下面十进制转十进制代码的运行结果
  1. def Dec2Dec(dec):
  2.     c , r = 0 , ''
  3.     while dec:
  4.         print('第 %d 次循环:dec = %4d' % ((c + 1) , dec) , end = '')
  5.         r = str(dec % 10) + r
  6.         print('    dec %% 10 = %d , dec // 10 = %3d    r = %s' % ((dec % 10) , (dec // 10) , r))
  7.         dec //= 10
  8.         c += 1
  9.     return r

  10. print(Dec2Dec(3578))
复制代码

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

  7. D:\[00.Exerciese.2022]\Python>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

     ...

r 的空串默认数值就是0吗??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


       字符串就是字符串,和整型数是两个完全不同东西,二者没有任何关系。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

在请问下  while temp:  当temp =[0]的时候  还会循环下去吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

       试一下就知道了
  1. temp = [0]
  2. if temp:
  3.     print('Bingo !')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

谢谢 谢谢  懂了 懂了   真的太难了  还是自己基础知识把握的不好。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-24 20:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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