鱼C论坛

 找回密码
 立即注册
查看: 5367|回复: 4

[已解决]python课后30作业的最后一道代码题求大神解答

[复制链接]
发表于 2017-6-22 16:19:12 | 显示全部楼层 |阅读模式

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

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

x
如下,这段代码是我自己写的,和小甲鱼的不一样。问题在于:
当我把最后print程序放到函数内的时候,会打印如第一张图片,重复好几遍……但是装载数据的字典信息是正确的
  1. import os
  2. import os.path
  3. import re

  4. key_word = input('请将该脚本放于待查找的文件夹内并输入关键字:')
  5. location = input('请问是否需要打印关键字【'+key_word+'】在文件中的具体位置(yes/no):')

  6. key_dict = {}

  7. def find_file(word):
  8.        for each in os.listdir(os.curdir):
  9.               if os.path.isdir(each):
  10.                      os.chdir(os.curdir + os.sep + each)
  11.                      find_file(word)
  12.                      os.chdir(os.pardir)
  13.               else:
  14.                      if os.path.splitext(each)[-1] == '.txt':
  15.                             with open(os.getcwd() + os.sep + each) as f:
  16.                                    count = 1
  17.                                    for line in f:
  18.                                           iter_line = list(re.finditer(word,line))
  19.                                           if iter_line:
  20.                                                  key_dict.setdefault((os.getcwd() + os.sep + each), {})
  21.                                                  key_dict[os.getcwd() + os.sep + each].setdefault(count, [])
  22.                                                  for each_1 in range(len(iter_line)):
  23.                                                         key_dict[os.getcwd() + os.sep + each][count].append(iter_line[each_1].span()[0])
  24.                                                  count += 1
  25.                                           else:
  26.                                                  #f.readline()
  27.                                                  count += 1
  28.                                    count = 0
  29.        '''
  30.        if key_dict:
  31.               for i in key_dict.keys():
  32.                      print('在文件【%s】中找到关键字【%s】' %(i,key_word))
  33.                      if location == 'yes':
  34.                             for j, k in key_dict[i].items():
  35.                                    print('关键字出现在第{0}行,第'.format(j)+str(k)+'个位置')
  36.        '''
  37.               
  38. find_file(key_word)

  39. if key_dict:
  40.               for i in key_dict.keys():
  41.                      print('在文件【%s】中找到关键字【%s】' %(i,key_word))
  42.                      if location == 'yes':
  43.                             for j, k in key_dict[i].items():
  44.                                    print('关键字出现在第{0}行,第'.format(j)+str(k)+'个位置')
  45.                                                 
  46.                                           
  47.                                           
复制代码

但我把该段程序放到函数外面的最后,就正常打印了。
求教有大神有空的麻烦解答一下,感激不尽!!!!
最佳答案
2017-6-22 20:03:17
能直接指出你要问的是哪条语句嘛,你这代码实在看的眼花。
微信截图_20170622161753.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-6-22 20:03:17 | 显示全部楼层    本楼为最佳答案   
能直接指出你要问的是哪条语句嘛,你这代码实在看的眼花。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-22 20:46:33 | 显示全部楼层
我还是个萌新,看不懂这样的代码  好乱 看见封口费解放军解放迪斯科解放看来就打算理发i互动式佛iAHOK
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-23 10:07:51 | 显示全部楼层
本来没这么乱的……用小甲鱼的方式提交代码就这么乱了。。。这两个图片是我截图下来的程序,问题就出现在我注释掉的绿色几行,前面的程序是遍历所有文件夹和文件(如果文件夹内有文件或文件夹就会接着递归)打开判断里面的内容是否有指定的key word。这段程序是没问题的。问题就是绿色的我print数据的时候。如果我把绿色的程序放在函数体内(就是没有注释掉),就会出现下面的问题,有的字典key和value显示了好几遍,但放在函数体外print就没问题,显示正常了。求助大神,谢谢两位回我的帖子,代码上传出问题实在抱歉。
1.png
2.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-23 10:09:49 | 显示全部楼层
函数忘记return了……是在抱歉
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-14 13:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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