Python单行函数实现:重复s1字符串n次用s2分隔并去除末尾多余分隔符
解决方案
你现有代码存在两个问题:
- 逻辑上
n * (n * s1 + s2)是把「n个s1拼接1个s2」的结构重复n次,末尾必然会多出一个多余的分隔符s2 - 用了
print而不是return,print没有返回值,调用函数得到的结果是None,和示例的返回字符串的效果不符
方案1:使用str.join()实现(更推荐)
核心逻辑是先构造包含n个s1*n的序列,直接用s2作为分隔符拼接整个序列,天然不会产生多余的末尾字符,逻辑清晰无副作用:
def func1(n, s1, s2): return s2.join(s1 * n for _ in range(n))
完全匹配所有测试用例:
func1(1, '*', '-')返回'*'func1(2, '*', '-')返回'**-**'func1(3, '*', '-')返回'***-***-***'func1(4, 'z', 'Z')返回'zzzzZzzzzZzzzzZzzzz'
方案2:基于原有逻辑裁剪冗余字符
如果要在你原有写法的基础上修改,直接切掉最后一位多余的分隔符即可,也是单行实现:
def func1(n, s1, s2): return (n * (s1 * n + s2))[:-1]
内容的提问来源于stack exchange,提问作者RizenAtlantis
相关产品推荐
相关产品推荐

