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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:09:02