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隨機獲取一張撲克牌。
´豹子(炸彈):三張點相同的牌。例:AAA、222。
´順金(同花順、色託):花色相同的順子。例:黑桃456、紅桃789。最大的順金爲花色相同的JQK,最小的順金爲花色相同的123。
´金花(色皮):花色相同,非順子。例:黑桃368,方塊145。
´順子(拖拉機):花色不同的順子。例:黑桃5紅桃6方塊7。最大的順子爲花色不同的QKA,最小的順子爲花色不同的123。
´對子:兩張點數相同的牌。例:223,334。
´單張:三張牌不組成任何類型的牌。
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>
------------------------------------------------------------