zhongyuanadler 发表于 2020-4-3 14:54:16

第17讲十进制转二进制

小甲鱼老师的算法是: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))我自己写的是:
def transfer10to2(num1):
    list1 = []
    while num1!=0:
      num2 = num1 % 2
      num1 = num1 // 2
      list1.append(num2)
    list1.reverse()
    for i in list1:
      print(i,end='')

transfer10to2(10)
pop很妙啊,但是我感觉我这个比较精炼。{:10_256:},欧几里得算法想了半天。 {:10_306:}




zhongyuanadler 发表于 2020-4-3 15:18:20

求商和求余 太妙了,在思考欧几里得算法时,还考虑了比较两个数字的大小,完全绕进去了,其实没必要

qiuyouzhi 发表于 2020-4-3 15:25:02

zhongyuanadler 发表于 2020-4-3 15:18
求商和求余 太妙了,在思考欧几里得算法时,还考虑了比较两个数字的大小,完全绕进去了,其实没必要

还可以精炼一些:
def transfer10to2(num1):
    list1 = []
    while num1:
      num2 = num1 % 2
      num1 //= 2
      list1.append(str(num2))
    print(''.join(list1[::-1]))

transfer10to2(10)

zhongyuanadler 发表于 2020-4-3 15:32:32

qiuyouzhi 发表于 2020-4-3 15:25
还可以精炼一些:

妙!    .join() 我刚查到了 用法 ,list1[::-1] 这个字段可以解释下吗?谢谢了

qiuyouzhi 发表于 2020-4-3 15:33:35

zhongyuanadler 发表于 2020-4-3 15:32
妙!    .join() 我刚查到了 用法 ,list1[::-1] 这个字段可以解释下吗?谢谢了

列表切片,你学到列表之后就会学到
而且切片比reverse快(小代码不用考虑效率)

zhongyuanadler 发表于 2020-4-3 15:40:24

qiuyouzhi 发表于 2020-4-3 15:33
列表切片,你学到列表之后就会学到
而且切片比reverse快(小代码不用考虑效率)

{:10_266:}列表之前其实学过了,切片用的很少,没记住 现在记住了!谢谢了!

qiuyouzhi 发表于 2020-4-3 15:42:03

zhongyuanadler 发表于 2020-4-3 15:40
列表之前其实学过了,切片用的很少,没记住 现在记住了!谢谢了!

{:10_256:}
页: [1]
查看完整版本: 第17讲十进制转二进制