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

Python报错:'method'与'int'间不支持'>='运算的解决求助

TypeError 修复:方法未调用导致的类型不匹配

错误原因

报错TypeError: '>=' not supported between instances of 'method' and 'int'的核心问题是:在Kilpailu类的kilpailu_ohi方法中,你直接使用了i.getKuljettuMatka(这是一个方法对象)与整数self.pituuskm比较,而没有调用这个方法(需要加括号()来执行方法并获取返回值)。

修复步骤

1. 修正方法调用

将kilpailu_ohi方法中的i.getKuljettuMatka改为i.getKuljettuMatka(),确保调用方法获取行驶里程数值:

class Kilpailu():
    def __init__(self, nimi, pituuskm, osallistujat):
        self.nimi = nimi
        self.pituuskm = pituuskm
        self.osallistujat = osallistujat

    def kilpailu_ohi(self):
        for i in self.osallistujat:
            # 修复:添加括号调用getKuljettuMatka方法
            if i.getKuljettuMatka() >= self.pituuskm:
                return True
        # 遍历所有车辆后都未达标,才返回False
        return False

2. 修正循环逻辑(重要)

原代码的循环逻辑存在问题:只会检查第一个参赛车辆,若第一个不满足就直接返回False,不会继续检查后续车辆。上面的修复已经修正了这个问题——遍历所有车辆,只要有一辆达标就返回True,全部不达标才返回False。

3. 优化主执行代码(可选)

原代码将执行逻辑放在class main():中是不合理的,Python中不需要用类包裹脚本执行逻辑,直接写成顶层代码即可:

import random

autot = []
for i in range(10):
    auto = Auto("ABC-" + str(i + 1), random.randint(100, 200))
    autot.append(auto)

k = Kilpailu("Suuri romuralli", 8000, autot)
tunnit = 0
print(k.kilpailu_ohi())  # 现在会返回False(初始里程都是0)

扩展:模拟比赛过程(可选)

由于所有车辆初始里程为0,修复后第一次调用kilpailu_ohi()会返回False。如果需要模拟真实比赛过程,给Auto类添加行驶相关方法:

class Auto:
    def __init__(self, rekisteritunnus, huippunopeus):
        self.rekisteritunnus = rekisteritunnus
        self.huippunopeus = huippunopeus
        self.nopeus = 0
        self.KuljettuMatka = 0

    def getKuljettuMatka(self):
        return int(self.KuljettuMatka)

    # 添加加速方法
    def kiihdytä(self, nopeuden_muutos):
        uusi_nopeus = self.nopeus + nopeuden_muutos
        # 限制速度在0到最高速度之间
        if uusi_nopeus > self.huippunopeus:
            self.nopeus = self.huippunopeus
        elif uusi_nopeus < 0:
            self.nopeus = 0
        else:
            self.nopeus = uusi_nopeus

    # 添加行驶方法(按小时计算里程)
    def aja(self, tunnit):
        self.KuljettuMatka += self.nopeus * tunnit

然后在主代码中模拟比赛循环:

while not k.kilpailu_ohi():
    tunnit += 1
    for auto in autot:
        # 随机调整速度(-10到15之间的变化量)
        auto.kiihdytä(random.randint(-10, 15))
        # 行驶1小时
        auto.aja(1)
    # 打印当前进度
    print(f"\n第{tunnit}小时:")
    for auto in autot:
        print(f"{auto.rekisteritunnus}: {auto.getKuljettuMatka()}km")

print("\n比赛结束!")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:05:21