|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
def j(x):
zu = []
t =1
while(t != 0):
t = x // 2
t1 = x % 2
x = t
zu.append(t1)
zu.reverse()
print(zu)
这是一个十进制转二进制函数
假设j(6),则zu.append(t1)得出的结果是【0, 1, 1】
再用翻转zu.reverse(),结果就变成[1, 0, 1]了。
难道翻转不应该得出【1,1,0】吗?
我换了一种方法,这样zu = zu[::-1],但结果也是【1,0,1】
为此我有以下疑问
为什么reverse()翻转结果是【1,0,1】?它是怎么得出来的?
为什么zu = zu[::-1]翻转结果也是【1,0,1】?它是怎么得出来的?
本帖最后由 Omed 于 2020-4-9 16:14 编辑
- >>> def j(x):
- zu = []
- t = 1
- while t != 0 :
- t = x//2
- t1 = x%2
- x = t
- zu.append(t1)
- zu.reverse()
- print(zu)
-
- >>> j(6)
- [1, 1, 0]
复制代码
因为你在每一次循环都进行了一次翻转,第一次循环,zu = [0],翻转后依然为0,第二次循环,zu=[0,1],翻转后为[1,0],第三次循环zu=[1,0,1],翻转后依然为[1,0,1]
- >>> def j(x):
- zu = []
- t = 1
- flag = 1
- while t != 0 :
- t = x//2
- t1 = x%2
- x = t
- zu.append(t1)
- print("第%d次循环,翻转前zu为:"%(flag)+str(zu))
- zu.reverse()
- print("第%d次循环,翻转后zu为:"%(flag)+str(zu))
- flag += 1
- print(zu)
-
- >>> j(6)
- 第1次循环,翻转前zu为:[0]
- 第1次循环,翻转后zu为:[0]
- 第2次循环,翻转前zu为:[0, 1]
- 第2次循环,翻转后zu为:[1, 0]
- 第3次循环,翻转前zu为:[1, 0, 1]
- 第3次循环,翻转后zu为:[1, 0, 1]
- [1, 0, 1]
复制代码
|
|