如何在基本 HTML 页面上使用 Python 列出单词的段落
How to list a word's paragrams using Python on a basic HTML page
我正在使用 Flask 框架 创建一个简单的 python 网络应用程序来列出单词(段落)中一个字母或一系列字母的变化。控制台(IntelliJ 代码编辑器)成功打印出段落,但 我无法在无序 HTML 列表的 HTML 页面上打印 them/list 它们 - 请参阅以下 HTML 页面的屏幕截图
我尝试了 (''.join) 和 (','.join(str(e) for e in paragram_list)) 方法,但它们对我不起作用,如下面的代码所示。请看最后return声明 (return "There are " + str(num_of_paragrams) + " Paragrams for " + "''" + str(input_word) + "'\n'" +
" ... 在这里,我想要字符串格式或列表的格式:" + str(paragram_list[paragram]) +
" ----> 这仅显示一个更改 ----> " + str(''.join(values[paragram])))
我的代码编辑器的控制台打印了下面的行,我希望在 HTML
上打印同样的内容
这里是abc这个词的段落列表
美国广播公司
交流电
背
bca
出租车
cba
代码如下:
from itertools import permutations, count
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route("/")
def index():
html_form = """
<html><body>
<h1> Enter a word to find its paragrams.</h1>
<h2> This is the alteration of a letter or a series of letters in a word. </h2>
<br>
<br>
<form action="" method="GET">
Text: <input type="text" name="Paragrams">
<input type="submit" value="Find Paragrams">
</form>
</body></html>"""
input_word = request.args.get("Paragrams", "")
if input_word:
wordsparagrams = str(find_paragram(input_word))
# print(wordsparagrams)
else:
wordsparagrams = ""
return html_form + wordsparagrams
def find_paragram(input_word):
# input_word = input("Enter a word to find its paragrams\n")
values = list(permutations(input_word, len(input_word)))
print("Here is a list of the paragrams of the word " + input_word)
count_of = 0
paragram_list = []
for paragram in range(len(values)):
print(''.join(values[paragram]))
# return ''.join(values[paragram])
count_of += 1
paragram_list.append(values)
make_it_a_string = ','.join(str(e) for e in paragram_list)
print("list items \n")
print(paragram_list)
print("make it a string: ", make_it_a_string)
num_of_paragrams = count_of
print("Paragrams of:", input_word, " = ", num_of_paragrams)
return "There are " + str(num_of_paragrams) + " Paragrams for " + "'\'" + str(input_word) + "'\n'" + \
" ... Here They Are I WANT THESE IN STRING FORMAT OR A LIST: " + str(paragram_list[paragram]) +\
" ----> THIS SHOWS ONLY ONE alteration ----> " + str(''.join(values[paragram]))
if __name__ == "__main__":
app.run(host='127.0.0.1', port=8080, debug=True)
HTML 页面看起来:
代码结构:
templates
└───index.html
main.py
(我们需要创建模板文件夹,因为默认情况下 Flask 会搜索模板)
main.py:
import itertools
from flask import Flask, request, render_template
app = Flask(__name__)
def find_paragrams(word: str) -> list:
'''Returns list of word paragrams'''
# Get permutations as list of tuples of letters
permutations = list(itertools.permutations(word, len(word)))
# Join tuples inside of list
permutations = [''.join(permutation_tuple)
for permutation_tuple in permutations]
# Get rid of duplicates
permutations = list(set(permutations))
return permutations
@app.route("/", methods=['GET', 'POST'])
def index():
# Default value in case if an empty sting was passed into form
params = None
# POST request on form submit
if request.method == 'POST':
# Get form data
word = request.form['paragrams']
paragrams_list = find_paragrams(word) if word else None
if paragrams_list:
paragrams_count = len(paragrams_list)
paragrams_str = ', '.join(paragrams_list)
# Packing parametes in dict just to be clean
params = {
'paragrams_count': paragrams_count,
'word': word,
'paragrams_str': paragrams_str,
'paragrams_list': paragrams_list
}
# Render html template with jinja rendering parameters
return render_template(
'index.html',
params=params,
)
if __name__ == "__main__":
app.run(host='127.0.0.1', port=8080, debug=True)
index.html:
<html>
<body>
<h1> Enter a word to find its paragrams.</h1>
<h2> This is the alteration of a letter or a series of letters in a word. </h2>
<br>
<br>
<form action="" method="POST">
Word: <input type="text" name="paragrams">
<input type="submit" value="Find Paragrams">
</form>
<!-- Render inner html if params argument was not None -->
{% if params %}
<!-- Accessing params dict's values with params.key -->
<p>There are {{ params.paragrams_count }} Paragrams for "{{ params.word }}"</p>
<p>In string format:</p>
{{ params.paragrams_str}}
<p>In list format:</p>
{{ params.paragrams_list }}
{% else %}
<!-- html to render if params argument was None -->
<p>Empty field, enter word first!</p>
{% endif %}
</body>
</html>
(有什么不明白可以随时联系我)
我正在使用 Flask 框架 创建一个简单的 python 网络应用程序来列出单词(段落)中一个字母或一系列字母的变化。控制台(IntelliJ 代码编辑器)成功打印出段落,但 我无法在无序 HTML 列表的 HTML 页面上打印 them/list 它们 - 请参阅以下 HTML 页面的屏幕截图
我尝试了 (''.join) 和 (','.join(str(e) for e in paragram_list)) 方法,但它们对我不起作用,如下面的代码所示。请看最后return声明 (return "There are " + str(num_of_paragrams) + " Paragrams for " + "''" + str(input_word) + "'\n'" +
" ... 在这里,我想要字符串格式或列表的格式:" + str(paragram_list[paragram]) +
" ----> 这仅显示一个更改 ----> " + str(''.join(values[paragram])))
我的代码编辑器的控制台打印了下面的行,我希望在 HTML
上打印同样的内容这里是abc这个词的段落列表 美国广播公司 交流电 背 bca 出租车 cba
代码如下:
from itertools import permutations, count
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route("/")
def index():
html_form = """
<html><body>
<h1> Enter a word to find its paragrams.</h1>
<h2> This is the alteration of a letter or a series of letters in a word. </h2>
<br>
<br>
<form action="" method="GET">
Text: <input type="text" name="Paragrams">
<input type="submit" value="Find Paragrams">
</form>
</body></html>"""
input_word = request.args.get("Paragrams", "")
if input_word:
wordsparagrams = str(find_paragram(input_word))
# print(wordsparagrams)
else:
wordsparagrams = ""
return html_form + wordsparagrams
def find_paragram(input_word):
# input_word = input("Enter a word to find its paragrams\n")
values = list(permutations(input_word, len(input_word)))
print("Here is a list of the paragrams of the word " + input_word)
count_of = 0
paragram_list = []
for paragram in range(len(values)):
print(''.join(values[paragram]))
# return ''.join(values[paragram])
count_of += 1
paragram_list.append(values)
make_it_a_string = ','.join(str(e) for e in paragram_list)
print("list items \n")
print(paragram_list)
print("make it a string: ", make_it_a_string)
num_of_paragrams = count_of
print("Paragrams of:", input_word, " = ", num_of_paragrams)
return "There are " + str(num_of_paragrams) + " Paragrams for " + "'\'" + str(input_word) + "'\n'" + \
" ... Here They Are I WANT THESE IN STRING FORMAT OR A LIST: " + str(paragram_list[paragram]) +\
" ----> THIS SHOWS ONLY ONE alteration ----> " + str(''.join(values[paragram]))
if __name__ == "__main__":
app.run(host='127.0.0.1', port=8080, debug=True)
HTML 页面看起来:
代码结构:
templates
└───index.html
main.py
(我们需要创建模板文件夹,因为默认情况下 Flask 会搜索模板)
main.py:
import itertools
from flask import Flask, request, render_template
app = Flask(__name__)
def find_paragrams(word: str) -> list:
'''Returns list of word paragrams'''
# Get permutations as list of tuples of letters
permutations = list(itertools.permutations(word, len(word)))
# Join tuples inside of list
permutations = [''.join(permutation_tuple)
for permutation_tuple in permutations]
# Get rid of duplicates
permutations = list(set(permutations))
return permutations
@app.route("/", methods=['GET', 'POST'])
def index():
# Default value in case if an empty sting was passed into form
params = None
# POST request on form submit
if request.method == 'POST':
# Get form data
word = request.form['paragrams']
paragrams_list = find_paragrams(word) if word else None
if paragrams_list:
paragrams_count = len(paragrams_list)
paragrams_str = ', '.join(paragrams_list)
# Packing parametes in dict just to be clean
params = {
'paragrams_count': paragrams_count,
'word': word,
'paragrams_str': paragrams_str,
'paragrams_list': paragrams_list
}
# Render html template with jinja rendering parameters
return render_template(
'index.html',
params=params,
)
if __name__ == "__main__":
app.run(host='127.0.0.1', port=8080, debug=True)
index.html:
<html>
<body>
<h1> Enter a word to find its paragrams.</h1>
<h2> This is the alteration of a letter or a series of letters in a word. </h2>
<br>
<br>
<form action="" method="POST">
Word: <input type="text" name="paragrams">
<input type="submit" value="Find Paragrams">
</form>
<!-- Render inner html if params argument was not None -->
{% if params %}
<!-- Accessing params dict's values with params.key -->
<p>There are {{ params.paragrams_count }} Paragrams for "{{ params.word }}"</p>
<p>In string format:</p>
{{ params.paragrams_str}}
<p>In list format:</p>
{{ params.paragrams_list }}
{% else %}
<!-- html to render if params argument was None -->
<p>Empty field, enter word first!</p>
{% endif %}
</body>
</html>
(有什么不明白可以随时联系我)