抽奖系统-Python项目练手【1】

为了响应部分同学的学习需求,让同学们尽快的上手项目,对于Python的知识点能尽快的掌握,从今天开始,将不定期的更新一些简单的容易上手的小项目给大家学习使用。

第一个项目,就选择抽奖系统。抽奖系统顾名思义,就是有着抽奖功能的一个界面

简单构思一下,需要有的几个功能




那现在就开始做我们第一个练手项目吧!

一、随机数

首先要考虑随机数是如何生成的,这里并不困难,直接使用Python自带的random库即可,这里便简单介绍即可

python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据。

random.randint(n,m) #生成一个n到m之间的随机数
random.random()  #生成一个0到1之间的浮点数
random.uniform(n,m) #生成一个n到m之间的浮点数
random.choice([])  #从列表之间随机选取一个数

二、.json数据读取

这一功能我写的时候,因为对于Python的文件读取不太熟悉,花了一些时间去专门查了一些资料后完成的。
里面需要考虑到比如行过滤等内容,虽然说本次使用的json数据好像并不需要,不过我也加在里面,以便后续使用

import json

def load_json(path):
    lines = []  # 第一步:定义一个列表, 打开文件
    with open(path, 'r', encoding="utf-8") as f:
        for row in f.readlines():  # 第二步:读取文件内容
            if row.strip().startswith("//"):  # 第三步:对每一行进行过滤
                continue
            lines.append(row)  # 第四步:将过滤后的行添加到列表中.
    return json.loads("\n".join(lines))  # 将列表中的每个字符串用某一个符号拼接为一整个字符串,用json.loads()函数加载,这样就大功告成啦!!

def load_list(path):
    lines = []  # 第一步:定义一个列表, 打开文件
    with open(path, 'r', encoding="utf-8") as f:
        for row in f.readlines():  # 第二步:读取文件内容
            if row.strip().startswith("//"):  # 第三步:对每一行进行过滤
                continue
            lines.append(row)  # 第四步:将过滤后的行添加到列表中.
    return lines


#
# print(load_json("随机英文名.json"))

# 判断数据是否存在于json数据的value里,如果存在返回TRUE,不存在返回FALSE
def test_json(data, test_data):  # data为字典,test_data为测试数据或者查找数据
    for value in data.values():
        # print(value, end='  ')
        if test_data in value:
            return True
        else:
            return False

三、数据展示

如何展示数据呢,方法有很多种,本次项目为了方便,我使用了Python的flask框架,

新建Python空项目后,直接pip install flask安装即可

直接使用最基础的flask框架模板

# //pip install flask
# 抽奖系统
from flask import Flask, render_template
from json文件读取 import load_json, load_list
from random import randint

app = Flask(__name__)

# 读取数据
name = load_list("随机英文名.json")

# 生产随机数据
def RandomData(data):
    num = randint(2, len(data) - 3)
    # print(name[num])
    return data[num]
   
@app.route('/')
def index():
    return render_template("index01.html", name=name)
#
@app.route('/choujiang')
def choujiang():
    return render_template("index01.html", name=name, data=RandomData(name))

app.run(debug=True)

index.html代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div hidden>
    {{name}}
</div>
hallo
<br />
<a href="/choujiang">抽奖</a>
恭喜您抽到了:{{data}}
</body>
</html>

至此,整体项目完成,项目很简单,适合新手练手使用,如果有同学想继续完善,将他变成一个精美的界面,也十分欢迎去尝试,如果有中途遇到什么问题,也很欢迎私聊我一起来讨论嗷!

本次项目使用的模拟数据如下:
随机英文名.json

{
"names":
[
"Dwight Baker",
"Sam Jerry",
"Monica Dillon",
"Adelaide Garden",
"George Connor",
"Omar Maria",
"John Ackermann",
"Borg Thomas",
"Mamie Carmen",
"Jonathan Bethune",
"Edgar Bartholomew"
]
}