第0000题~第0010题
第 0000 题: 将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。
from PIL import Image, ImageDraw
im = Image.open('./image/portrait.jpg')
draw = ImageDraw.Draw(im)
draw.ellipse((40, 0, 50, 10), fill=(255, 0, 0))
im.show()
im.save('new.jpg')
原图:
完成图
拓展 :
#文本:
#设置字体,simkai为楷体,字体大小40
newFont=ImageFont.truetype('simkai.ttf',40)
draw.text((200,100),'you are so good!',(255,255,0),font=newFont)
第 0001 题: 做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?
import string, random
# 激活码中的字符和数字
field = string.ascii_letters + string.digits
# 获得四个字母和数字的随机组合
def getRandom():
return "".join(random.sample(field, 4))
# 生成的每个激活码中有几组
def concatenate(group):
return "-".join([getRandom() for i in range(group)])
# 生成n组激活码
def generate(n):
return [concatenate(4) for i in range(n)]
if __name__ == '__main__':
print(generate(200))
['Muf7-vWL0-Oonp-Vsal', 'N3V2-t5K0-N7Fj-juFV' , ... ... , '9TEZ-jUzV-KG1O-09Gb']
注 : 答案不唯一 , 如有错误欢迎指正 . 多谢!
1)当文件是被调用时,__name__的值为模块名;
2)当文件被执行时,__name__的值为 ‘__main__’。
if __name__ == '__main__': 为文件的入口
第 0000 题: 将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中。
#!/user/bin/pythoon3
import pymysql
import string
import random
db = pymysql.connect(host="localhost", port=3306, user="root",
password="root", database="test", charset='utf8')
cursor = db.cursor()
cursor.execute("DROP TABLE IF EXISTS GetCode")
sql = '''create table GetCode(id int (4) NOT NULL primary key auto_increment,
code char(20) NOT NULL)
'''
cursor.execute(sql)
field = string.ascii_letters + string.digits
def get_random(num):
return "".join(random.sample(field, num))
def concatenate(num, group):
return "-".join(get_random(num) for i in range(group))
def insert_to(nums, group, num):
for i in range(nums):
codes = concatenate(num, group)
insert_sql = "INSERT INTO GetCode(code)VALUES ('%s')" % codes
cursor.execute(insert_sql)
if __name__ == "__main__":
try:
insert_to(200, 4, 4)
db.commit()
except:
db.rollback()
db.close()
第 0003 题: 将 0001 题生成的 200 个激活码(或者优惠券)保存到 Redis 非关系型数据库中。
#!/usr/bin/python
#为了实现它, 偷偷的看了一边 redis 数据库, 看到列表的语法就实现了,总体刚觉还是蛮有意思的~收获蛮大
import redis
import random
import string
r = redis.Redis(host="127.0.0.1", port=6379, db=0)
field = string.ascii_letters + string.digits
def get_random(num_in_group):
return "".join(random.sample(field, num_in_group))
def concatenate(num_for_group, num_in_group):
return "-".join(get_random(num_in_group) for i in range(num_for_group))
def insert_to(code_num, num_for_group, num_in_group):
for i in range(code_num):
r.lpush('verification', concatenate(num_for_group, num_in_group))
if __name__ == "__main__":
insert_to(200, 4, 4)
在redis查看结果:
第 0004 题: 任一个英文的纯文本文件,统计其中的单词出现的个数。
def count_words(file, word):
temp = open(file)
Str = temp.read()
num = Str.upper().count(word.upper())
print("搜索结果:有%d个[%s]" % (num, word))
temp.close()
if __name__ == '__main__':
count_words('C:\\Users\\Administrator\\Desktop\\工作\\资料\\123.txt', 'a')
# count_words(r'C:\Users\Administrator\Desktop\工作\资料\123.txt', 'a')
第 0005 题: 你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小。
from PIL import Image
import os
def new_file(new_path):
"""
创建转换后的图片目录
:param new_path: 存放新图片目录
:return: 提示信息
"""
folder = os.path.exists(new_path)
if not folder:
os.makedirs(new_path)
print("--- 成功创建新文件... ---")
else:
print("--- 已存在该文件... ---")
def resize(filename, path):
"""
存放图片
:param filename:
:param path:
:return:
"""
img = Image.open(filename)
out = img.resize((640, 1130), Image.ANTIALIAS)
f = filename.strip(".jpg")
new_name = f + "r.jpg"
try:
out.save(path + '\\' + new_name)
except Exception:
print('创建文件失败, 图片存储路径转换为原路径... ')
out.save(filename)
def get_extension():
"""
生成文件名列表
:return:
"""
for i in lists:
if os.path.splitext(i)[1] == '.jpg':
f_list.append(i)
if __name__ == '__main__':
file_path = r'C:\Users\Administrator\Desktop\picture'
new_file_path = r'C:\Users\Administrator\Desktop\new'
f_list = []
os.getcwd()
os.chdir(file_path)
lists = os.listdir(file_path)
new_file(new_file_path)
get_extension()
for k in f_list:
resize(k, new_file_path)
print('图片转换成功! 保存的路径为%s' % new_file_path)