tili 发表于 2018-5-13 10:43:24

编写一个将十进制转换为二进制的函数,采用‘除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))


看不懂这个程序,求个大神解释一下

ba21 发表于 2018-5-13 10:58:13

第1轮
# 62 % 2 = 0
# 62 // 2 = 31
# temp =

第2轮
# 31 % 2 = 1
# 31 // 2 = 15
# temp =

第3轮
# 15 % 2 = 1
# 15 // 2 = 7
# temp =

第4轮
# 7 % 2 = 1
# 7 // 2 = 3
# temp =

第5轮
# 3 % 2 = 1
# 3 // 2 = 1
# temp =

第6轮
# 1 % 2 = 1
# 1 // 2 = 0
# temp =

while dec== while 0 退出循环

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

最后 str = '111110'

tili 发表于 2018-5-13 11:19:22

ba21 发表于 2018-5-13 10:58
第1轮
# 62 % 2 = 0
# 62 // 2 = 31


想问一下第二个循环   到最后一个0的时候不就停了吗怎么还能继续呢

夜雨声烦12138 发表于 2018-6-28 19:30:23

ba21 发表于 2018-5-13 10:58
第1轮
# 62 % 2 = 0
# 62 // 2 = 31


我想问下最后在while temp: 时,temp里不是有0嘛,怎么没跳出循环

ba21 发表于 2018-6-28 20:42:03

夜雨声烦12138 发表于 2018-6-28 19:30
我想问下最后在while temp: 时,temp里不是有0嘛,怎么没跳出循环

你人脑模拟电脑走下流程看看

夜雨声烦12138 发表于 2018-6-28 20:48:42

ba21 发表于 2018-6-28 20:42
你人脑模拟电脑走下流程看看

就是没整明白 temp里第一个就是0 怎么还是执行了while里面的句子

ba21 发表于 2018-6-28 21:05:20

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

我只能说你有没有认真看啊。temp是列表。列表只有在为空的时候才为假。{:10_247:}

夜雨声烦12138 发表于 2018-6-28 21:27:31

ba21 发表于 2018-6-28 21:05
我只能说你有没有认真看啊。temp是列表。列表只有在为空的时候才为假。

哦!十分感谢亲的解答!看来还是基础没打牢,闹笑话了

zhuzhuvswho 发表于 2019-9-12 15:34:41

作为一个零基础玩家真的是艰难的理解了一下这个代码:
首先将dec用底板除除以2,得到值quo继续底板除除以2,然后每一步的余数dec形成一个数值传入tepm这个列表,用的是append这个函数,每个dec值加到列表最后,直到值为0,循环跳出。形成最终的tepm列表。然后用pop函数把temp列表里的值弹出来,弹出的过程格式化成字符串,用的是str函数,然后再用+把所有弹出的字符串连接起来,形成最后的字符。
不知道这么解释你能不能理解,纯属零基础玩家的描述。
页: [1]
查看完整版本: 编写一个将十进制转换为二进制的函数,采用‘除2取余’的方式,结果与调用bin()一...