Day21.Python项目案例

Day.21天 python项目

学前分享:

很高兴大家坚持21天,

这里为大家分享一些常用有趣的案例(源码也有哦)

21天,

从入门到上手,

为坚持加油的自己点个赞吧。

 项目实操
     1、批量修改文件名
     2、发送邮件        --- 打卡领取 可配置。
     3、批量合成头像图片
     4、股票查询程序开发 --- 打卡领取
     5、抽奖程序(源码奉献)
         - 页面顺时针抽奖
         - 滚动抽奖

0、价值2亿的人工智能对话代码

 # !/usr/bin/env python
 # -*- coding:utf-8 -*-
 while True:
     print(input().strip("吗??")+"!")

1、Python批量修改文件名

 
 #!/usr/bin/env python
 # -*- coding:utf-8 -*-
 __author__ = 'JackFeng'
 
 #批量修改文件名
 #批量修改图片文件名
 #功能
     #以批量修改某文件夹下所有图片名称为例
     # 注释超详细,万能模板,读者可举一反三,适当修改模板,效果显著!
 
 import  os
 import sys
 import re
 
 def renameall():
     #filelist = os.listdir(r"文件所在路径") #待修改文件夹
     filelist = os.listdir(r"C:\\Users\\66860\\Desktop\\测试文件")
     print("修改前"+str(filelist)) #输出文件夹中包含的文件
     currentpath = os.getcwd() #得到进程当前工作目录
     os.chdir(r"C:\\Users\\66860\\Desktop\\测试文件")  #将当前工作目录修改为待修改文件夹的位置
 
     a=input("请输入你要更改的名称:" )
     num = 1  # 名称变量
     print(a)
     for fileName in filelist: #遍历文件夹中所有文件
         pat=".+\.(pdf|PDF)" #匹配文件名正则表达式 # 此处为修改pdf案例,故使用pdf格式
         pattern = re.findall(pat,fileName) #进行匹配
         # print(pattern)
         os.rename(fileName,(str(a)+str(num)+'.'+pattern[0])) #文件重命名
         num += 1 # 改变编号,继续下一项
         # os.rename(fileName, (str(a) + '.' + pattern[0]))
     print("=========---风-阶-限---===========")
     os.chdir(currentpath) #改回程序运行前的工作目录
     sys.stdin.flush() #刷新
     print("修改后:"+str(os.listdir(r"C:\\Users\\66860\\Desktop\\测试文件"))) #输出修改后文件夹中包含的文件
     print("==========--修改完成--===========")
 renameall()
 
 

3、批量合成头像

 
 #!/usr/bin/env python
 # -*- coding:utf-8 -*-
 __author__ = 'JackFeng'
 
 # @Time    : 2020/5/18 10:14
 # @Author  : JackFeng
 # @FileName: Photo.py
 # @Software: PyCharm
 # @Blog    :http://www.a2data.cn/
 
 import PIL.Image as Image
 import os
 
 
 # 定义初始图片的位置
 x = 0
 y = 0
 
 # 获取下载的头像文件
 curr_dir = "D://"
 ls = os.listdir(curr_dir + '1')
 print(ls)
 
 # 设定好友微信墙尺寸 Image.new() 方法。
 image = Image.new("RGB", (600, 600))
 
 # 打开微信好友图片  Image.open() 方法。
 # img = Image.open(r"D:/1/1.png")
 
 # 将微信头像重置为小图 使用 img.resize() 方法
 # img = img.resize((50, 50), Image.ANTIALIAS)
 
 #将照片 黏贴到我们的微信墙中  使用 image.paste() 方法。
 # image.paste(img, (x * 50, y * 50))
 
 #最后将制作完成的照片墙保存下来,使用 image.save() 方法。
 # img = image.save("D:\\1\\WeChat_Friends.jpg")
 
 
 
 # 遍历文件夹的图片
 for file_names in ls:
     print(file_names)
     try:
         # 依次打开图片
         img = Image.open(curr_dir + "1/" + file_names)
         print(img)
     except IOError:
         continue
     else:
         # 重新设置图片的大小
         img = img.resize((150, 150), Image.ANTIALIAS)
         # 将图片粘贴到最终的照片墙上
         image.paste(img, (x * 100, y * 150))
         # 设置每一行排13个图像
         x += 1
         if x == 6:
             x = 0
             y += 1
 # 保存图片为WeChat_Friends.jpg
 img = image.save(curr_dir + "WeChat_Friends.jpg")
 

4、抽奖中书籍

Day21.Python项目案例_第1张图片

 #!/usr/bin/env python 
