spacex_dragon 发表于 2020-11-9 20:25:20

17课动手作业2的问题

编写一个将十进制转换为二进制的函数,要求采用“除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))

对小甲鱼老师的这段代码比较懵,望关爱小白的大神帮忙梳理下思路,感谢~

笨鸟学飞 发表于 2020-11-9 20:32:03

def Dec2Bin(dec):
    temp = []            #2. 不解释
    result = ''            #3. 不解释

    while dec:            #4.如果dec不等于0,则进入循环(while 条件,当条件结果为真或非0值则进入循环)
      quo = dec % 2   #5.把dec除以2的余数赋值给quo
      dec = dec // 2   #6.把dec除以2的结果的整数部分赋值给dec
      temp.append(quo)#7.把quo加入列表temp

    while temp:          #8.循环解释同上
      result += str(temp.pop())   #9.等价于result=result+str(temp.pop()),也就是把result加temp列表的最后一个值的字符串类型相加的结果赋值给result,同时列表temp在取出最后一个值时会把它删除(列表pop方法的特性)

    return result#10.把result返回

print(Dec2Bin(62))#1.把62作为参数传入并调用Dec2Bin()函数,再用print()函数打印返回值

昨非 发表于 2020-11-9 20:34:47

def Dec2Bin(dec):
    result = ''
    if dec:
      result = Dec2Bin(dec // 2) #每取余得到二进制的一位,递归的参数就地板除二,直到dec为0为止,说明各位已取完
      return result + str(dec % 2) #取余2得到的余数为二进制各位的倒序,依次以字符串的形式拼接在一起,相当于正序
    else:
      return result #返回正序二进制字符串
print(Dec2Bin(62))#打印出返回值

spacex_dragon 发表于 2020-11-10 12:00:18

笨鸟学飞 发表于 2020-11-9 20:32


2位前辈的解答都对我很有帮助,感谢!

spacex_dragon 发表于 2020-11-10 12:02:24

昨非 发表于 2020-11-9 20:34


2位前辈的解答都对我很有帮助,感谢!
页: [1]
查看完整版本: 17课动手作业2的问题