无法在输出中添加“/”

Not able to add "/" in output

根据输入和输出创建一个函数。看the examples,有规律

我的代码:

def secret(a):
b=a[:-2]
a_list=list(a)
last_number=int(a_list[-1])
Final_recurr=last_number+last_number
d="{} ".format(b)*Final_recurr
j=d.split()
for i,k in enumerate(j):
    if int(i)%2!=0:
        m="{}".format("</" + b+ ">")*Final_recurr
        return m
        
    if int(i)%2==0:
        m="{}".format("<" + b+ ">")*Final_recurr
        return m

我无法在每两次迭代中都放入 /。请告诉我当前代码和简短版本中的错误。

您可以使用 str.splitstr.partition 将字符串拆分为单独的部分:

>>> "div*2".partition("*")
('div', '*', '2')
>>> tag_name, _, mult = "div*2".partition("*")
>>> tag_name
'div'
>>> mult
'2'

使用字符串格式将 tag_name 插入模板:

>>> "<{}></{}>".format(tag_name, tag_name)
'<div></div>'

“乘以”格式化字符串与 int(mult):

>>> "<{}></{}>".format(tag_name, tag_name) * int(mult)
'<div></div><div></div>'
>>> 

这个功能可以帮到你,试试看:

s = 'div*2'
>>> def secret(s):
    tag, n = s.split('*')      # parse it into two parts
    ans = f'<{tag}></{tag}>'   # get complementary part
    return ans * int(n)        # final result 

>>> secret(s)
'<div></div><div></div>'
>>> secret('p*1')
'<p></p>'
>>> 

在尝试解决挑战之前,您可能应该更加熟悉编程基础知识。

在这种情况下,您必须了解函数内部的 return 语句即使在循环中也只是退出函数。 因此,在 for i, k in enumerate(j): 循环的第一次迭代中,代码传入第二个条件并在到达 return 语句时退出函数。 所以永远不会有第二个循环,你的循环只是无效的。

仅解决此问题不足以获得有效的解决方案。我建议在你的头脑中澄清实现你想要的东西所需的步骤,甚至以注释的形式将它们写在一个空函数中(你可以采取@Qwerty 在评论中建议的步骤):

def secret(expression):
    # split the argument into the bits before and after *
    # combine the required string
    # return the resulting string

然后尝试处理每条评论,一次一条。其他回复应该对您有很大帮助。


以下是一些可以帮助您的函数和概念文档的链接: