鱼C论坛

 找回密码
 立即注册
查看: 1295|回复: 9

[已解决]Python 第30课 第0题 答案代码 求注释

[复制链接]
发表于 2018-3-9 21:42:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 屁哥 于 2018-3-10 00:06 编辑

Python 第30课 第0题 答案代码 求注释

Python 第30课 第0题 答案代码 求注释   图左为我自己写的  图右为课后题答案  运行结果 对应着
麻烦大神帮忙注释一下小甲鱼的课后题
题目 编写一个程序 统计当前目录下每个文件类型的文件数

  1. import os  #

  2. all_files = os.listdir(os.curdir) # 用os.listdir 列举当前目录中的文件(os.curdir表示当前目录)
  3. type_dict = dict()  # 创建一个元组 type_dict

  4. for each_file in all_files:  #迭代获取 all_files 中的每个文件夹 并赋值给 each_file
  5.     if os.path.isdir(each_file): # 如果 each_file 存在且是一个目录 执行以下内容
  6.         type_dict.setdefault('文件夹', 0) # 向字典 type_dict 中添加 项("文件夹", 0)
  7.         type_dict['文件夹'] += 1   # 如果 each_file 存在且是一个目录 字典 type_dict 中的 键(“文件夹”)+1
  8.     else:
  9.         ext = os.path.splitext(each_file)[1] # 用splitext 分离 迭代出来的 文件名与扩展名 没看懂把谁赋值给 ext 了 [1] 什么意思
  10.         type_dict.setdefault(ext, 0)  # 向字典 type_dict 中添加 项(ext, 0)
  11.         type_dict[ext] += 1  # 如果 each_file 不存在且不是一个目录 字典 type_dict 中的 键(ext)+1

  12. for each_type in type_dict.keys(): # 迭代读取出 type_dict 中的键
  13.     print('该文件夹下共有类型为【%s】的文件 %d 个' % (each_type, type_dict[each_type]))  # 打印字典中迭代出来的每一个键【%s】 和 数量 这里数量没看懂\
  14.                                                                                         # type_dict[each_type]  这是怎么统计出来数字的 变成整形 int 的 ?

  15.             #  然后 这里 如果目录里有其他 类型文件 是怎么显示的   上面只有  ext  其他的怎么显示
复制代码

最佳答案
2018-3-10 12:27:54
ext它只是一个变量,它可以被赋值成任何后缀名。
在上面的for循环迭代中,每一个迭代的元素就是每一个完整的文件名,
而os.path.splitext(each_file)就是把每一个完整的文件名   分成(文件名和后缀名),成为一个元组。
接下来就是将当前的这个元组中的后缀名赋值给ext。
ext = os.path.splitext(each_file)[1]

type_dict.setdefault(ext,0)你可以去字典那个章节回顾一下,它的定义就是我上面说的,你再理解下
13123123.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-10 06:29:27 | 显示全部楼层

回帖奖励 +3 鱼币

。。。。晕了。。。大神咋没来。。。顶下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-3-10 08:05:27 | 显示全部楼层
答案中的ext = os.path.splitext(eachfile)[1]其实就是后缀名,
type_dict.setdefault(ext,0)它的意思是如果字典中存在ext,那就pass,直接执行
下一条语句,也就是下面的ext+1,如果不存在,那么就是先在字典中创建这个
ext,再执行+1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-3-10 11:11:04 | 显示全部楼层
JAY饭 发表于 2018-3-10 08:05
答案中的ext = os.path.splitext(eachfile)[1]其实就是后缀名,
type_dict.setdefault(ext,0)它的意思是如 ...


答案中的ext = os.path.splitext(eachfile)[1]其实就是后缀名
这个 【1】  什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-10 11:18:34 | 显示全部楼层
os.path.splitext(eachfile) 它返回的是一个名字和后缀名组成的元组,所以,既然是元组,这个[1]就是这个元组的位置参数,
也就是第二个元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-10 12:04:58 From FishC Mobile | 显示全部楼层
你插入个print打印一下不就知道了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-10 12:08:16 | 显示全部楼层
JAY饭 发表于 2018-3-10 11:18
os.path.splitext(eachfile) 它返回的是一个名字和后缀名组成的元组,所以,既然是元组,这个[1]就是这个元 ...

还有这种操作
ext = os.path.splitext(each_file)[1]
那它为什么等于 ext  而不是等于其他的 文件后缀

然后 这个程序 那句话是判断其他后缀的  我也没发现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-10 12:27:54 | 显示全部楼层    本楼为最佳答案   
ext它只是一个变量,它可以被赋值成任何后缀名。
在上面的for循环迭代中,每一个迭代的元素就是每一个完整的文件名,
而os.path.splitext(each_file)就是把每一个完整的文件名   分成(文件名和后缀名),成为一个元组。
接下来就是将当前的这个元组中的后缀名赋值给ext。
ext = os.path.splitext(each_file)[1]

type_dict.setdefault(ext,0)你可以去字典那个章节回顾一下,它的定义就是我上面说的,你再理解下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-10 15:23:33 | 显示全部楼层
大头目 发表于 2018-3-10 12:04
你插入个print打印一下不就知道了吗

dui o
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-10 15:38:50 | 显示全部楼层
JAY饭 发表于 2018-3-10 12:27
ext它只是一个变量,它可以被赋值成任何后缀名。
在上面的for循环迭代中,每一个迭代的元素就是每一个完整 ...

haode   xieixele
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 10:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表