本文是跟着鱼C论坛小甲鱼零基础学习Python3的视频学习的,课后题也是跟随每一课所附属的题目来做的,根据自己的理解和标准答案记录的笔记。
第二十三课与二十四课
测试题:
0.使用递归编写一个十进制转换为二进制的函数(要求采用“除2取余”的方式,结果与调用bin()一样返回字符串形式)
答:通过地板除2的方法层层处理数据到底层,然后以除二取余的方式得到二进制的每一位数。
def dtbin(num):
def tbin(num):
result = ''
if num:
result = tbin( num // 2 )
return result += str(num % 2)
else:
return result
if num == 0:
return '0b' + '0'
else:
return '0b' + tbin(num)
原题解是上述函数中的内置函数 tbin() 的书写方式,但是运行之后出现一个问题,就是在二进制转换的实现过程中 tbin() 有缺陷,即不能转化出 0 的正确返回值,并且每次返回的只有二进制代码的本身数值,而不同于原始 BIF 的 bin() 返回的是 '0b' 前缀加上二进制数值。所以为了改善补充原题解的不足,将其变为内置函数运行