鱼C论坛

 找回密码
 立即注册
查看: 3563|回复: 5

[已解决]Python 课 课后作业第17讲, 卡住了

[复制链接]
发表于 2020-8-6 07:26:01 | 显示全部楼层
本帖最后由 Twilight6 于 2020-8-6 07:32 编辑




但是 第二个循环体里 是在做什么就表示没看懂


因为求二取余法,是从最后的余数倒回去往前排序才是最终的二进制结果,但是你第一个循环都是按顺序直接加入列表,所以需要用 pop() 弹出列表中的最后一个元素

pop() 函数当你的函数中没有填写参数时候,默认弹出列表中的最后一个元素,此时将弹出的数字转化为字符串,最后拼接在字符串上返回的二进制最终结果


这里 我用 reverse   不可以吗?


可以,如果你用 reverse ,那么你 pop() 就需要改成 pop(0) ,或者不用 while temp 循环,reverse 完列表后,用 for 循环列表,或者还有个办法就直接 ''.join(temp)拼接在一起

用 reverse 后 pop 方法代码:
  1. def Dec2Bin(dec):
  2.     temp = []
  3.     result = ''

  4.     while dec:
  5.         quo = dec % 2
  6.         dec = dec // 2
  7.         temp.append(quo)
  8.     temp.reverse()
  9.     while temp:
  10.         result += str(temp.pop(0))

  11.     return result

  12. print(Dec2Bin(62))
复制代码



reverse 后 for 循环列表方法:
  1. def Dec2Bin(dec):
  2.     temp = []
  3.     result = ''

  4.     while dec:
  5.         quo = dec % 2
  6.         dec = dec // 2
  7.         temp.append(quo)
  8.     temp.reverse()
  9.     for i in temp:
  10.         result += str(i)

  11.     return result

  12. print(Dec2Bin(62))
复制代码



用 reverse 后 join 方法代码:

  1. def Dec2Bin(dec):
  2.     temp = []

  3.     while dec:
  4.         quo = dec % 2
  5.         dec = dec // 2
  6.         temp.append(str(quo))   # 因为 join 拼接的是字符串,所以要将与余数转化为整型

  7.     temp.reverse()
  8.     result = ''.join(temp)

  9.     return result

  10. print(Dec2Bin(62))
复制代码



还有开头处 , result=‘ ’ 这个动作是做什么,  有点 跟不上思路了。      


这个是初始化一个字符串空,为了后续做准备,也就是第二个 while 循环中可以去拼接

如果你上面用 join 就可以不用这个初始化,直接 join 后赋值即可



评分

参与人数 1荣誉 +5 鱼币 +1 贡献 +3 收起 理由
fazerse + 5 + 1 + 3 最佳答案属于你,谢谢帮我把reverse做法补.

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-1 11:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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