大佬们,为什么reverse()不能翻转纯数字的数组?
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,1,0】吗?
我换了一种方法,这样zu = zu[::-1],但结果也是【1,0,1】
为此我有以下疑问
为什么reverse()翻转结果是【1,0,1】?它是怎么得出来的?
为什么zu = zu[::-1]翻转结果也是【1,0,1】?它是怎么得出来的? 不应该写在循环之内 开始是0翻完是0
然后是01翻完是10然后是101
随便翻,咋翻都是101 写在循环内就是每循环一次就翻转一次,代码逻辑不对 本帖最后由 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)
因为你在每一次循环都进行了一次翻转,第一次循环,zu = ,翻转后依然为0,第二次循环,zu=,翻转后为,第三次循环zu=,翻转后依然为
你自己的方法(只是加入了flag作为标志)
>>> 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为:
第1次循环,翻转后zu为:
第2次循环,翻转前zu为:
第2次循环,翻转后zu为:
第3次循环,翻转前zu为:
第3次循环,翻转后zu为:
页:
[1]