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

Python如何用for循环将列表中符合7规则的数字替换为'BOOM'

代码问题排查

原有代码共有4处错误,逐一说明:

  • 列表初始化写法错误:[range(0, end_number + 1)] 是把range迭代器作为单个元素存入列表,不会生成0到end_number的连续数值,正确生成序列的写法是list(range(0, end_number + 1))
  • 包含7的判断逻辑错误:整数类型不支持切片操作i[0:],判断数字是否含7需要先把数字转成字符串,判断字符'7'是否在字符串内即可,写法为'7' in str(i)
  • 替换逻辑错误:Python原生列表没有replace()方法,不能直接调用替换元素;同时不能在循环过程中直接return,会导致函数第一次匹配到条件就直接终止,不会遍历完所有元素
  • 多余的计数逻辑:for循环遍历序列时会自动取下一个元素,不需要手动写i += 1
正确可运行代码
def seven_boom(end_number):
    # 初始化0到end_number(包含终止值)的列表
    num_list = list(range(0, end_number + 1))
    # 带索引遍历列表,方便直接修改对应位置的值
    for idx, num in enumerate(num_list):
        # 满足能被7整除、或数字含7任意一个条件就替换为BOOM
        if num % 7 == 0 or '7' in str(num):
            num_list[idx] = 'BOOM'
    return num_list
效果验证

执行测试语句:

print(seven_boom(17))

得到的输出和预期完全匹配:

['BOOM', 1, 2, 3, 4, 5, 6, 'BOOM', 8, 9, 10, 11, 12, 13, 'BOOM', 15, 16, 'BOOM']

内容的提问来源于stack exchange,提问作者Natilir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:15:30