python每日一个小程序_Python 练习册,每天一个小程序

第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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值