You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python单行函数实现:重复s1字符串n次用s2分隔并去除末尾多余分隔符

解决方案

你现有代码存在两个问题:

  1. 逻辑上n * (n * s1 + s2)是把「n个s1拼接1个s2」的结构重复n次,末尾必然会多出一个多余的分隔符s2
  2. 用了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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:24:04