您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > python26个练习题及代码-3、4、5
**第0000题:**将你的QQ头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。类似于图中效果例1:#-*-coding:UTF-8-*-addbyzxlfromPILimportImage,ImageDraw,ImageFont,ImageColor#defadd_num(img):#创建一个Draw对象draw=ImageDraw.Draw(img)#创建一个Font#myfont=ImageFont.truetype('C:/windows/fonts/Arial.ttf',size=40)myfont=ImageFont.truetype('arial.ttf',size=40)#changebyzxl字体ImageFont方法fillcolor=ImageColor.colormap.get('red')#颜色ImageColor方法width,height=img.size#Image方法#draw.text((width-30,0),'1',font=myfont,fill=fillcolor)draw.text((width-10,0),'1',font=myfont,fill=fillcolor)#ImageDraw方法img.save('width-10.jpg','jpeg')#Image方法return0if__name__=='__main__':image=Image.open('test.jpg')#Image方法add_num(image)例2:使用方法:执行py,将根目录下的目标文件logo.jpg右上角加上红色数字后输出到根目录的output.jpg文件中0000.图片右上角加数字.py#!/usr/bin/envpython#coding:utf-8myPath=/home/bill/Desktop/fontPath=/usr/share/fonts/truetype/ttf-devanagari-fonts/inputFile=logo.jpgoutputFile=output.jpgimportImage,ImageFont,ImageDraw#打开图片im=Image.open(myPath+inputFile)draw=ImageDraw.Draw(im)#根据图片大小确定字体大小fontsize=min(im.size)/4#加文字font=ImageFont.truetype(fontPath+'kalimati.ttf',fontsize)draw.text((im.size[0]-fontsize,0),'5',font=font,fill=(256,0,0))im.save(myPath+outputFile,jpeg)**第0001题:**做为AppleStoreApp独立开发者,你要搞限时促销,为你的应用**生成激活码**(或者优惠券),使用Python如何生成200个激活码(或者优惠券)?例1:#-*-coding:UTF-8-*-addbyzxldefgen_code(length=8):将0~9,a~z,A~Z保存到list中,用random.sample从list中取固定位数code_list=[]foriinrange(10):code_list.append(str(i))#printiforiinrange(65,91):code_list.append(chr(i))#printchr(i)foriinrange(97,123):code_list.append(chr(i))myslice=random.sample(code_list,length)veri_code=''.join(myslice)returnveri_code例2:#!/usr/bin/envpython#coding:utf-8importstring,random#激活码中的字符和数字field=string.letters+string.digits#获得四个字母和数字的随机组合defgetRandom():return.join(random.sample(field,4))#生成的每个激活码中有几组defconcatenate(group):return-.join([getRandom()foriinrange(group)])#生成n组激活码defgenerate(n):return[concatenate(4)foriinrange(n)]if__name__=='__main__':printgenerate(200)生成的大概是这样子的:**第0002题:**将0001题生成的200个激活码(或者优惠券)保存到**MySQL**关系型数据库中。例1:importmysql.connectordefactivationcode2sql():#打开数据库连接db=mysql.connector.connect(user='root',password='root',host='localhost',database='words')#使用cursor()方法创建一个cursor对象,来管理查询cur=db.cursor()#使用execute()方法执行SQL,如果存在则删除cur.execute(droptableifexistsact_code)#使用预处理创建表cur.execute(createtableact_code(idintauto_incrementprimarykey,codevarchar(10)))f=open('Activation_code.txt')forlineinf.readlines():cur.execute(insertintoact_code(code)values('%s'),line.strip())f.close()cur.close()if__name__=='__main__':activationcode2sql()例2:步骤:首先安装MySQLdb,用pip安装即可然后了解下MySQLdb的操作在代码中引入该库连接数据库,写入数据,关闭连接0002.MySQL操作.py#!/usr/bin/envpython#coding:utf-8importMySQLdbimportgennerate_codeHOST='localhost'USER='root'PASSWORD='000ooo'PORT=3306DB='python'#连接数据库conn=MySQLdb.connect(host=HOST,user=USER,passwd=PASSWORD,db=DB,port=PORT)cur=conn.cursor()#生成200组激活码codelist=gennerate_code.generate(200)#将生成的激活码插入到表中foriinxrange(200):sql='INSERTINTOcode(code)VALUES(\'%s\')'%codelist[i]cur.execute(sql)conn.commit()cur.close()conn.close()其中gennerate_code是PythonShow-Me-the-Code第0001题生成激活码中的代码**第0003题:**将0001题生成的200个激活码(或者优惠券)保存到**Redis**非关系型数据库中。跟0002题相似,只不过是把关系型数据库换成了非关系型数据库。步骤:首先安装Redis和库,用pip安装即可打开radisserver然后了解下Redis的操作在代码中引入该库连接数据库,写入数据,保存Python连接redis很方便,操作也跟redis-cli差不多。因为生成的激活码应该是不重复的,所以我选择用set这个数据结构保存redis的set数据类型常用操作有:saddkeymember往集合中key插入成员member,返回实际插入的成员smemberskey获取与该key关联的set中所有的成员。sismemberkeymember检查member是否是集合key中的成员是的话返回1scardkey获取key中成员的数量0003.Redis操作.py#!/usr/bin/envpython#coding:utf-8importredisimportgennerate_codeHOST='localhost'PORT=6379#连接到数据库r=redis.Redis(HOST,PORT)#生成200组激活码codelist=gennerate_code.generate(200)#将生成的激活码存入数据库中foriinxrange(200):r.sadd(code,codelist[i])r.save()中gennerate_code是PythonShow-Me-the-Code第0001题生成激活码中的代码**第0004题:**任一个英文的纯文本文件,统计其中的单词出现的个数。思路:用正则表达式匹配响应的单词和数字,然后让Counter计算单词的词频,再用most_common方法返回一个按照词频排序的包含该词语和该词语出现的次数的元组的列表。0004.统计单词.py#!/usr/bin/envpython#coding:utf-8importrefromcollectionsimportCounterFILESOURCE='/home/bill/Desktop/testarticle'defgetMostCommonWord(articlefilesource):'''输入一个英文的纯文本文件,统计其中的单词出现的个数'''pattern=r'''[A-Za-z]+|\$?\d+%?$'''withopen(articlefilesource)asf:r=re.findall(pattern,f.read())returnCounter(r).most_common()if__name__=='__main__':printgetMostCommonWord(FILESOURCE)其中的文章是随便从BBC上选的一篇新闻**第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(
本文标题:python26个练习题及代码-3、4、5
链接地址:https://www.777doc.com/doc-4209736 .html