鱼C论坛

 找回密码
 立即注册
查看: 1497|回复: 4

[已解决]17讲课后习题十进制转二进制,有点不理解求解释一下

[复制链接]
发表于 2021-1-20 10:19:14 | 显示全部楼层 |阅读模式

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

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

x
print("十进制转二进制")
def tansl(x):
    list = []
    number = ""
    while x :
        y = x%2
        x= x//2
        list.append(y)
    while list:
        number += str(list.pop())
    return number
x = int(input("请输入一个正整数:"))
print(tansl(x))
假设x=10,求解释一下过程,特别是while list里面的,非常感谢
最佳答案
2021-1-20 10:55:30
while x:
第一次x=10
while 10:#为真
    y = 10%2 #y=0
    x = 10//2  #x=5
    list.append(y)  #list=[0]
第二次
while 5: #为真
    y = 5%2 #y=1
    x = 5//2  #x=2
    list.append(y)  #list=[0,1]
第三次
while 2: #为真
    y = 2%2 #y=0
    x = 2//2  #x=1
    list.append(y)  #list=[0,1,0]
第四次
while 1: #为真
    y = 1%2 #y=1
    x = 1//2  #x=0
    list.append(y)  #list=[0,1,0,1]
第五次
while 0: #为假while 中断
list=[0,1,0,1]

while list:
第一次:
while [0,1,0,1]: #为真
    number += str(list.pop()) #number = '1' list = [0,1,0]
第二次
while [0,1,0]: #为真
    number += str(list.pop()) #number = '10' list = [0,1]
第三次
while [0,1]: #为真
    number += str(list.pop()) #number = '101' list = [0]
第四次
while [0]: #为真
    number += str(list.pop()) #number = '1010' list = []
第五次
while []: #为假,中断
返回number #number = '1010'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-20 10:55:30 | 显示全部楼层    本楼为最佳答案   
while x:
第一次x=10
while 10:#为真
    y = 10%2 #y=0
    x = 10//2  #x=5
    list.append(y)  #list=[0]
第二次
while 5: #为真
    y = 5%2 #y=1
    x = 5//2  #x=2
    list.append(y)  #list=[0,1]
第三次
while 2: #为真
    y = 2%2 #y=0
    x = 2//2  #x=1
    list.append(y)  #list=[0,1,0]
第四次
while 1: #为真
    y = 1%2 #y=1
    x = 1//2  #x=0
    list.append(y)  #list=[0,1,0,1]
第五次
while 0: #为假while 中断
list=[0,1,0,1]

while list:
第一次:
while [0,1,0,1]: #为真
    number += str(list.pop()) #number = '1' list = [0,1,0]
第二次
while [0,1,0]: #为真
    number += str(list.pop()) #number = '10' list = [0,1]
第三次
while [0,1]: #为真
    number += str(list.pop()) #number = '101' list = [0]
第四次
while [0]: #为真
    number += str(list.pop()) #number = '1010' list = []
第五次
while []: #为假,中断
返回number #number = '1010'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-20 10:58:20 | 显示全部楼层
逃兵 发表于 2021-1-20 10:55
while x:
第一次x=10
while 10:#为真

感谢感谢,list.pop是从列表的最后一个开始删除的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-20 11:02:08 | 显示全部楼层
SomeThing9 发表于 2021-1-20 10:58
感谢感谢,list.pop是从列表的最后一个开始删除的吗

list.pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

括号里面是可选参数,不填的话默认为最后一位,list.pop(0)的话就是第一位了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-20 11:05:17 | 显示全部楼层
逃兵 发表于 2021-1-20 11:02
list.pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

括号里面是可 ...

好的谢谢大佬,非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 09:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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