# -*- coding:utf-8 -*-
__author__ = 'Jack'
# @Time    : 2019/8/22 11:07
# @Author  : JackFeng
# @Software: PyCharm
# @Blog    :http://www.a2data.cn/
 

 class Luckgame:
     # 导入弹窗模块
     import tkinter.messagebox as mbox
     # 导入tkinter
     import tkinter as tk
     # 导入线程模块
     import threading
     import time
     def __init__(self):
         self.window = self.tk.Tk()
         self.window.title('DataScience-幸运抽奖')
         self.window.minsize(330, 330)
 
         # 设置初始变量
         # 设置界面
         self.set_label_btn()
         # 设置菜单
         self.set_menu()
         # 奖品列表
         self.gifts = [self.lab1, self.lab2, self.lab3, self.lab4, self.lab5, self.lab6, self.lab7, self.lab8, self.lab9,
                       self.lab10, self.lab11, self.lab12]
         # #是否开启循环的标志
         # self.isloop = False
         # 是否终止转盘
         self.run_flag = False
 
         self.window.mainloop()
 
     # 设置菜单
     def set_menu(self):
         # 创建总菜单
         menubar = self.tk.Menu(self.window)
         # 创建一个下拉菜单,并且加入文件菜单
         filemenu = self.tk.Menu(menubar, tearoff=0)
         # 创建下来菜单的选项
         filemenu.add_command(label="退出游戏", command=self.window.quit)
 
         # print author的函数
         def show_author():
             self.mbox.showinfo(title='微信公众平台:DataScience', message='DataScience:Ai_Craziest')
 
         filemenu.add_command(label="作者", command=show_author)
         # 将文件菜单作为下拉菜单添加到总菜单中,并且将命名为操作
         menubar.add_cascade(label="操作", menu=filemenu)
         # 显示总菜单
         self.window.config(menu=menubar)
 
     def set_label_btn(self):
         self.lab1 = self.tk.Label(self.window, text='原则', bg='red')
         self.lab1.place(x=20, y=20, width=60, height=60)
 
         self.lab2 = self.tk.Label(self.window, text='Hive\n编程指南', bg='white')
         self.lab2.place(x=90, y=20, width=60, height=60)
 
         self.lab3 = self.tk.Label(self.window, text='IDEA\n操作手册', bg='white')
         self.lab3.place(x=160, y=20, width=60, height=60)
 
         self.lab4 = self.tk.Label(self.window, text='MySql\n必知必会', bg='white')
         self.lab4.place(x=230, y=20, width=60, height=60)
 
         self.lab5 = self.tk.Label(self.window, text='SQL\nCook', bg='white')
         self.lab5.place(x=230, y=90, width=60, height=60)
 
         self.lab6 = self.tk.Label(self.window, text='Python\nCook', bg='white')
         self.lab6.place(x=230, y=160, width=60, height=60)
 
         self.lab7 = self.tk.Label(self.window, text='Python\n机器学习', bg='white')
         self.lab7.place(x=230, y=230, width=60, height=60)
 
         self.lab8 = self.tk.Label(self.window, text='Python\n机器实训', bg='white')
         self.lab8.place(x=160, y=230, width=60, height=60)
 
         self.lab9 = self.tk.Label(self.window, text='大数据\n面试题', bg='white')
         self.lab9.place(x=90, y=230, width=60, height=60)
 
         self.lab10 = self.tk.Label(self.window, text='机器学习\n个人笔记', bg='white')
         self.lab10.place(x=20, y=230, width=60, height=60)
 
         self.lab11 = self.tk.Label(self.window, text='数据挖掘\n概念与技术', bg='white')
         self.lab11.place(x=20, y=160, width=60, height=60)
 
         self.lab12 = self.tk.Label(self.window, text='Handbook\n(原版)', bg='white')
         self.lab12.place(x=20, y=90, width=60, height=60)
 
         # 开始按钮
         self.btn_go = self.tk.Button(self.window, text='开始', command=self.start_stak)
         self.btn_go.place(x=90, y=125, width=50, height=50)
         # 停止按钮
         self.btn_stop = self.tk.Button(self.window, text='结束', command=self.stop_run)
         self.btn_stop.place(x=160, y=125, width=50, height=50)
 
     def run_gifts(self):
         # while循环计数用变量i
         i = 0
         # 循环所有label,依次改变label的颜色,将其变为红色
         while True:
             if self.run_flag:
                 self.mbox.showinfo(title='感谢您对我的关注,温馨提示', message='DataScience:恭喜您获得:' + self.gifts[i - 1]['text'] + '电子版书籍')
                 self.mbox.showinfo(title='如果对您有帮助,请点赞分享', message='请前往微信公众号:DataScience,领取属于您的奖品!!!')
                 self.mbox.showinfo(title='如果对您有更多需要,请将此文分享到朋友圈', message='保留三小时以上截图哦,发送致DataScience后台,那么您可获取任意三本!!')
                 self.mbox.showinfo(title='本公众号第一次小互动,感谢您的参与', message='谢谢您的参与,下期有你更精彩!!')
                 # 是否循环转盘参数重置
                 self.run_flag = False
                 return
             try:
                 # 添加一个延时操作
                 self.time.sleep(0.1)
                 # 循环所有label,将所有label的颜色变为白色
                 for v in self.gifts:
                     v['bg'] = 'white'
                 self.gifts[i]['bg'] = 'red'
                 i += 1
                 # label组件计数归零
                 if i >= len(self.gifts):
                     i = 0
             except:
                 pass
 
     def stop_run(self):
         self.run_flag = True
 
     # 开启线程,单独跑一个循环的函数
     def start_stak(self):
         # 新建线程
         tread = self.threading.Thread(target=self.run_gifts)
         # 开始线程
         tread.start()
         # #打开循环线程的标志
         # self.isloop = True
 
 
 # 调用Luckgame游戏对象
 nsf = Luckgame()
 
 

