编写一个将十进制转换为二进制的函数,要求采用“除2取余”的方式,结...
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))
真的太难了大神能不能给我个详细注释啊。。。。。我真的太笨了。。。。 本帖最后由 jackz007 于 2022-10-4 23:27 编辑
def Dec2Bin(dec):
r = '' # 需要循环累加得到结果,最终结果是字符串,所以,先把 r 初始化为空串
while dec: # 只要 dec 不为 0 就开始(或继续)循环
r = str(dec % 2) + r# 把 dec 除以 2 的余数转换为字符累加到 r 的开头
dec //= 2 # dec = dec // 2 (地板除)
return r # 反馈字符串 r
print(Dec2Bin(512))
至于十进制转二进制数的原理,为了形象直观,可以参考下面十进制转十进制代码的运行结果
def Dec2Dec(dec):
c , r = 0 , ''
while dec:
print('第 %d 次循环:dec = %4d' % ((c + 1) , dec) , end = '')
r = str(dec % 10) + r
print(' dec %% 10 = %d , dec // 10 = %3d r = %s' % ((dec % 10) , (dec // 10) , r))
dec //= 10
c += 1
return r
print(Dec2Dec(3578))
两个代码的计算方法完全对等,不同之处只是在于这个代码是 10 进制到十进制的转换,运行结果反映了转换原理
下面是运行结果:
D:\\Python>python x.py
第 1 次循环:dec = 3578 dec % 10 = 8 , dec // 10 = 357 r = 8
第 2 次循环:dec =357 dec % 10 = 7 , dec // 10 =35 r = 78
第 3 次循环:dec = 35 dec % 10 = 5 , dec // 10 = 3 r = 578
第 4 次循环:dec = 3 dec % 10 = 3 , dec // 10 = 0 r = 3578
3578
D:\\Python>
看图,思路多清晰,你只要把这图的思路转换成代码,在简单不过了吧。 jackz007 发表于 2022-10-4 22:57
至于十进制转二进制数的原理,为了形象直观,可以参考下面十进制转十进制代码的运行结果
...
r 的空串默认数值就是0吗?? 本帖最后由 jackz007 于 2022-10-5 21:23 编辑
fjsboy 发表于 2022-10-5 21:07
r 的空串默认数值就是0吗??
字符串就是字符串,和整型数是两个完全不同东西,二者没有任何关系。 jackz007 发表于 2022-10-5 21:22
字符串就是字符串,和整型数是两个完全不同东西,二者没有任何关系。
在请问下while temp:当temp =的时候还会循环下去吗 fjsboy 发表于 2022-10-5 21:56
在请问下while temp:当temp =的时候还会循环下去吗
试一下就知道了
temp =
if temp:
print('Bingo !') jackz007 发表于 2022-10-5 22:11
试一下就知道了
谢谢 谢谢懂了 懂了 真的太难了还是自己基础知识把握的不好。。
页:
[1]