鱼C论坛

 找回密码
 立即注册
查看: 2370|回复: 7

[已解决]请问while temp这一句是啥意思?

[复制链接]
发表于 2020-7-3 22:30:59 | 显示全部楼层 |阅读模式

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

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

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

while temp:
        result += str(temp.pop()) 这个看不懂,在这个里面temp不是一个列表吗?怎么循环? 和字符串相加。。。第一次救助。
最佳答案
2020-7-3 22:47:56
本帖最后由 Twilight6 于 2020-7-3 23:00 编辑




while temp:
        result += str(temp.pop()) 这个看不懂,在这个里面temp不是一个列表吗?怎么循环? 和字符串相加。。。第一次救助。


temp 确实是列表,while 是叫做叫做条件循环,而不是遍历循环,遍历循环是使用 for 循环才是循环列表中的元素

Python 中只要数值为 0、None、空列表、空字符串、空字典等条件都可以视为为布尔类型值的 False

只要非 0、非空字典、非空字符串、非空字典、非空列表等都可以视为布尔类型值的 True


所以你这里 while temp ,只要 temp 不为空列表,那么循环就会一直进行下去

而 temp 列表里面装的是你上一个循环过程中算出的余数,而 pop() 方法,就是将列表的最后一个数给拿出来

余数从temp列表拿出来是整型,不能和字符串进行 + 法拼接,所以要加上 str 转为字符串进行拼接

直到列表的元素全部被拿出来,列表为空,导致条件为False,不满足 while 循环条件 即退出循环






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

使用道具 举报

发表于 2020-7-3 22:43:33 | 显示全部楼层

回帖奖励 +3 鱼币

就是判断temp是不是一个空列表,如果是空列表的话就不进入while循环,如果不是的话,就一直进行循环,把temp里面的元素从后往前的顺序给result
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-3 22:47:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-7-3 23:00 编辑




while temp:
        result += str(temp.pop()) 这个看不懂,在这个里面temp不是一个列表吗?怎么循环? 和字符串相加。。。第一次救助。


temp 确实是列表,while 是叫做叫做条件循环,而不是遍历循环,遍历循环是使用 for 循环才是循环列表中的元素

Python 中只要数值为 0、None、空列表、空字符串、空字典等条件都可以视为为布尔类型值的 False

只要非 0、非空字典、非空字符串、非空字典、非空列表等都可以视为布尔类型值的 True


所以你这里 while temp ,只要 temp 不为空列表,那么循环就会一直进行下去

而 temp 列表里面装的是你上一个循环过程中算出的余数,而 pop() 方法,就是将列表的最后一个数给拿出来

余数从temp列表拿出来是整型,不能和字符串进行 + 法拼接,所以要加上 str 转为字符串进行拼接

直到列表的元素全部被拿出来,列表为空,导致条件为False,不满足 while 循环条件 即退出循环






想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-7-4 09:20:02 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-7-3 22:43
就是判断temp是不是一个空列表,如果是空列表的话就不进入while循环,如果不是的话,就一直进行循环,把tem ...

小改改好活跃哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-4 09:23:09 | 显示全部楼层

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

使用道具 举报

发表于 2021-8-2 20:40:45 | 显示全部楼层
Twilight6 发表于 2020-7-3 22:47
temp 确实是列表,while 是叫做叫做条件循环,而不是遍历循环,遍历循环是使用 for 循环才是循环 ...

这里并没有定义temp=temp.pop(),只定义了result,怎么就能关联上呢?求助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-2 20:49:11 | 显示全部楼层
鱼尾纹888 发表于 2021-8-2 20:40
这里并没有定义temp=temp.pop(),只定义了result,怎么就能关联上呢?求助


看看这行代码:

result += str(temp.pop())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-2 21:18:23 | 显示全部楼层
Twilight6 发表于 2021-8-2 20:49
看看这行代码:

result += str(temp.pop())

试验了一下,理解了,temp.pop()就能返回一个少最后一个元素的新temp,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-6 18:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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