python_flask网站搭建

html相当于骨架;css相当于外貌;link是引入css标签的;script相当于思想;body相当于内容

flask 官方文档: http://docs.jinkan.org/docs/flask/  

http请求: 协议://域名或ip/path

1、flask最小应用:

from flask import Flask

#创建一个网站
app = Flask(__name__)

#路径处理
@app.route("/")
def index():
    return "qunce测试开发平台!"
#路径+html网页
@app.route("/test")
def test():
    return "<html><head><title>群测平台</title></head><body><h1>snailquan测试</h1>" \
           "<h2>snailquan测试2</h2>" \
           "<h3>snailquan测试3</h3>" \
           "</body></html>"
app.run(
    #任意主机都能访问
    host='0.0.0.0',
    port=8888,
    #修改不需要重启
    debug=True,
)

2、flask带参数实例:

http://127.0.0.1:8888/debug/aaaa

from flask import Flask

#创建一个网站
app = Flask(__name__)

#路径处理
@app.route("/")
def index():
    return "qunce测试开发平台!"
#路径+html网页
@app.route("/debug/<name>")
def test(name):
    return "<html><head><title>群测平台</title></head><body><h1>"+ name +"测试</h1>" \
           "<h2>"+ name +"测试</h2>" \
           "<h3>"+ name +"测试</h3>" \
           "</body></html>"

app.run(
    #任意主机都能访问
    host='0.0.0.0',
    port=8888,
    #修改不需要重启
    debug=True,
)

3、引入request实现浏览器的请求传参,实现a+b

http://127.0.0.1:8888/add?a=1&b=2

from flask import Flask
from flask import request

#创建一个网站
app = Flask(__name__)

#路径处理
@app.route("/")
def index():
    return "qunce测试开发平台!"
#路径+html网页
@app.route("/debug/<name>")
def test(name):
    return "<html><head><title>群测平台</title></head><body><h1>"+ name +"测试</h1>" \
           "<h2>"+ name +"测试</h2>" \
           "<h3>"+ name +"测试</h3>" \
           "</body></html>"

#引入request实现a+b
@app.route("/add", methods=['GET', 'POST'])
def add():
    data =  request.values.to_dict()
    return str(float(data['a']) + float(data['b']))

app.run(
    #任意主机都能访问
    host='0.0.0.0',
    port=8888,
    #修改不需要重启
    debug=True,
)

postman测试:

注:如果是form请求,那么post只能在body中传参,并且不支持get请求;

data = request.form.to_dict()

注:args请求跟values一致,是从url中取参数的。args取不到post请求的参数。

values相当于form和args的结合体

data = request.args.to_dict()

4、====扑克牌练习

from flask import Flask
from flask import request
import random
import os

#创建一个网站
app = Flask(__name__)

#路径处理
@app.route("/")
def index():
    return "qunce测试开发平台!"
#路径+html网页
@app.route("/debug/<name>")
def test(name):
    return "<html><head><title>群测平台</title></head><body><h1>"+ name +"测试</h1>" \
           "<h2>"+ name +"测试</h2>" \
           "<h3>"+ name +"测试</h3>" \
           "</body></html>"

#引入request实现a+b
@app.route("/add", methods=['GET', 'POST', 'DELETE'])
def add():
    print(request.method)
    if request.method == 'GET':
        data =  request.args.to_dict()
    elif request.method == 'POST':
        data = request.form.to_dict()
    else:
        data = request.values.to_dict()
    return str(float(data['a']) + float(data['b']))

#扑克牌练习
http://127.0.0.1:8888/poker1
http://127.0.0.1:8888/poker
@app.route("/poker")
def poker():
    type = random.choice(["black","cube", "plum", "red", "damao", "xiaomao"])
    number = random.randint(1, 13)
    #number = str("%02d"% number)
    number = str('{0:02}'.format(number))
    print(type)
    print(number)
    if type == "damao":
        poker = 'static/poker/damao.jpg'
    elif type =="xiaomao":
        poker = 'static/poker/xiaomao.jpg'
    else:
        poker = 'static/poker/' + type +'_'+ number + '.jpg'
    print(poker)
    return "<html><head><title>群测平台</title></head><body><h1>扑克牌随机生成</h1>" \
           "<img src = "+ poker +" ></body></html>"

