**第0005题:**你有一个目录,装了很多照片,把它们的尺寸变成都不大于iPhone5分辨率的大小。思路:遍历给出目录下的图片,把大于iPhone5分辨率的图片都进行缩放。使用Python的PIL库对图片进行处理,IPhone5屏幕分辨率为640×1136,将大于该分辨率的图片按照一定比例缩放至适合大小并保存。0005.批量图片处理.py#!/usr/bin/envpython#coding:utf-8importImage,os#源目录myPath='/home/bill/Pictures/'#输出目录outPath='/home/bill/Pictures/output/'defprocessImage(filesource,destsource,name,imgtype):'''filesource是存放待转换图片的目录destsource是存放输出转换后图片的目录name是文件名imgtype是文件类型'''imgtype='jpeg'ifimgtype=='.jpg'else'png'#打开图片im=Image.open(filesource+name)#缩放比例rate=max(im.size[0]/640.0ifim.size[0]640else0,im.size[1]/1136.0ifim.size[1]1136else0)ifrate:im.thumbnail((im.size[0]/rate,im.size[1]/rate))im.save(destsource+name,imgtype)defrun():#切换到源目录,遍历源目录下所有图片os.chdir(myPath)foriinos.listdir(os.getcwd()):#检查后缀postfix=os.path.splitext(i)[1]ifpostfix=='.jpg'orpostfix=='.png':processImage(myPath,outPath,i,postfix)if__name__=='__main__':run()**第0006题:**你有一个目录,放了你一个月的日记,都是txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词。思路:切换到目标目录,然后遍历该目录下的txt文件,用正则表达式匹配响应的单词和数字,然后让Counter计算单词的词频,并认为排除掉stopword后出现最多的词是最重要的词。注:stopword就是类似a/an/and/are/then的这类高频词,高频词会对基于词频的算分公式产生极大的干扰,所以需要过滤部分代码引用Show-Me-the-Code第四题中的统计单词代码0006.最重要的词.py#!/usr/bin/envpython#coding:utf-8importre,osfromcollectionsimportCounter#目标文件所在目录FILE_PATH='/home/bill/Desktop'defgetCounter(articlefilesource):'''输入一个英文的纯文本文件,统计其中的单词出现的个数'''pattern=r'''[A-Za-z]+|\$?\d+%?$'''withopen(articlefilesource)asf:r=re.findall(pattern,f.read())returnCounter(r)#过滤词stop_word=['the','in','of','and','to','has','that','s','is','are','a','with','as','an']defrun(FILE_PATH):#切换到目标文件所在目录os.chdir(FILE_PATH)#遍历该目录下的txt文件total_counter=Counter()foriinos.listdir(os.getcwd()):ifos.path.splitext(i)[1]=='.txt':total_counter+=getCounter(i)#排除stopword的影响foriinstop_word:total_counter[i]=0printtotal_counter.most_common()[0][0]if__name__=='__main__':run(FILE_PATH)随便从BBC中国频道上选了几篇新闻进行测试输出:**第0007题:**有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。思路:获取目录,然后遍历目录下的代码文件,逐个统计每个文件的代码,然后最后汇总输出。0007.统计代码.py#!/usr/bin/envpython#coding:utf-8importos,re#代码所在目录FILE_PATH='/home/bill/Desktop/github/show-me-the-code'defanalyze_code(codefilesource):'''打开一个py文件,统计其中的代码行数,包括空行和注释返回含该文件总行数,注释行数,空行数的列表'''total_line=0comment_line=0blank_line=0withopen(codefilesource)asf:lines=f.readlines()total_line=len(lines)line_index=0#遍历每一行whileline_indextotal_line:line=lines[line_index]#检查是否为注释ifline.startswith(#):comment_line+=1elifre.match(\s*''',line)isnotNone:comment_line+=1whilere.match(.*'''$,line)isNone:line=lines[line_index]comment_line+=1line_index+=1#检查是否为空行elifline==\n:blank_line+=1line_index+=1print在%s中:%codefilesourceprint代码行数:,total_lineprint注释行数:,comment_line,占%0.2f%%%(comment_line*100.0/total_line)print空行数:,blank_line,占%0.2f%%%(blank_line*100.0/total_line)return[total_line,comment_line,blank_line]defrun(FILE_PATH):#切换到code所在目录os.chdir(FILE_PATH)#遍历该目录下的py文件total_lines=0total_comment_lines=0total_blank_lines=0foriinos.listdir(os.getcwd()):ifos.path.splitext(i)[1]=='.py':line=analyze_code(i)total_lines,total_comment_lines,total_blank_lines=total_lines+line[0],total_comment_lines+line[1],total_blank_lines+line[2]print总代码行数:,total_linesprint总注释行数:,total_comment_lines,占%0.2f%%%(total_comment_lines*100.0/total_lines)print总空行数:,total_blank_lines,占%0.2f%%%(total_blank_lines*100.0/total_lines)if__name__=='__main__':run(FILE_PATH)效果: