N95 发表于 2020-2-12 10:43:04

小小问题之列表

编写一个将十进制转换为二进制的函数,要求采用“除2取余”的方式,结果与调用 bin() 一样返回字符串形式


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



temp中的元素用append方法增加时应该是放在上一个元素之后哒,那打印temp时也应该按顺序打印啊,可按顺序打印就和bin()方法刚好相反,什么时候反过来了???

冬雪雪冬 发表于 2020-2-12 10:46:36

在这步反过来的
    while temp:
      result += str(temp.pop()

N95 发表于 2020-2-12 10:48:31

冬雪雪冬 发表于 2020-2-12 10:46
在这步反过来的
    while temp:
      result += str(temp.pop()

弱弱的问下在函数里面是上一个while结束了再执行第二个while吗?

冬雪雪冬 发表于 2020-2-12 10:50:29

N95 发表于 2020-2-12 10:48
弱弱的问下在函数里面是上一个while结束了再执行第二个while吗?

是的

N95 发表于 2020-2-12 10:52:36

冬雪雪冬 发表于 2020-2-12 10:50
是的

那这步while temp:
      result += str(temp.pop())
是怎么把他反过来的呢??也没用reverse呀

冬雪雪冬 发表于 2020-2-12 10:56:47

pop弹出最后一个,把它加到result的前面,不如temp是
先pop出1,result变成1
再pop出2,result变成12
。。。。。。

_2_ 发表于 2020-2-12 11:16:17

本帖最后由 _2_ 于 2020-2-12 11:17 编辑

冬雪雪冬 发表于 2020-2-12 10:56
pop弹出最后一个,把它加到result的前面,不如temp是
先pop出1,result变成1
再pop出2,result ...

补充一点,
经过实测,list.pop() 方法是从列表末尾开始弹出元素的(不指定参数的情况下):
>>> list1 = #列表中的元素与下标相等,方便演示
>>> list1.pop()#list1[-1]
9
>>>

定义如下:
list.pop(self,index=-1,/)
页: [1]
查看完整版本: 小小问题之列表