首页 新闻 会员 周边 捐助

递归问题。求大佬帮忙解释下

0
悬赏园豆:100 [已解决问题] 解决于 2025-03-24 11:25

import os
def func(path,lst=[]):
if os.path.isfile(path):
lst.append(os.path.getsize(path))
return lst
else:
lst1=os.listdir(path)
for item in lst1:
if os.path.isfile(os.path.join(path,item)):
lst.append(os.path.getsize(os.path.join(path,item)))
return lst
else:
func(os.path.join(path,item),lst)
为什么这段代码返回的是None不能返回一个列表?
求大佬帮忙说一下吧

求大佬指导123的主页 求大佬指导123 | 初学一级 | 园豆:68
提问于:2025-03-22 16:21
< > 人人可用的开源BI工具
分享
最佳答案
0

最后一个else没有return.

import os

def func(path,lst=[]):
    if os.path.isfile(path):
        lst.append((path,os.path.getsize(path)))
        return lst
    else:
        lst1=os.listdir(path)
        for item in lst1:
            if os.path.isfile(os.path.join(path,item)):
                lst.append((os.path.join(path,item),os.path.getsize(os.path.join(path,item))))
            else:
                func(os.path.join(path,item),lst)
        return lst

print(func('obj'))
收获园豆:100
www378660084 | 小虾三级 |园豆:1457 | 2025-03-24 11:03

已经懂了递归运行逻辑了。。谢谢

求大佬指导123 | 园豆:68 (初学一级) | 2025-03-24 11:14

import os
path=r'F:\PythonProject1\day23'
def func(path):
lst = []
if os.path.isfile(path):
lst.append(os.path.getsize(path))
else:
lst1 = os.listdir(path)
for item in lst1:
if os.path.isfile(os.path.join(path, item)):
lst.append(os.path.getsize(os.path.join(path, item)))
else:
lst=func(os.path.join(path, item))
return lst
return lst
print(func(path))

求大佬指导123 | 园豆:68 (初学一级) | 2025-03-24 11:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册
Top