鱼C论坛

 找回密码
 立即注册
查看: 702|回复: 3

关于第30讲最后一题

[复制链接]
发表于 2019-8-5 16:03:31 | 显示全部楼层 |阅读模式

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

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

x
import os

def word_find(path,word):
    os.chdir(path)
    for each in os.listdir(os.getcwd()):
        if os.path.isfile(each):
            temptype = os.path.splitext(each)[1]
            if temptype == type1:
                file1 = open(each)
                lines_num = 0
                if word in file1:                                               #这里就开始乱写试试看能不能实现了。。。
                    path1 = os.path.join(os.curdir,each)
                    print('在文件【%s】中找到关键字【%s】' % (path1,word))
                    for each_line in file1:                                  #这里是又一个乱写。。。
                        list1 = []
                        lines_num += 1
                        if word in each_line:
                            list1.append(each_line.find(word))     #这里还是一个乱写。。。
                            print('关键字出现在第%s行,第%s个位置。' % (lines_num,list1))
        else:
            path2 = os.path.join(os.curdir,each)
            word_find(path2,word)

word = input('请将该脚本放于待查找的文件夹内,请输入关键字:')
type1 = '.txt'
path = os.getcwd()
word_find(path,word)

事实证明都是乱写的果然不行。。。报错时说超过迭代次数,可是不知道为什么,也不会改。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-8-5 18:46:40 | 显示全部楼层
确实有点乱,粗略看了一下,几个问题:
1、审题没对吧,说了要让用户选择是否要打印详细位置的,这个你没处理。
2、没必要单独定义一个type1变量来判断是否是txt啊,通过split+索引来比较就行了。
3、你if只是判断了是否是文件的处理,如果是文件夹没有后续操作?
4、你的if分支太多了,单独弄一个主函数用来接收输入即可,把判断啊那些操作放到自定义函数里封装起来比较好。
5、建议先把前面几题搞清楚了再做这题吧,逻辑思路这些先理清楚了就不会乱写了,要不然不知道从哪开始解答。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-5 21:38:52 | 显示全部楼层
chordblue 发表于 2019-8-5 18:46
确实有点乱,粗略看了一下,几个问题:
1、审题没对吧,说了要让用户选择是否要打印详细位置的,这个你没 ...

选择是否打印那个一般我会最后加。。因为我通常会用好多if。。所以放在最后。。
那个else我是打算用来处理文件夹的,但是显然有问题。。。
前面几个题做完了,有些是问过的,有些是照着参考答案改过的,但总体都能实现了。。。
其实知道逻辑可能会有问题。。但是找不到在哪。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-5 22:35:02 | 显示全部楼层
水煮齐国大夫 发表于 2019-8-5 21:38
选择是否打印那个一般我会最后加。。因为我通常会用好多if。。所以放在最后。。
那个else我是打算用来处 ...

逻辑上其实也不难,总体思路就是先输入要查找的关键字对吧,然后你程序运行在根目录下的,要求在根目录下查找txt文件里的关键字,那么:
1、根目录下有多少文件和文件夹?
2、如果是文件,是不是txt,是的话打开然后查找输出结果;不是的话跳过。
3、如果是文件夹,那么就是调用自定义函数本身递归到下级目录里再重复1和2了。递归完了再返回上一层级。

其实想明白了1和2,第三步就简单了啊。先理一理哈,你这一坨代码如果没有针对具体问题,确实也不知道怎么给你分析的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-17 11:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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