递归问题
# 0. 使用递归编写一个十进制转换为二进制的函数(要求采用“取2取余”的方式,结果与调用bin()一样返回字符串形式)。list =[]
def bin(x):
if x == 1:
list.append(1)
print(str(list.reverse()))
return 1
elif x % 2 == 0:
list.append(0)
return bin(x / 2)
elif x % 2 == 1:
list.append(1)
return bin(x // 2)
bin(152)
不知道为什么会输出None
求指点 在你的代码中,出现了一些问题导致输出为None。以下是你提供的代码中存在的问题和如何修复它们:
1. list 是Python中的保留关键字,不能作为变量名使用。请避免使用list作为变量名,以免引起命名冲突。将其改为其他名称,比如result。
2. 当调用list.reverse()时,它会原地反转列表,并返回None。所以,str(list.reverse()) 实际上返回None。你可以先反转列表,然后再将其转换为字符串。
修复后的代码如下:
def decimal_to_binary(x):
result = []
if x == 0:
return '0'
elif x == 1:
result.append(1)
elif x % 2 == 0:
result.append(0)
result.extend(decimal_to_binary(x // 2))
else:
result.append(1)
result.extend(decimal_to_binary(x // 2))
return ''.join(map(str, result[::-1]))
print(decimal_to_binary(152))# 输出: '10011000'
在修复后的代码中,我将函数名从bin改为了decimal_to_binary,并创建了一个空的result列表来保存二进制数的每一位。递归地调用函数来转换除以2后的整数部分,并将余数添加到result列表中。最后,将result反转并将其连接为一个字符串,并返回结果。
希望这可以解决你的问题! 陶远航 发表于 2023-7-13 11:30
在你的代码中,出现了一些问题导致输出为None。以下是你提供的代码中存在的问题和如何修复它们:
1. list...
你不是被取消资格了吗@sfqxx @isdkz 歌者文明清理员 发表于 2023-7-13 12:12
你不是被取消资格了吗@sfqxx @isdkz
6 歌者文明清理员 发表于 2023-7-13 12:12
你不是被取消资格了吗@sfqxx @isdkz
是的,小甲鱼明确跟我说这个月取消了
但是最佳答案是最快的加积分的方式 陶远航 发表于 2023-7-13 12:39
是的,小甲鱼明确跟我说这个月取消了
但是最佳答案是最快的加积分的方式
@sfqxx (人工回答)
reverse() 只是反转列表,并不返回内容,你 print(print("text"))不也输出的None?(对于外面的print)
你可以自定义一个函数,不返回任何内容,在print一下不就是NOne?
你可以这样改:
list.reverse()
print(list)
或者:
list = list[::-1]
至于还有一种方法,因为你变量名用了list所以就用不了了 歌者文明清理员 发表于 2023-7-13 12:40
@sfqxx
? sfqxx 发表于 2023-7-13 12:48
?
? 陶远航 发表于 2023-7-13 12:39
是的,小甲鱼明确跟我说这个月取消了
但是最佳答案是最快的加积分的方式
我觉得还是技术贴,一个最佳5积分好像 sfqxx 发表于 2023-7-13 13:41
我觉得还是技术贴,一个最佳5积分好像
技术贴得有人评分啊
页:
[1]