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

Python执行List.append(int)后列表变NoneType无法调用count方法

问题说明

执行列表操作代码时,energies列表在运行过程中变为NoneType,触发报错:无法在NoneType对象上调用count()方法,原始代码如下:

import random
Energy = 500
energies = [-2, -1]
Hydrogen = 0
numoep = 0
Eposfind = 0
sethydrogen = 0
times = 0

#Scene setting#
while numoep < 500:
    energies.append(random.randint(1, 100))
    numoep = numoep + 1
    try:
    energies.remove(-2)
    energies.remove(-1)
    except:
    pass

while Eposfind < 100:
    if energies.count(Eposfind) != 1:
    sethydrogen = energies.count(Eposfind)
    Hydrogen = Hydrogen + sethydrogen
    Energy = Energy - 2 * (sethydrogen)
    try:
        energies = energies.remove(Eposfind)
    except ValueError:
        pass
    print(Eposfind)
    Eposfind = Eposfind + 1

print("finished")
错误原因
  1. 核心逻辑错误:Python列表的remove()方法是原地修改列表的方法,执行后不会返回修改后的列表,返回值固定为None。代码中写了energies = energies.remove(Eposfind),第一次执行到这行时,就会把原本存储的列表对象覆盖成None,下一轮循环调用energies.count()时就会触发NoneType相关报错。
  2. 语法格式错误:Python靠缩进识别代码层级,原始代码中try/except块、if判断块、循环内部的代码没有正确缩进,直接运行会先抛出缩进错误。
  3. 冗余逻辑问题:初始列表里的-2、-1只会存在一次,放在填充500个随机数的循环里反复尝试删除,除了第一次会成功,剩下499次都会触发值不存在的错误,完全靠except静默跳过,属于无效执行。
修复方案
  • 去掉remove()调用前的变量赋值,直接执行energies.remove(Eposfind)即可,不需要接收返回值
  • 补全所有代码块的缩进,控制流语句下属的代码统一缩进4个空格
  • 把删除初始-2、-1的逻辑挪到填充随机数的循环外,避免无意义的异常捕获

修复后的可运行代码:

import random
Energy = 500
energies = [-2, -1]
Hydrogen = 0
numoep = 0
Eposfind = 0
sethydrogen = 0
times = 0

# 场景初始化
while numoep < 500:
    energies.append(random.randint(1, 100))
    numoep = numoep + 1
# 初始标记值移出循环删除
energies.remove(-2)
energies.remove(-1)

while Eposfind < 100:
    if energies.count(Eposfind) != 1:
        sethydrogen = energies.count(Eposfind)
        Hydrogen = Hydrogen + sethydrogen
        Energy = Energy - 2 * (sethydrogen)
        try:
            # 直接调用remove方法,不要将返回值赋值给energies
            energies.remove(Eposfind)
        except ValueError:
            pass
    print(Eposfind)
    Eposfind = Eposfind + 1

print("finished")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:42:40