@app.route("/poker1")
def poker1():
    #注文件路径都要改为/
    pokers = os.listdir("D:/zidonghua/python/0804flask/static/poker")
    poker = random.choice(pokers)
    poker = 'static/poker/'+ poker
    return "<html><head><title>群测平台</title></head><body><h1>扑克牌随机生成</h1>" \
           "<img src = " + poker + " ></body></html>"

app.run(
    #任意主机都能访问
    host='0.0.0.0',
    port=8888,
    #修改不需要重启
    debug=True,
)

5、扑克牌练习,采用html模板的方式:

from flask import Flask
from flask import request
import random
import os
from flask import render_template

#创建一个网站
app = Flask(__name__)
@app.route("/zhajinhua")
def zha_jin_hua():
    # 注文件路径都要改为/
    pokers = os.listdir("D:/zidonghua/python/0804flask/static/poker")
    poker = random.choice(pokers)
    return render_template("poker.html", poker=poker)


app.run(
    #任意主机都能访问
    host='0.0.0.0',
    port=8888,
    #修改不需要重启
    debug=True,
)

---pocker.html---

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>炸金花</title>
</head>
<body>
    <img src = "static/poker/{{poker}}"/>
</body>
</html>

----------------------------------------------------------------------------------------------------------------------------------------------

6、实现一个炸金花游戏

´访问http://localhost:8888/game随机获取一张扑克牌。

´豹子(炸弹):三张点相同的牌。例:AAA222

´顺金(同花顺、色托):花色相同的顺子。例:黑桃456、红桃789。最大的顺金为花色相同的JQK,最小的顺金为花色相同的123

´金花(色皮):花色相同,非顺子。例:黑桃368,方块145

´顺子(拖拉机):花色不同的顺子。例:黑桃5红桃6方块7。最大的顺子为花色不同的QKA,最小的顺子为花色不同的123

´对子:两张点数相同的牌。例:223334

´单张:三张牌不组成任何类型的牌。

jinjia2中文地址:http://docs.jinkan.org/docs/jinja2/

1.moke出要展示的形态;

from flask import Flask
from flask import request
import random
import os
from flask import render_template
#创建一个网站
app = Flask(__name__)
@app.route("/game")
def game():
    # 注文件路径都要改为/
    pokers = os.listdir("D:/zidonghua/python/0804flask/static/poker")
    poker = random.choice(pokers)
    user = {
        "player1": ["black_01.jpg", "black_02.jpg", "black_02.jpg"],
        "player2": ["cube_01.jpg", "plum_01.jpg", "red_01.jpg"],
        "winner": 2
    }
    return render_template("poker.html", user=user)


app.run(
    #任意主机都能访问
    host='0.0.0.0',
    port=8888,
    #修改不需要重启
    debug=True,
)

------poker.html----

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>炸金花</title>
</head>
<body>
<!--显示牌的信息
    {{user.player1}}
    {{user.player2}}
    {{user.winner}}
    <br>
-->
<!--显示出每一张牌-->
    {% for poker in user.player1 %}
        <img src = "static/poker/{{poker}}"/>
    {% endfor %}
    <br>
    {% for poker in user.player2 %}
        <img src = "static/poker/{{poker}}"/>
    {% endfor %}
    <br>
    <h1>{{user.winner}}</h1>
</body>
</html>

-----------------------------

----------------------------------------------------poker.py-------------------------------------------------------------------------------------

