失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python做一个简单的抽奖程序

Python做一个简单的抽奖程序

时间:2022-03-12 22:03:10

相关推荐

Python做一个简单的抽奖程序

今天刚上班,女朋友给我来了个需求,她需要一个抽奖程序,需求如下:

1、要一个抽奖程序,输入为很多图片,输出为随机选出几张符合要求的图片

2、简单快速,不用界面也行,她早上就要

我只是一个小小的码农,怎么会做如此高大上的东西,我甚至于一口回绝。她抛出了极具诱惑性的条件,晚饭多加一瓶可乐。啥,这么看不起我,就一瓶可乐,呵呵,年轻人不讲武德,耗子尾汁。她又说,再加五块,接不接。好了,我接,这个需求必须接。倒不是看上了那五块钱,毕竟钱财乃身外之物,我也视金钱如粪土,嗯,真香。

思路:

1、她要的紧急,用Python写,也方便。

2、整个目录下分为了三个部分,①输入的图片文件夹,不能让她手动输入,她会杀了我的。②输出的图片文件夹,也就是随机选出的结果。③脚本文件和配置文件xml

3、程序初始化,读取配置文件中的输入文件夹和输出文件夹的名字,并且清空输出文件夹,因为可能程序会多次运行。

4、主体程序代码异常简单,就是一个random而已。

工程截图:

end_pic -> 脚本程序随机选出的文件的放置目录,拷贝一份放到end_pic

pictures -> 要随机的所有图片的放置目录

choujiang.py -> 抽奖脚本代码

config.xml -> 配置文件

直接看吧,翠花,上酸菜

1、先给pictures里放好多好多图

2、config.xml

<?xml version="1.0" ?><config><path>pictures</path><end_pic>end_pic</end_pic></config>

3、choujiang.py 原谅我拼音命名大法

# -*- coding: UTF-8 -*-import randomimport ctypesimport timeimport osfrom xml.dom.minidom import parseimport datetimeimport shutilpicture_list = []path = ''end_pic = 'end_pic'luck_num = 2 #抽出几张图片 最好数量远小于抽奖池def build_path(args) :end_path = os.getcwd()for arg in args :end_path = end_path + '\\' + argreturn end_pathdef init_pic() :end_path = build_path([path])g = os.walk(end_path)for _,_,filelist in g :for filename in filelist:if filename.endswith('jpg'):picture_list.append(filename)if picture_list :return True, end_pathreturn False, None#随机图片def random_pic_index() :return picture_list[random.randint(0, len(picture_list)-1)]#读XML配置def read_xml() :doc = parse('./config.xml')root = doc.documentElementglobal path, random_timepath = root.getElementsByTagName('path')[0].firstChild.dataend_pic = root.getElementsByTagName('end_pic')[0].firstChild.data#清空目标文件夹def clear_end_pic() :path = os.getcwd() + '\\' + end_pic#print ('======%s' %str(path))for file in os.listdir(path) :file_data = path + '\\' + fileif os.path.isfile(file_data) :#print(file_data)os.remove(file_data)def main() :read_xml()flag, end_path = init_pic()if not flag or not end_path :print('Init error, not have pictures(filename with .jpg)')exit (1)clear_end_pic()#给随机数一个种子random.seed(int(time.time()))luck_filenames = []#可能会有重复的 多跑十次,还有重复就算了for i in range(0, luck_num+10) :filename = random_pic_index()if filename in luck_filenames :continueluck_filenames.append(filename)print('%s picture: %s' %(datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S'), filename))#拷贝文件shutil.copyfile(end_path+'\\'+filename, os.getcwd()+'\\'+end_pic+'\\'+filename)if len(luck_filenames) >= luck_num :breakinput('Please enter and then exit!!!')main()

在Python3环境下,运行脚本choujiang.py,运行后截图如下:

end_pic文件夹下会拷贝一份已经选出的图片:

一切搞定,五块钱到手~~~~

如果觉得《Python做一个简单的抽奖程序》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。