|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
def dec28in(dec):
result = ''
if dec:
result = dec28in(dec//2)
print('%s = dec28in(%s//2)'%(result,dec))
print('%s + str((%d)%2)'%(result,dec)) 问题出在这段代码需要怎么改
return result + str(dec%2)
else:
return result
print(dec28in(62))
另外这段代码如果正常输出result为什么是1.按照顺序应该是62%2第一个输出的应该是0才对啊。一直没有搞明白。谢谢老师能解决一下我的疑惑。感谢了
= dec28in(1//2)
1 = dec28in(3//2)
11 = dec28in(7//2)
111 = dec28in(15//2)
1111 = dec28in(31//2)
11111 = dec28in(62//2)
111110
少打个百分号
- def dec28in(dec):
- result = ''
- if dec:
- result = dec28in(dec//2)
- print('%s = dec28in(%s//2)'%(result,dec))
- print('%s + str((%d)%%2)'%(result,dec))
- return result + str(dec%2)
-
- else:
- return result
- print(dec28in(62))
复制代码
解析
- print(Dec2Bin(62)) # 这一句,意味着打印函数,变量值为62
- 第一轮:
- if dec:
- result = Dec2Bin(dec//2) # 这个位置result的值是,62//2,即:31
- return result + str(dec%2) # 这个位置 result 为 空置 + 62%2,即:0
- 第二轮:
- if dec:
- result = Dec2Bin(dec//2) # 这个位置result的值是,31//2,即:15
- return result + str(dec%2) # 这个位置 result 为 0 + 31%2,即:10
- 第三轮:
- if dec:
- result = Dec2Bin(dec//2) # 这个位置result的值是,15//2,即:7
- return result + str(dec%2) # 这个位置 result 为 10 + 15%2,即:110
- 第四轮:
- if dec:
- result = Dec2Bin(dec//2) # 这个位置result的值是,7//2,即:3
- return result + str(dec%2) # 这个位置 result 为 110 + 7%2,即:1110
- 第五轮:
- if dec:
- result = Dec2Bin(dec//2) # 这个位置result的值是,3//2,即:1
- return result + str(dec%2) # 这个位置 result 为 1110 + 3%2,即:11110
- 第五轮:
- if dec:
- result = Dec2Bin(dec//2) # 这个位置result的值是,1//2,即:0
- return result + str(dec%2) # 这个位置 result 为 11110 + 1%2,即:111110
- 第六轮:
- if dec: # 为假,程序跳过此步骤
复制代码
|
|