我正在尝试使用python编写一个函数,该函数将获取我已定义的字符串列表,并将它们显示为单个字符串,即所有字符串的HTML无序列表。到目前为止,我的代码是:
def pizzatoppings(self):
toppings = ['mushrooms', 'peppers', 'pepparoni', 'steak', 'walnuts', 'goat cheese', 'eggplant', 'garlic sauce'];
for s in toppings:
ul += "<li>"+str(s)+"</li>"
ul += "</ul>"
return ul
当我试图运行它时,我没有回溯,也没有任何反应。有谁知道为什么会这样?我知道这可能是一个微不足道的问题,但我已经找到了答案,但找不到解决方案。谢谢!
答案 0 :(得分:3)
你可以这样做:
def print_ul(elements):
print("<ul>")
for s in elements:
ul = "<li>" + str(s) + "</li>"
print(ul)
print("</ul>")
toppings = ['mushrooms', 'peppers', 'pepparoni', 'steak', 'walnuts', 'goat cheese', 'eggplant', 'garlic sauce'];
print_ul(toppings)
您的原始代码存在一些问题:
更好的(IMO)解决方案是拥有一个生成HTML代码的函数,并打印结果:
def ulify(elements):
string = "<ul>\n"
for s in elements:
string += "<li>" + str(s) + "</li>\n"
string += "</ul>"
return string
print(ulify(['thing', 'other_thing']))
您还可以阅读list comprehensions。这将使列表更简单:
def ulify(elements):
string = "<ul>\n"
string += "\n".join(["<li>" + str(s) + "</li>" for s in elements])
string += "\n</ul>"
答案 1 :(得分:1)
看起来你正在尝试建立一个网站。为什么不使用像Jinja 2这样的模板引擎,而不是从函数中打印HTML片段?为此,您需要一个Python Web应用程序,可以在其中一个Web框架中编写。我来这里Flask,开始使用起来很简单,Jinja是Flask的默认模板引擎。
如果您只想生成静态HTML文件,我建议使用Frozen-Flask,它允许您生成可以托管的静态HTML文件,而无需在服务器上部署任何Python Web应用程序。只需将生成的文件复制到您的主机,您就可以开始使用了。
如果您仍想打印HTML代码段,那么您的代码应该是Ealhad在其答案中发布的内容。
此外,您的原始代码包含一些问题:
def pizzatoppings(self):
# you don't need semicolons in Python
toppings = ['mushrooms', 'peppers', 'pepparoni', 'steak', 'walnuts', 'goat cheese', 'eggplant', 'garlic sauce']
# you need to initialize a "ul" variable
ul = "<ul>"
for s in toppings:
ul += "<li>"+str(s)+"</li>"
# following two lines where indented too much. In Python, indentation defines a block of code
ul += "</ul>"
return ul
答案 2 :(得分:0)
我今天只是在工作中这样做。这是我的两行解决方案:
def example(elements):
return '<ul>\n' + '\n'.join(['<li>'.rjust(8) + name + '</li>' for name in elements]) + '\n</ul>'
哪个给:
<ul>
<li>mushrooms</li>
<li>peppers</li>
<li>pepparoni</li>
<li>steak</li>
<li>walnuts</li>
<li>goat cheese</li>
<li>eggplant</li>
<li>garlic sauce</li>
</ul
这使生成的HTML代码更易于阅读。