帮我用python写藏头诗藏尾诗 在前端可以展示 并且藏头诗可以跳转到藏尾诗 且功能可以正常运行 实例
时间: 2024-03-24 13:40:28 浏览: 124
python实现藏头诗
好的,我可以帮你完成这个任务。首先,我们需要用 Python 编写一个生成藏头诗藏尾诗的程序。下面是代码示例:
```python
import random
def generate_poem(title, lines):
first_char = title[0]
last_char = title[-1]
poem = []
for i in range(lines):
if i == 0:
line = title
elif i == lines-1:
line = get_last_line(last_char)
else:
line = get_random_line(first_char)
poem.append(line)
return poem
def get_random_line(first_char):
# 从诗歌库中随机选择以 first_char 开头的一句诗
# 这里使用一个伪诗歌库作为示例
poems = ["白日依山尽", "黄河入海流", "欲穷千里目", "更上一层楼"]
lines = [p for p in poems if p.startswith(first_char)]
return random.choice(lines)
def get_last_line(last_char):
# 从诗歌库中随机选择以 last_char 结尾的一句诗
# 这里使用一个伪诗歌库作为示例
poems = ["春眠不觉晓,处处闻啼鸟。", "千山鸟飞绝,万径人踪灭。", "山重水复疑无路,柳暗花明又一村。", "画楼西畔桂堂东,身无彩凤双飞翼。"]
lines = [p for p in poems if p.endswith(last_char)]
return random.choice(lines)
```
这个程序接受两个参数:藏头诗的标题和诗歌的行数。它会生成一首以标题为首行,以以标题结尾字符为结尾的一句诗为尾行的诗歌,其中除首行和尾行外的每行都是随机选择的以标题首字符开头的一句诗。
接下来,我们需要将这个程序与 Flask 框架结合起来,构建一个 Web 应用。下面是示例代码:
```python
from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
title = request.form['title']
lines = int(request.form['lines'])
poem = generate_poem(title, lines)
return render_template('poem.html', poem=poem)
else:
return render_template('index.html')
@app.route('/reverse', methods=['POST'])
def reverse():
poem = request.form['poem'].split('\n')[::-1]
return render_template('poem.html', poem=poem)
if __name__ == '__main__':
app.run()
```
这个程序使用 Flask 框架构建了一个 Web 应用,包括两个路由:`/` 和 `/reverse`。`/` 路由用于展示藏头诗生成器的表单,`/reverse` 路由用于展示藏尾诗。具体实现如下:
- 当用户通过 GET 请求访问 `/` 路由时,返回一个包含输入表单的 HTML 页面。
- 当用户通过 POST 请求提交表单时,从表单中获取藏头诗的标题和行数,调用 `generate_poem` 函数生成诗歌,然后返回一个包含诗歌内容的 HTML 页面。这个页面包含一个 “反转” 按钮,点击该按钮会将诗歌反转,变成藏尾诗的形式。
- 当用户通过 POST 请求点击 “反转” 按钮时,将诗歌反转,并返回一个包含反转后诗歌内容的 HTML 页面。
最后,我们需要在前端展示生成的诗歌。下面是 HTML 模板示例:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>藏头诗生成器</title>
</head>
<body>
<h1>藏头诗生成器</h1>
<form method="post">
<label for="title">标题:</label>
<input type="text" name="title" id="title" required>
<br>
<label for="lines">行数:</label>
<input type="number" name="lines" id="lines" min="2" max="4" required>
<br>
<input type="submit" value="生成">
</form>
{% if poem %}
<hr>
<h2>诗歌</h2>
<button onclick="reverse()">反转</button>
<br>
{% for line in poem %}
{{ line }}<br>
{% endfor %}
{% endif %}
<script>
function reverse() {
document.forms[0].action = "{{ url_for('reverse') }}";
document.forms[0].submit();
}
</script>
</body>
</html>
```
这个模板包含一个输入表单,用于让用户输入藏头诗的标题和行数。当用户提交表单后,会显示生成的诗歌,并在底部显示一个 “反转” 按钮。点击该按钮会将诗歌反转成藏尾诗的形式。具体实现是通过 JavaScript 修改表单的 action 属性,然后提交表单来实现的。
至此,我们已经完成了一个简单的藏头诗生成器 Web 应用,其中包括了 Flask 后端和 HTML/JavaScript 前端部分。你可以将上述代码保存到一个 Python 文件中,然后通过 `python 文件名.py` 命令运行它。在浏览器中访问 `http://localhost:5000` 即可使用。
阅读全文