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>

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章