递归法把十进制转换成二进制
b = []def erjinzhi (x):
global b
if x // 2 == 0:
return b.append (x%2)
else :
b.append (x%2)
return b.append (erjinzhi (x//2))
我是这样写的
运行 erjinzhi(10)后得到的b是这样一个列表
这里那么多None是哪里冒出来的啊,求大佬解答一下 因为b.append()返回的是None,正确代码如下b = []
def erjinzhi (x):
global b
if x // 2 == 0:
return b.append (x%2)
else :
b.append (x%2)
return erjinzhi (x//2) ouyunfu 发表于 2020-2-24 17:21
因为b.append()返回的是None,正确代码如下
b = []
def erjinzhi (x):
if x // 2 == 0:
return x
else :
b.append (x%2)
b.append (erjinzhi (x//2))
return b
那为什么我把代码变成了这样,但是,运行erjinzhi(10)的时候是这样的:
, [...]]
改成这样
b = []
def erjinzhi (x):
if x // 2 == 0:
return b.append (x)
else :
b.append (x%2)
erjinzhi (x//2)
return b
就正常了
这两段代码不应该是一个意思吗,是说append 这个内置函数后面不能接自己编的函数吗 你得考虑到你在用递归,b是一个数列,你若再return b.append(原函数),将会导致内部的无限迭代。 a = 0b00000110
b = int(a)
print(b)
# 2-10
c = oct(a)
print(c)
# 2-8
d = hex(a)
print(d)
#2-16
e = 6
# 10进制
f = bin(e)
print(f)
#10-2 本帖最后由 jackz007 于 2020-2-24 18:14 编辑
列表属于可修改对象,在 Python 语言中,对可修改对象的修改通过方法就完全可以做到,所以,它们的方法往往都没有返回值,无返回值的函数返回的都是 None。
在本例中,为列表 b 添加新元素用下面的语句就可以:
b . append(x % 2)
函数最后返回列表 b 要这样写
return b
所以,为列表 b 添加新元素并返回列表 b 写成下面这样是错误的
return b . append(x % 2)
必须把它们分开写成两句:
b . append(x % 2)
return b
jackz007 发表于 2020-2-24 18:09
列表属于可修改对象,在 Python 语言中,对可修改对象的修改通过方法就完全可以做到,所以,它们的 ...
哦哦好的,理解了,多谢
页:
[1]