5、滚动抽奖篇

Day21.Python项目案例_第2张图片

 
 #!/usr/bin/env python
 # -*- coding:utf-8 -*-
 __author__ = 'Jack'
 
 # @Time    : 2020/6/22 11:07
 # @Author  : JackFeng
 # @FileName: Lotto.py
 # @Software: PyCharm
 # @Blog    :http://www.a2data.cn/
 
 
 import sys
 if sys.version_info[0] == 2:
     import Tkinter
     from Tkinter import *
 else:
     import tkinter as Tkinter
     from tkinter import *
 import random
 
 data = ['Kath', '大枫', 'Jack', 'Shon','DuRuo']
 going = True
 is_run = False
 
 
 def lottery_roll(var1, var2):
     global going
     show_member = random.choice(data)
     var1.set(show_member)
     if going:
         window.after(50, lottery_roll, var1, var2)
     else:
         var2.set('恭喜 {} !!!'.format(show_member))
         going = True
         return
 
 
 def lottery_start(var1, var2):
     global is_run
     if is_run:
         return
     is_run = True
     var2.set('幸运儿是你吗。。。')
     lottery_roll(var1, var2)
 
 
 def lottery_end():
     global going, is_run
     if is_run:
         going = False
         is_run = False
 
 
 if __name__ == '__main__':
     window = Tkinter.Tk()
     window.geometry('405x320+250+15')
     window.title('   DataScience   滚 动 抽 奖 器')
 
     bg_label = Label(window, width=70, height=24, bg='#ECf5FF')
     bg_label.place(anchor=NW, x=0, y=0)
 
     var1 = StringVar(value='即 将 开 始')
     show_label1 = Label(window, textvariable=var1, justify='left', anchor=CENTER, width=17, height=3, bg='#BFEFFF',
                         font='楷体 -40 bold', foreground='black')
     show_label1.place(anchor=NW, x=21, y=20)
     var2 = StringVar(value='幸运儿是你吗。。。')
     show_label2 = Label(window, textvariable=var2, justify='left', anchor=CENTER, width=38, height=3, bg='#ECf5FF',
                         font='楷体 -18 bold', foreground='red')
     show_label2.place(anchor=NW, x=21, y=240)
 
     button1 = Button(window, text='开始', command=lambda: lottery_start(var1, var2), width=14, height=2, bg='#A8A8A8',
                      font='宋体 -18 bold')
     button1.place(anchor=NW, x=20, y=175)
     button2 = Button(window, text='结束', command=lambda: lottery_end(), width=14, height=2, bg='#A8A8A8',
                      font='宋体 -18 bold')
     button2.place(anchor=NW, x=232, y=175)
 
     window.mainloop()
 

往期推荐

Day20.python操作数据库

Day19.python时间和日期

Day18.python文件/目录

Day17.String字符串处理库

Day16.文件的处理

Day15.异常的处理

Day14.模块&包

Day13.继承&多态

Day12.魔法方法&方法重写

Day11.类和对象这回事儿

Day10.高阶函数介绍

Day9.函数进阶

Day8.函数那些事儿

Day7.数据类型-集合

Day6.数据类型-字典

Day5.布尔&元组&字符串大合集

Day4.数据类型-列表

Day3.判断&循环语句

Day2.不就是运算符吗!

Day1.基本操作与格式规范

学Python的正确方式,100%有用!

昨天 今天 明天

前者为鉴

把握现在

开创未来

  认识Python 2020.09.01

哎呦,我会文件处理咯 2020.09.18

2020.08.30 Python环境

2020.09.09 函数那些事

2020.09.23 操作一波数据库

恭喜完课

DATA SCIENCE

点个在看,你最好看

你可能感兴趣的:(python,软件测试,epoll,qt,信号处理)