import random
class Poker(object):
    def __init__(self):
        self.data = list(range(0,52))
        self.player1 = []
        for i in range(0, 3):
            poker = self.deal()
            self.player1.append({
                'color': poker[0],
                'value': poker[1]
            })
        self.player2 = []
        for i in range(0, 3):
            poker = self.deal()
            self.player2.append({
                'color': poker[0],
                'value': poker[1]
            })

      #发牌
    def deal(self):
        data = random.choice(self.data)
        index = self.data.index(data)
        self.data.pop(index)
        if data < 13:
            color = 'black'
            value = data %13 +1
            if value == 1:
                value = 14
        elif data < 26:
            color = 'red'
            value = data %13 +1
            if value ==1:
                value = 14
        elif data < 39:
            color = 'plum'
            value = data % 13 +1
            if value ==1:
                value =14
        elif data < 52:
            color = 'cube'
            value = data % 13 +1
            if value ==1:
                value =14
        return color, value

    #获取牌值
    def get_value(self, player):
        value = []
        for poker in player:
            value.append(poker['value'])
        return value
    #获取牌的颜色
    def get_color(self, player):
        color = []
        for poker in player:
            color.append(poker['color'])
        return color

    #判断是否是豹子
    def is_baozi(self, player):
        data = self.get_value(player)
        if data[0] == data[1] == data[2]:
            return True
        else:
            return False

    #判断顺金
    def is_shunjin(self, player):
        if self.is_jinhua(player) and self.is_shunzi(player):
            return True
        else:
            return False

    #判断金花
    def is_jinhua(self, player):
        data = self.get_color(player)
        if data[0] == data[1] == data[2]:
            return True
        else:
            return False

    #判断顺子
    def is_shunzi(self, player):
        data = self.get_value(player)
        data.sort(reverse=True)
        if (data[0] - data[1] ==1) and (data[1] -data[2]==1):
            return True
        elif (data[0] - data[1] ==11) and (data[1] -data[2]==1):
            return True
        else:
            return False

    #判断对子
    def is_pair(self, player):
        data = self.get_value(player)
        if data[0] == data[1] or data[0] == data[2] or data[1] == data[2]:
            return True
        else:
            return False
    #找对子
    def find_pair(self, player):
        data = self.get_value(player)
        if data[0] == data[1]:
            return 0, 1
        elif data[0] == data[2]:
            return 0, 2
        elif data[1] == data[2]:
            return 1, 2

    #比较豹子大小
    def compare_baozi(self):
        if self.is_baozi(self.player1) and self.is_baozi(self.player2):
            data1 = self.get_value(self.player1)
            data2 = self.get_value(self.player2)
            return self.compare_value(data1, data2)
        elif self.is_baozi(self.player1) and not self.is_baozi(self.player2):
            return 1
        elif not self.is_baozi(self.player1) and self.is_baozi(self.player2):
            return 2
        elif not self.is_baozi(self.player1) and not self.is_baozi(self.player2):
            return None

    #比较顺金
    def compare_shunjin(self):
        if self.is_shunjin(self.player1) and self.is_shunjin(self.player2):
            data1 = self.get_value(self.player1)
            data2 = self.get_value(self.player2)
            return self.compare_value(data1, data2)
        elif self.is_shunjin(self.player1) and not self.is_shunjin(self.player2):
            return 1
        elif not self.is_shunjin(self.player1) and self.is_shunjin(self.player2):
            return 2
        elif not self.is_shunjin(self.player1) and not self.is_shunjin(self.player2):
            return None

    #比较金花
    def compare_jinhua(self):
        if self.is_jinhua(self.player1) and self.is_jinhua(self.player2):
            data1 = self.get_value(self.player1)
            data2 = self.get_value(self.player2)
            return self.compare_value(data1, data2)
        elif self.is_jinhua(self.player1) and not self.is_jinhua(self.player2):
            return 1
        elif not self.is_jinhua(self.player1) and self.is_jinhua(self.player2):
            return 2
        elif not self.is_jinhua(self.player1) and not self.is_jinhua(self.player2):
            return None

    #比较顺子
    def compare_shunzi(self):
        if self.is_shunzi(self.player1) and self.is_shunzi(self.player2):
            data1 = self.get_value(self.player1)
            data2 = self.get_value(self.player2)
            return  self.compare_value(data1, data2)
        elif self.is_shunzi(self.player1) and not self.is_shunzi(self.player2):
            return 1
        elif not self.is_shunzi(self.player1) and self.is_shunzi(self.player2):
            return 2
        elif not self.is_shunzi(self.player1) and not self.is_shunzi(self.player2):
            return None

    #比较对子
    def compare_pair(self):
        if self.is_pair(self.player1) and self.is_pair(self.player2):
            data1 = self.get_value(self.player1)
            data2 = self.get_value(self.player2)
            f1, s1 = self.find_pair(self.player1)
            f2, s2 = self.find_pair(self.player2)
            if data1[f1] > data2[f2]:
                return 1
            elif data1[f1] < data2[f2]:
                return 2
            else:
                data1.pop(f1)
                data1.pop(s1)
                data2.pop(f2)
                data2.pop(s2)
                if data1[0]> data2[0]:
                    return 1
                elif data1[0] < data2[0]:
                    return 2
                else:
                    return 3
        elif self.is_pair(self.player1) and not self.is_pair(self.player2):
            return 1
        elif not self.is_pair(self.player1) and self.is_pair(self.player2):
            return 2
        elif not self.is_pair(self.player1) and not self.is_pair(self.player2):
            return None

    #比较普通牌
    def compare_common(self):
        data1 = self.get_value(self.player1)
        data2 = self.get_value(self.player2)

        return self.compare_value(data1, data2)

    #比较大小
    def compare_value(self, data1, data2):
        data1.sort(reverse=True)
        data2.sort(reverse=True)
        for i in range(0, 3):
            if data1[i] == data2[i]:
                continue
            elif data1[i] > data2[i]:
                return 1
            else:
                return 2

    #比较程序入口
    def compare(self):
        flag = self.compare_baozi()
        player1, player2 = self.wapper()
        if flag is not None:
            return flag, player1, player2
        flag = self.compare_shunjin()
        if flag is not None:
            return flag, player1, player2
        flag = self.compare_jinhua()
        if flag is not None:
            return flag, player1, player2
        flag = self.compare_shunzi()
        if flag is not None:
            return flag, player1, player2
        flag = self.compare_pair()
        if flag is not None:
            return flag, player1, player2
        flag = self.compare_common()
        if flag is not None:
            return flag, player1, player2

    #返回牌信息
    def wapper(self):
        player1 = []
        for poker in self.player1:
            player1.append(poker['color'] + '_' + str('{0:02}'.format(poker['value'])) + '.jpg')
        player2 = []
        for poker in self.player2:
            player2.append(poker['color'] + '_' + str('{0:02}'.format(poker['value'])) + '.jpg')
        return player1, player2




