鱼C论坛

 找回密码
 立即注册
查看: 8036|回复: 8

[已解决]编写一个将十进制转换为二进制的函数,采用‘除2取余’的方式,结果与调用bin()一...

[复制链接]
发表于 2018-5-13 10:43:24 | 显示全部楼层 |阅读模式

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

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

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


看不懂这个程序,求个大神解释一下
最佳答案
2018-5-13 10:58:13
第1轮
# 62 % 2 = 0
# 62 // 2 = 31
# temp = [0]

第2轮
# 31 % 2 = 1
# 31 // 2 = 15
# temp = [0, 1]

第3轮
# 15 % 2 = 1
# 15 // 2 = 7
# temp = [0, 1, 1]

第4轮
# 7 % 2 = 1
# 7 // 2 = 3
# temp = [0, 1, 1, 1]

第5轮
# 3 % 2 = 1
# 3 // 2 = 1
# temp = [0, 1, 1, 1, 1]

第6轮
# 1 % 2 = 1
# 1 // 2 = 0
# temp = [0, 1, 1, 1, 1, 1]

while dec  == while 0 退出循环

temp = [0, 1, 1, 1, 1, 1]
while temp:
  result += str(temp.pop())  #最后面一个一个弹出,组成字符串

最后 str = '111110'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-13 10:58:13 | 显示全部楼层    本楼为最佳答案   
第1轮
# 62 % 2 = 0
# 62 // 2 = 31
# temp = [0]

第2轮
# 31 % 2 = 1
# 31 // 2 = 15
# temp = [0, 1]

第3轮
# 15 % 2 = 1
# 15 // 2 = 7
# temp = [0, 1, 1]

第4轮
# 7 % 2 = 1
# 7 // 2 = 3
# temp = [0, 1, 1, 1]

第5轮
# 3 % 2 = 1
# 3 // 2 = 1
# temp = [0, 1, 1, 1, 1]

第6轮
# 1 % 2 = 1
# 1 // 2 = 0
# temp = [0, 1, 1, 1, 1, 1]

while dec  == while 0 退出循环

temp = [0, 1, 1, 1, 1, 1]
while temp:
  result += str(temp.pop())  #最后面一个一个弹出,组成字符串

最后 str = '111110'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-13 11:19:22 | 显示全部楼层
ba21 发表于 2018-5-13 10:58
第1轮
# 62 % 2 = 0
# 62 // 2 = 31

想问一下第二个循环   到最后一个0的时候不就停了吗  怎么还能继续呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-28 19:30:23 | 显示全部楼层
ba21 发表于 2018-5-13 10:58
第1轮
# 62 % 2 = 0
# 62 // 2 = 31

我想问下最后在  while temp: 时,temp里不是有0嘛,怎么没跳出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-28 20:42:03 | 显示全部楼层
夜雨声烦12138 发表于 2018-6-28 19:30
我想问下最后在  while temp: 时,temp里不是有0嘛,怎么没跳出循环

你人脑模拟电脑走下流程看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-28 20:48:42 | 显示全部楼层
ba21 发表于 2018-6-28 20:42
你人脑模拟电脑走下流程看看

就是没整明白 temp里第一个就是0 怎么还是执行了while里面的句子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-28 21:05:20 | 显示全部楼层
夜雨声烦12138 发表于 2018-6-28 20:48
就是没整明白 temp里第一个就是0 怎么还是执行了while里面的句子

我只能说你有没有认真看啊。temp是列表。列表只有在为空的时候才为假。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-28 21:27:31 | 显示全部楼层
ba21 发表于 2018-6-28 21:05
我只能说你有没有认真看啊。temp是列表。列表只有在为空的时候才为假。

哦!十分感谢亲的解答!看来还是基础没打牢,闹笑话了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-12 15:34:41 | 显示全部楼层
作为一个零基础玩家真的是艰难的理解了一下这个代码:
首先将dec用底板除除以2,得到值quo继续底板除除以2,然后每一步的余数dec形成一个数值传入tepm这个列表,用的是append这个函数,每个dec值加到列表最后,直到值为0,循环跳出。形成最终的tepm列表。然后用pop函数把temp列表里的值弹出来,弹出的过程格式化成字符串,用的是str函数,然后再用+把所有弹出的字符串连接起来,形成最后的字符。
不知道这么解释你能不能理解,纯属零基础玩家的描述。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 17:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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