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