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>
------------------------------------------------------------