if __name__ == "__main__":
    poker = Poker()
    #p = poker.deal()
    print(poker.player1)
    print(poker.player2)
    # poker.player1 = [{'color': 'red', 'value': 2}, {'color': 'black', 'value': 10}, {'color': 'black', 'value': 8}]
    # poker.player2 = [{'color': 'black', 'value': 2}, {'color': 'red', 'value': 9}, {'color': 'red', 'value': 10}]
    # print(poker.get_value(poker.player1))
    # print(poker.get_value(poker.player2))
    # print(poker.is_baozi(poker.player1))
    # print(poker.compare_baozi())
    # print(poker.is_jinhua(poker.player1))
    # print(poker.compare_jinhua())
    # print(poker.is_shunzi(poker.player1))
    # print(poker.compare_shunzi())
    # print(poker.is_shunjin(poker.player1))
    # print(poker.compare_shunjin())
    # print(poker.is_pair(poker.player1))
    # print(poker.compare_pair())
    poker.compare()
    print(poker.compare())
    print(poker.wapper())
----------------------------------------------------------------------------------------------------

-------------------------------------------------------qunce.py--------

from flask import Flask
from flask import request
import random
import os
from flask import render_template
from poker import Poker

#创建一个网站
app = Flask(__name__)
@app.route("/game")
def game():
    # # 注文件路径都要改为/
    # pokers = os.listdir("D:/zidonghua/python/0804flask/static/poker")
    # poker = random.choice(pokers)
    # user = {
    #     "player1": ["black_01.jpg", "black_02.jpg", "black_02.jpg"],
    #     "player2": ["cube_01.jpg", "plum_01.jpg", "red_01.jpg"],
    #     "winner": 2
    # }
    # return render_template("poker.html", user=user)

    p = Poker()
    status, player1, player2 = p.compare()
    user = {
        "player1": player1,
        "player2": player2,
        "winner": status
    }
    print(user)
    return render_template("poker.html", user=user)


app.run(
    #任意主机都能访问
    host='0.0.0.0',
    port=8888,
    #修改不需要重启
    debug=True,
)

--------------------------------------------------------------

------------------------poker.html----------------------------------------

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>炸金花</title>
</head>
<body>
<!--显示牌的信息
    {{user.player1}}
    {{user.player2}}
    {{user.winner}}
    <br>
-->
<!--显示出每一张牌-->
    {% for poker in user.player1 %}
        <img src = "static/poker/{{poker}}"/>
    {% endfor %}
    <br>
    {% for poker in user.player2 %}
        <img src = "static/poker/{{poker}}"/>
    {% endfor %}
    <br>
    <h1>{{user.winner}}</h1>
</body>
</html>

------------------------------------------------------------

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值