sola_半月 发表于 2020-1-3 10:38:22

第30讲文件系统 课后作业第一题 答案求解

import os

all_files = os.listdir(os.curdir) # 使用os.curdir表示当前目录更标准
type_dict = dict()

for each_file in all_files:
    if os.path.isdir(each_file):
      type_dict.setdefault('文件夹', 0)   #这里不是每次遇上文件夹,那么type_dict[‘文件夹’:]的值都是变回0了吗?要怎么累加呢?
      type_dict['文件夹'] += 1
    else:
      ext = os.path.splitext(each_file)
      type_dict.setdefault(ext, 0)
      type_dict += 1

for each_type in type_dict.keys():
    print('该文件夹下共有类型为【%s】的文件 %d 个' % (each_type, type_dict)

麻烦鱼油们 问题在上面的#那里学到这里就卡住了连作业思路都没有脑子生锈了 可以帮我解释下吗

sunrise085 发表于 2020-1-3 10:57:57

给你一个帖子,昨天的。现在已经解决。你可以看看。
为什么统计文件夹数量时,不显示‘文件夹’类型呢

jackz007 发表于 2020-1-3 11:35:52

本帖最后由 jackz007 于 2020-1-3 11:41 编辑

      type_dict . setdefault('文件夹', 0)   # 这一句用于在字典中新添加一个成员,只有在字典 type_dict 中不存在 key 为 '文件夹' 的项时,此语句才会被执行,否则不会被执行

sola_半月 发表于 2020-1-3 12:01:34

jackz007 发表于 2020-1-3 11:35


没错   但是每次执行type_dict[‘文件夹’:]的值都是变回0了

sola_半月 发表于 2020-1-3 12:05:05

sunrise085 发表于 2020-1-3 10:57
给你一个帖子,昨天的。现在已经解决。你可以看看。
为什么统计文件夹数量时,不显示‘文件夹’类型呢

估计不是那个问题我问的问题和这个不同i   比他的简单一点

sola_半月 发表于 2020-1-3 12:06:10

jackz007 发表于 2020-1-3 11:35


我估计你的是正确答案   我思考一下

jackz007 发表于 2020-1-3 12:10:04

sola_半月 发表于 2020-1-3 12:01
没错   但是每次执行type_dict[‘文件夹’:]的值都是变回0了

      我想说的是,如果 '文件夹' 已经存在,type_dict[ '文件夹'] 的值不会因为这一句而有任何改变!

sola_半月 发表于 2020-1-3 12:15:06

jackz007 发表于 2020-1-3 12:10
我想说的是,如果 '文件夹' 已经存在,type_dict[ '文件夹'] 的值不会因为这一句而有任何改变!

那请问这句还执行吗

jackz007 发表于 2020-1-3 12:19:04

sola_半月 发表于 2020-1-3 12:15
那请问这句还执行吗

       是有条件执行,在字典中不存在 key 为 '文件夹' 的项的时候。否则,你能解释数值累加效果吗?

Tigeroad 发表于 2020-4-30 14:41:53

jackz007 发表于 2020-1-3 11:35


恍然大悟,赞
页: [1]
查看完整版本: 第30讲文件系统 课后作业第一题 答案求解