输出HTML无序列表python

Cal*_*ton 1 html python string

我正在尝试用 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
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试运行它时,我没有得到任何回溯,也没有任何反应。有谁知道为什么会这样?我知道这可能是一个微不足道的问题,但我已经搜索了答案,但找不到解决方案。谢谢!

Eal*_*had 6

你可以这样做:

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)
Run Code Online (Sandbox Code Playgroud)

您的原始代码存在一些问题:

  • 你没有调用这个函数,所以难怪它什么也没做
  • 即使你这样做了,该函数实际上也没有打印任何东西,它只是返回了一些值
  • 该函数并没有真正接受参数,因此根本无法重用

更好的 (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']))
Run Code Online (Sandbox Code Playgroud)

您还可以阅读有关列表推导式的信息。这将使列表的工作更简单:

def ulify(elements):
    string = "<ul>\n"
    string += "\n".join(["<li>" + str(s) + "</li>" for s in elements])
    string += "\n</ul>"
    return string
    
Run Code Online (Sandbox Code Playgroud)