这两天在做Python的每日一练,感觉收获颇丰,所以来记录分享一下,一共做了三个,涉及socket,PIL,pymysql三个库,另外终于开始了Flask框架的学习,后续也会做出一些分析

第一个是一个简单的socket练习,主要就是实现两个终端之间的交互,此次原本想是服务端脚本放在虚拟机里,然后主机当作客户端实现交互,可是,所有端口都放行,防火墙也设置通过之后,还是无法实现交互,总是被拒绝连接,之后只好在一台机子上进行测试,遂成功。

下面简单记录一下这次的socket(安全套接字)的基本步骤:

首先就是要有两个端的脚本,一个server端的,一个client端的。

server端主要有以下功能:

1、设置服务端口,并与主机绑定(突然想到可能由于没有设置地址的原因导致主机无法ip访问

2、反馈信息,当客户端访问时

client端主要是以下功能:

1、向服务端发送请求访问信息

2、获取服务端反馈信息

代码仍需改善这次就不贴出了丢人了,大致实现效果如下

第二个是实现在图片的右上角添加文字,主要涉及到PIL库的一些相关模块,首先PIL是专门用于对图片进行操作的库,所以加强对其掌握还是很有必要的,闲话不多说,来看一下这个题目:

1、想要实现在图片上写文字,主要是这样一个思路,实例化一个图片对象,然后选择填充文字的字体和颜色进行填充即可

注:对于定位到右上角这样的问题,我的理解是这样的,首先一个图片的坐标,从左上角开始定位是(0,0),而偏移符合我们高中数学函数平移的规则,即左加右减原则,所以移到右上角只要在宽度的基础上减去一个值即可

下面是代码示例和最终效果截图:

  1. # -*- coding:utf-8 -*-
  2. # 每日一练:将你的 QQ 头像(或者微博头像)右上角加上红色的数字
  3. # 类似于微信未读信息数量那种提示效果。
  4. # Author : Konmu
  5.  
  6. from PIL import Image,ImageFont,ImageDraw
  7.  
  8. def Image_fill(im_file,num):
  9. im=Image.open(im_file)
  10. width,height=im.size
  11. font_type=ImageFont.truetype('C:/Windows/fonts/字酷堂海藏楷体.ttf',50)
  12. fill_color='steelblue'
  13. draw=ImageDraw.ImageDraw(im)
  14. draw.text((width-50,0),str(num),fill=fill_color,font=font_type)
  15. #图片坐标左上角开始为原点,平移符合了左加右减原则
  16. #故到达右上角即减去一个偏移量即可
  17. save_file='C:/Users/xxx/Desktop/output.jpg'
  18. im.save(save_file)
  19.  
  20. if __name__=='__main__':
  21. Image_fill('C:/Users/xxx/Desktop/少天.jpg',21)

最终效果:

第三个是实现生成20个随机激活码并保存至关联性数据库mysql中,对于python对数据库的操作俗说君也是第一次接触故而这次也是简单的学习了一下,后续还需加强练习。

分析一下这个问题,首先生成激活码这种事并不难,我们平时玩游戏时领取礼包的一些激活码可以发现大多都是一些字母和数字的组合,所以我们只要生成一些类似这样形式的字符串即可模拟出激活码的效果。剩下来就是解决他的存储问题,python中提供了pymysql库帮助我们和mysql数据库进行连接,我们这里也采用这个库来实现我们的目标。

下面先来看几个本次会用到的基本的mysql语句,其他详细的语法请自行查阅:

  1. create database test; #创建数据库
  2. create table gencode(id int auto_increment primary key,value varchar(20)); #创建数据表,id 是采用的自增长型
  3. insert into gencode(id,value) values (1,'GB0XRF2boYF2BPEp46l5') #向表中插入数据,这里要注意数据的类型
  4. drop table if exists test; #删除已存在的表

接下来看看pymysql的相关语句:

  1. db=pymysql.connect('localhost','user','password','table') #连接本地数据库,其中用户,密码和数据库填写自己的信息即可
  2. cursor=db.cursor() #创建cursor对象
  3. cursor.execute(sql) #执行相关sql语句
  4. db.commit() #提交数据到数据库
  5. db.close() #关闭数据库

下面来看看完整代码和最终效果:

  1. #!/user/bin/python3
  2. #-*-coding:utf-8 *-*
  3. #Author:konmu
  4. #生成激活码(或者优惠券),使用 Python 如何生成20个激活码(或者优惠券)?将生成的激活码(或者优惠券)保存到 MySQL 关系型数据库中。
  5.  
  6. import pymysql
  7. import random,string
  8.  
  9. def genkey():
  10. getChars = string.ascii_letters+string.digits
  11. generate = "".join([random.choice(getChars)for i in range(20)])
  12. return(generate)
  13.  
  14. def table_insert(cursor, db):
  15. for i in range(20):
  16. sql = "insert into gencode (id,value) values ({0},'{1}')".format("null", genkey())#向表中插入数据
  17. cursor.execute(sql)
  18. db.commit()
  19.  
  20. if __name__=='__main__':
  21. db = pymysql.connect("localhost", "root", "", "test")#本次测试使用的数据库是test
  22. cursor = db.cursor()#创建cursor对象
  23. cursor.execute("drop table if exists gencode")#删除gencode表如果已存在的话
  24. sql = "create table generateCodes(id int auto_increment primary key, value varchar(50))"#创建表
  25. try:
  26. cursor.execute(sql)
  27. db.commit()
  28. except:
  29. db.rollback()
  30. genkey()
  31. table_insert(cursor, db)
  32. db.close()

最终效果:

Python每日一练(1)的更多相关文章

  1. python每日一练:0007题

    第 0007 题: 有个目录,里面是你自己写过的程序,统计一下你写过多少行代码.包括空行和注释,但是要分别列出来. # -*- coding:utf-8 -*- import os def count ...

  2. [python每日一练]--0012:敏感词过滤 type2

    题目链接:https://github.com/Show-Me-the-Code/show-me-the-code代码github链接:https://github.com/wjsaya/python ...

  3. Python 每日一练 | Flask 实现半成品留言板

    留言板Flask实现 引言 看了几天网上的代码,终于写出来一个半成品的Flask的留言板项目,为什么说是半成品呢?因为没能实现留言板那种及时评论刷新的效果,可能还是在重定向上有问题 或者渲染写的存在问 ...

  4. Python 每日一练(5)

    引言 Python每日一练又开始啦,今天的专题和Excel有关,主要是实现将txt文本中数据写入到Excel中,说来也巧,今天刚好学校要更新各团支部的人员信息,就借此直接把事情做了 主要对于三种数据类 ...

  5. Python 每日一练(4)

    引言 今天继续是python每日一练的几个专题,主要涵盖简单的敏感词识别以及图片爬虫 敏感词识别 这个敏感词的识别写的感觉比较简单,总的概括之后感觉功能可以简略成if filter_words in ...

  6. Python 每日一练(3)

    引言 今天的每日一练,学习了一下用Python生成四位的图像验证码,就是我们常常在登录时见到的那种(#`O′) 思路分析 正如常见的那种图像验证码,它是由数字和字母的随机组合产生的,所以我们首先的第一 ...

  7. Python 每日一练(2)

    引言 我又双叒叕的来啦,新博客的第二篇文章,这次是继之前公众号上每日一练的第二个,这次是专题实对于文件的一些处理的练习 主要有以下几类: 1.实现英文文章字频统计 2.统一剪裁某一指定目录下的所有图片 ...

  8. Python每日一练(1):计算文件夹内各个文章中出现次数最多的单词

    #coding:utf-8 import os,re path = 'test' files = os.listdir(path) def count_word(words): dic = {} ma ...

  9. Python 每日一练(7)

    引言 今天的练习比较轻松,原本是有两题的,但是第一题那个大致看了一下,其实和之前的6个练习差不多,就是把xls中的文件数据读取出来后,进行一下处理,对于那题而言就是一个求和操作,所以就没练了,所以今天 ...

随机推荐

  1. csp-j2019游记

    我一pj蒟蒻这点水平还来写游记? 算了,毕竟是第一次,记录一下吧 noip->csp 话说我跟竞赛是不是天生八字不合啊...... 小学的时候学小奥,等我开始报名比赛,当时似乎所有竞赛都被叫停了 ...

  2. 题目分享D 二代目

    题意:给定一个T条边的无向图,求S到E恰好经过N条边的最短路径 T≤100 N≤1000000 分析:(据说好像假期学长讲过) 首先很容易想到的是dp[i][j][k]表示从i到j经过k条边的最短路径 ...

  3. java权限设计思考

    1.粗粒度权限设计与细粒度权限设计             粗粒度(Coarse-graind)        表示类别级,即仅考虑对象的类别(the   type   of   object),不考 ...

  4. Programming Languages_05 FWAE

    FWAE : Concrete syntax <FWAE> ::= <num> | {+ <FWAE> <FWAE>} | {- <FWAE> ...

  5. Coursera课程笔记----Write Professional Emails in English----Week 4

    Request and Apology Emails(Week 4) How to Write Request Emails Write more POLITELY & SINCERELUY ...

  6. Viterbi-Algorithm(维特比)算法

    CSDN博客:皮乾东  知乎:Htrying  微博:Htring的微博  微信公众号:自然语言处理爱好者(ID:NLP_lover)  文章来自:<数学之美> Viterbi-Algor ...

  7. 风扇转速通过FPGA采样

    1.风扇最大转速16000RPM,那么每一转需要时间60S/16000=0.00375S=375*10^4ns=T=T1+T2+T3+T4: 2.采样0.6S内的风扇detect信号的上升沿个数:0. ...

  8. 华为的快服务智慧平台是牛皮还是牛B?

    华为快服务智慧平台是牛皮还是牛B?   来到快服务论坛专区的老铁们想必对快服务有一定的了解,那么作为华为快服务统一接入分发核心的华为快服务智慧平台是怎样的存在呢?想必带着眼睛阅读的小伙伴都已经看出来了 ...

  9. JTextpane 添加行号

    最近项目需求,需要在JTextPane上添加行号等信息,网上找了好久只找到JTextArea添加行号信息,copy网上的程序研究了下,发现自己改改就可以让JTextPane显示行号! 代码: pack ...

  10. java ->IO流_字节流

    字节流 在前面的学习过程中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现在我们就要开始给文件中写数据,或者读取文件中的数据. 字节输出流OutputStream OutputStre ...