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))
对小甲鱼老师的这段代码比较懵,望关爱小白的大神帮忙梳理下思路,感谢~ 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()函数打印返回值 def Dec2Bin(dec):
result = ''
if dec:
result = Dec2Bin(dec // 2) #每取余得到二进制的一位,递归的参数就地板除二,直到dec为0为止,说明各位已取完
return result + str(dec % 2) #取余2得到的余数为二进制各位的倒序,依次以字符串的形式拼接在一起,相当于正序
else:
return result #返回正序二进制字符串
print(Dec2Bin(62))#打印出返回值 笨鸟学飞 发表于 2020-11-9 20:32
2位前辈的解答都对我很有帮助,感谢! 昨非 发表于 2020-11-9 20:34
2位前辈的解答都对我很有帮助,感谢!
页:
[1]