如何用Python编写x重复k次、y重复k-1次交替拼接的函数
代码修改方案
原有代码问题说明
- 第2行的
k > 0是无意义的布尔表达式,没有实现参数校验逻辑,运行时不会产生任何作用 - 第3行生成器中的
'x' and 'y'逻辑错误:Python中and运算符在两侧表达式都为真时,会返回右侧的结果,因此这里永远返回'y',最终只会得到k个y拼接的字符串
正确实现代码
写法1:简洁版(字符串乘法+切片)
完全符合你给出的预期输出示例:
def assem(k: int): # 增加参数合法性校验 if not isinstance(k, int) or k <= 0: raise ValueError("参数k必须为正整数") return ('xy' * k)[:k] # 测试 print(assem(1)) # 输出x print(assem(2)) # 输出xy print(assem(3)) # 输出xyx print(assem(4)) # 输出xyxy print(assem(5)) # 输出xyxyx
如果你实际需要的是x出现k次、y出现k-1次(总长度为2k-1,比如k=3时输出xyxyx),只需要把返回值的切片改为[:2*k -1]即可。
写法2:直观版(按索引判断)
适合刚入门学习理解逻辑:
def assem(k: int): if not isinstance(k, int) or k <= 0: raise ValueError("参数k必须为正整数") # 索引从0开始,偶数位放x,奇数位放y return ''.join('x' if i % 2 == 0 else 'y' for i in range(k))
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

