def main() :
n = 5
def repeat(string, n, delim) :
name = "string" + "delim"
nametwo = name * n
print(nametwo)
我需要编写一个函数def repeat(string, n, delim)
,它返回重复n次的string "string"
,用字符串deli分隔。例如,repeat("ho", 3, ", ") "ho, ho, ho"
有人能给我一些建议吗?我应该怎么写这篇文章?在
Tags:
你要的已经存在:^{} 。
join
只是在做难的部分;我们仍然需要一些东西来处理简单的部分……但这就是最简单的部分。在另外,正如其他人所指出的那样,您可以在字符串上使用
*
运算符来实现大部分目标。但是,尽管你自己差点就写好了,但我觉得你不明白为什么这是最重要的方式。在你甚至可以把两者结合起来:
delim.join([string] * n)
。(这里,我重复一个列表而不是字符串本身,因为否则我只会得到一个大字符串"spamspamspamspamspam"
而不是五个单独的"spam"
向上join
)但是,我假设这是一个家庭作业或自学尝试,你想知道如何从头开始写。在
通常,当你想重复某事时,你需要一个循环。在
如果要对列表
spam
中的每个元素重复某些操作,则需要编写循环for element in spam:
。在但是如果你想重复5次呢?没有“数字5中的每个元素”。你需要找到有5个元素的东西。而^{} 正适合于此。所以:
接下来,您已经知道如何使用
^{pr2}$+
运算符连接字符串。所以,让我们从一个空字符串开始,然后连接到它的末尾:但这有一个问题:
垃圾邮件的数量正好,但是逗号太多了。在
如果你回到
*
的解决方案,你会发现这和(string + delim) * n
是一样的,我们已经走了很长的路。不管怎样,你都会遇到同样的问题。在你怎么避免呢?在
你得有点棘手。您可以对最后一个值进行特殊处理,也可以对第一个值进行特殊处理。或者您可以查看目前为止的
result
,看看您是否已经开始了。或者你可以让它添加额外的分隔符,然后在末尾去掉它。我将向您展示其中一个选项,但您应该尝试自己编写另一个选项。(一旦您找到了如何调整算法使之成为可能,那么查看result
可能是最简单、最干净的方法。)我在末尾去掉多余的分隔符的方法是使用带负索引的切片。你可能还没有学会,这就是为什么你应该为自己写一个解决方案。(另外,这可能是最老套的解决方案。)
一直回到顶部,如果您使用
join
,您将看到它为您解决了这个问题。它显然没有使用魔术,所以你可以考虑看看它是如何实现的。不幸的是,它可能是this文件中的一大堆C代码,不是很清晰的Python,所以您可能不会学到太多。在看看这个:
这主要利用了字符串的^{} 方法和^{} 内置函数。在
你离得太近了。。在
你不需要引号。使用引号,
name
的值将是“stringdelim”,而不是“string”和“delim”的值。在相关问题 更多 >
编程相关推荐