鱼C论坛

 找回密码
 立即注册
查看: 2768|回复: 18

[已解决]零基础学习python中030的课后作业

[复制链接]
发表于 2017-2-22 14:09:50 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 豌图酱 于 2017-2-22 14:12 编辑

第0题统计当前目录各种类型文件数量的作业,答案其实看懂了,可是不知道自己写的代码有什么问题,麻烦大家看下:


import os

f = os.listdir(os.curdir)
temp = []
ext = []
for each in f:
    (file_name,ext_) = os.path.splitext(each)
    if ext_=='':
        ext_='文件夹'
    ext = ext.append(ext_)
for each_ext in ext:
    if each_ext not in temp:
        print('该文件夹下共有类型为【%s】的文件%d个'%(each_ext,ext.count(each_ext)))
        temp.append(each_ext)
        

报错:
Traceback (most recent call last):
  File "C:/Users/lenovo/Desktop/python/统计各个类型文件数.py", line 10, in <module>
    ext = ext.append(ext_)
AttributeError: 'NoneType' object has no attribute 'append'
最佳答案
2017-2-23 12:01:45
  1. import os

  2. f = os.listdir(os.curdir)
  3. temp = []
  4. ext = []
  5. for each in f:
  6.     (file_name,ext_) = os.path.splitext(each)
  7.     if ext_=='':
  8.         ext_='文件夹'
  9.     ext.append(ext_)
  10. for each_ext in ext:
  11.     if each_ext not in temp:
  12.         print('该文件夹下共有类型为【%s】的文件%d个'%(each_ext,ext.count(each_ext)))
  13.         temp.append(each_ext)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-2-22 15:38:31 | 显示全部楼层
楼主你试试把ext = ext.append(ext_)这句直接写成
ext.append(ext_)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-22 19:20:53 | 显示全部楼层
jackche0214 发表于 2017-2-22 15:38
楼主你试试把ext = ext.append(ext_)这句直接写成
ext.append(ext_)

啊对对对,原来这里不能这么写的,改了之后是不报错了,不过运行结果变成:
该文件夹下共有类型为【文】的文件17个
该文件夹下共有类型为【件】的文件17个
该文件夹下共有类型为【夹】的文件17个
该文件夹下共有类型为【.】的文件6个
该文件夹下共有类型为【p】的文件5个
该文件夹下共有类型为【y】的文件5个
该文件夹下共有类型为【d】的文件1个
该文件夹下共有类型为【o】的文件1个
该文件夹下共有类型为【c】的文件1个

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-22 19:43:23 | 显示全部楼层

回帖奖励 +2 鱼币

2楼正解,楼主把帖子设为已解决吧~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-22 20:13:26 | 显示全部楼层
SapiensC 发表于 2017-2-22 19:43
2楼正解,楼主把帖子设为已解决吧~

运行后结果也有点问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-22 22:33:13 | 显示全部楼层

回帖奖励 +2 鱼币

不错~!~!~!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-2-23 07:38:02 | 显示全部楼层
我今天才学到30课,楼主学得好快呀!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-23 08:04:20 | 显示全部楼层
学习!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-2-23 08:13:00 From FishC Mobile | 显示全部楼层
32269100 发表于 2017-2-23 07:38
我今天才学到30课,楼主学得好快呀!

其实断断续续学了好久了,两个多月了吧,过年回家那段时间都没有学T_T
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-23 10:55:22 | 显示全部楼层
ext = ext.append(ext_)
这句话,append会直接修改原来的列表,没有返回值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-23 11:30:35 | 显示全部楼层
xuanmao 发表于 2017-2-23 10:55
ext = ext.append(ext_)
这句话,append会直接修改原来的列表,没有返回值。

改了之后是不报错了,不过运行结果变成:
该文件夹下共有类型为【文】的文件17个
该文件夹下共有类型为【件】的文件17个
该文件夹下共有类型为【夹】的文件17个
该文件夹下共有类型为【.】的文件6个
该文件夹下共有类型为【p】的文件5个
该文件夹下共有类型为【y】的文件5个
该文件夹下共有类型为【d】的文件1个
该文件夹下共有类型为【o】的文件1个
该文件夹下共有类型为【c】的文件1个


按理说splitext是把文件类型后缀分割出来啊,不知道为什么会变成这样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-23 11:59:46 | 显示全部楼层
该文件夹下共有类型为【.BIN】的文件1个
该文件夹下共有类型为【文件夹】的文件22个
该文件夹下共有类型为【.iso】的文件35个
该文件夹下共有类型为【.rar】的文件1个
该文件夹下共有类型为【.100】的文件1个
该文件夹下共有类型为【.11】的文件1个
该文件夹下共有类型为【.1-22】的文件1个
该文件夹下共有类型为【.1-30】的文件1个
该文件夹下共有类型为【.1-81】的文件1个
该文件夹下共有类型为【.102】的文件1个
该文件夹下共有类型为【.96】的文件1个
该文件夹下共有类型为【.txt】的文件8个
该文件夹下共有类型为【.exe】的文件1个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-23 12:00:49 | 显示全部楼层

回帖奖励 +2 鱼币

你的代码原封不动,就是把当前目录改了下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-23 12:01:45 | 显示全部楼层    本楼为最佳答案   
  1. import os

  2. f = os.listdir(os.curdir)
  3. temp = []
  4. ext = []
  5. for each in f:
  6.     (file_name,ext_) = os.path.splitext(each)
  7.     if ext_=='':
  8.         ext_='文件夹'
  9.     ext.append(ext_)
  10. for each_ext in ext:
  11.     if each_ext not in temp:
  12.         print('该文件夹下共有类型为【%s】的文件%d个'%(each_ext,ext.count(each_ext)))
  13.         temp.append(each_ext)
复制代码

评分

参与人数 1荣誉 +2 鱼币 +3 贡献 +1 收起 理由
豌图酱 + 2 + 3 + 1 谢谢啦~

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-23 12:12:33 | 显示全部楼层

是一样的吗?

层主这样可以正常运行出结果么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-23 12:14:48 | 显示全部楼层

啊发现了,把extend改成append了,所以extend会把一个元素分成单独的字符作为列表存放吗O.O
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-23 16:03:46 | 显示全部楼层

回帖奖励 +2 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-2-23 20:40:20 | 显示全部楼层
很厉害
学习了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-23 21:26:36 | 显示全部楼层

回帖奖励 +2 鱼币

我也是来看看答案的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-25 13:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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