鱼C论坛

 找回密码
 立即注册
查看: 2255|回复: 2

python作业17讲

[复制链接]
发表于 2019-10-23 21:21:45 | 显示全部楼层 |阅读模式

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

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

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))
1.这段代码二进制,append 第一个数不应该是0然后是11111么,怎么把0挪到最后的。
2.代码的运行顺序是什么啊,temp为什么要用while判断一下呢,为什么不判断temp,为什么就运行不出来呢
比如把temp去掉
  result += str(temp.pop())这个退出第一个while循环,这样为什么错呢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-23 21:29:45 | 显示全部楼层
pop()函数默认从最后一位开始取出,temp里面最左侧的0是最后取出的。
不就是在判断temp吗?只要temp不为空,就继续执行while循环把temp里的值取出来,直到temp被全部取出跳出while循环返回result。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-24 11:32:28 | 显示全部楼层
1.
temp.append()作用是把括号内的结果作为元素加入到数列temp中,加入什么全看括号内这个quo计算出来的是什么,不存在第一个就是0后面是11111这种说法。
2.
代码运行顺序看不懂的话还是重新学习一下前面的内容吧。
用temp判断while循环这个问题也是,当while后面的条件为true时,会进入循环,否则就不进入循环直接跳过while。这里二进制除二取余的思想是除尽之后从后往前排列,如果不进行循环的话只会取一次数。当temp里面的数全部取出来后,temp为空则看作是条件false,while循环就结束了。
至于不加入temp的while报错。。。因为while循环要有判断循环能不能进行的条件,你不加入条件的话这个循环就没有意义了。
总之你问的这些都是很基本的内容,如果不懂的话建议重新学习一下或者找些题多打下代码吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-20 06:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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