|
|
发表于 2020-8-6 07:26:01
|
显示全部楼层
本帖最后由 Twilight6 于 2020-8-6 07:32 编辑
因为求二取余法,是从最后的余数倒回去往前排序才是最终的二进制结果,但是你第一个循环都是按顺序直接加入列表,所以需要用 pop() 弹出列表中的最后一个元素
pop() 函数当你的函数中没有填写参数时候,默认弹出列表中的最后一个元素,此时将弹出的数字转化为字符串,最后拼接在字符串上返回的二进制最终结果
可以,如果你用 reverse ,那么你 pop() 就需要改成 pop(0) ,或者不用 while temp 循环,reverse 完列表后,用 for 循环列表,或者还有个办法就直接 ''.join(temp)拼接在一起
用 reverse 后 pop 方法代码:
- def Dec2Bin(dec):
- temp = []
- result = ''
- while dec:
- quo = dec % 2
- dec = dec // 2
- temp.append(quo)
- temp.reverse()
- while temp:
- result += str(temp.pop(0))
- return result
- print(Dec2Bin(62))
复制代码
reverse 后 for 循环列表方法:
- def Dec2Bin(dec):
- temp = []
- result = ''
- while dec:
- quo = dec % 2
- dec = dec // 2
- temp.append(quo)
- temp.reverse()
- for i in temp:
- result += str(i)
- return result
- print(Dec2Bin(62))
复制代码
用 reverse 后 join 方法代码:
- def Dec2Bin(dec):
- temp = []
- while dec:
- quo = dec % 2
- dec = dec // 2
- temp.append(str(quo)) # 因为 join 拼接的是字符串,所以要将与余数转化为整型
- temp.reverse()
- result = ''.join(temp)
- return result
- print(Dec2Bin(62))
复制代码
还有开头处 , result=‘ ’ 这个动作是做什么, 有点 跟不上思路了。
这个是初始化一个字符串空,为了后续做准备,也就是第二个 while 循环中可以去拼接
如果你上面用 join 就可以不用这个初始化,直接 join 后赋值即可
|
评分
-
查看全部评分
|