鱼C论坛

 找回密码
 立即注册
查看: 1079|回复: 2

[技术交流] 030课后作业第四题终于作出来了

[复制链接]
发表于 2018-6-16 21:29:52 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 myckjx 于 2018-6-16 22:11 编辑

做了一整天才做出来,这尼妹对初学者也太难了......
是不是要像老师答案里那样def多个函数,才算优雅的代码?我这种只有一个def的算不算及格
  1. import os
  2. def find(route,word):
  3.     list1 = os.listdir(route)
  4.     for i in list1:
  5.         if os.path.isfile(route+i):
  6.             if os.path.splitext(i)[1]=='.txt':
  7.                 file = open(route+i,'r')            
  8.                 n = 0
  9.                 list2 = list()
  10.                 list3 = list()
  11.                 for h in file:
  12.                     list2.append([])                  
  13.                     if word in h:
  14.                         list3 = h.split(word)
  15.                         x = 0
  16.                         for t in range(len(list3)-1):
  17.                             x += len(str(list3[t]))
  18.                             list2[n].append(x+(t*len(word))+1)
  19.                     n += 1
  20.                
  21.                 file_dict = dict()
  22.                 for j in range(len(list2)):
  23.                     if list2[j] != []:
  24.                         file_dict.update({j+1:list2[j]})
  25.                 if file_dict != {}:            
  26.                     print('=======================================')
  27.                     print('在文件【%s】中找到关键字【%s】'%(route+i,word))
  28.                     for m in file_dict:
  29.                         print('关键字出现在第%d行第%s个位置' % (m,file_dict[m]))

  30.                 file.close()                        
  31.         else:
  32.             find(route+i+'\\',word)

  33. word = input('请将该代码放于待查找的文件夹内,请输入关键字:')
  34. num = input('请问是否打印关键字【%s】在文件中的具体位置(YES/NO):'%word)
  35. if num in ['YES','yes','Y','y']:
  36.     find(os.getcwd()+'\\',word)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-6-16 23:00:27 | 显示全部楼层
本帖最后由 myckjx 于 2018-6-16 23:39 编辑

改进版优雅的作业做好了
  1. import os
  2. def line(file,word):
  3.     n = 0
  4.     list1 = list()
  5.     list2 = list()
  6.     for h in file:
  7.         list1.append([])                  
  8.         if word in h:
  9.             list2 = h.split(word)
  10.             x = 0
  11.             for t in range(len(list2)-1):
  12.                 x += len(str(list2[t]))
  13.                 list1[n].append(x+(t*len(word))+1)
  14.         n += 1
  15.     return list1

  16. def pri(route,word,i,list1,flag):
  17.     file_dict = dict()
  18.     for j in range(len(list1)):
  19.         if list1[j] != []:
  20.             file_dict.update({j+1:list1[j]})
  21.     if file_dict != {}:            
  22.         print('=======================================')
  23.         print('在文件【%s】中找到关键字【%s】'%(route+i,word))
  24.         if flag in ['YES','yes','Y','y']:
  25.             for m in file_dict:
  26.                 print('关键字出现在第%d行,第%s个位置' % (m,file_dict[m]))

  27. def find(route,word,flag):
  28.     list1 = os.listdir(route)
  29.     for i in list1:
  30.         if os.path.isfile(route+i):
  31.             if os.path.splitext(i)[1]=='.txt':
  32.                 file = open(route+i,'r')
  33.                 list2 = line(file,word)
  34.                 pri(route,word,i,list2,flag)
  35.                 file.close()
  36.         else:
  37.             find(route+i+'\\',word,flag)

  38. word = input('请将该代码放于待查找的文件夹内,请输入关键字:')
  39. flag = input('请问是否打印关键字【%s】在文件中的具体位置(YES/NO):'%word)
  40. find(os.getcwd()+'\\',word,flag)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-27 22:44:16 | 显示全部楼层
厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 14:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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