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

Python调用Done()时elif无输出 是否为变量引用错误排查

御术师趣味测试无输出问题修复

核心错误点

代码存在两个直接导致无输出的问题:

  • __init__构造方法缩进错误,原本应该绑定到实例的四个御术积分属性,没有写在构造方法的函数体内,实例初始化逻辑失效
  • Done()函数中错误使用类名Benders访问积分属性,但所有计分操作都是在实例ap上执行的,类本身不存在这四个积分属性,所有条件判断都无法命中,自然不会触发任何打印逻辑,连else分支都走不到。

修正后可运行代码

class Benders():
    def __init__(self, firebender=0, earthbender=0, airbender=0, waterbender=0):
        # 修正缩进,将属性绑定到实例
        self.firebender = firebender
        self.earthbender = earthbender
        self.airbender = airbender
        self.waterbender = waterbender

    def Firepower(self):
        self.firebender = self.firebender + 1
        return self.firebender

    def Earthbendingstyle(self):
        self.earthbender = self.earthbender + 1
        return self.earthbender

    def Windy(self):
        self.airbender = self.airbender + 1
        return self.airbender

    def Tidal(self):
        self.waterbender = self.waterbender + 1
        return self.waterbender


ap = Benders()

# 原有计分逻辑保持不变
red = ap.Firepower()
yellow = ap.Firepower()
orange = ap.Earthbendingstyle()
green = ap.Tidal()
blue = ap.Windy()
indigo = ap.Tidal()
violet = ap.Earthbendingstyle()

yes = ap.Earthbendingstyle()
yes_o = ap.Tidal()

no = ap.Firepower()
no_o = ap.Windy()
yes = yes_o
no = no_o
    
slytherin = ap.Firepower()
hufflepuff = ap.Earthbendingstyle()
gryffindor = ap.Tidal()
ravenclaw = ap.Windy()

deer = ap.Tidal()
ram = ap.Firepower()
longhorn = ap.Earthbendingstyle()
hummingbird = ap.Windy()

cry = ap.Windy()
yell_back = ap.Firepower()
i_dont = ap.Earthbendingstyle()
try_to_understand_them = ap.Tidal()

waterbending = ap.Earthbendingstyle()
firebending = ap.Windy()
earthbending = ap.Tidal()
airbending = ap.Firepower()


def Done():
    # 修正:访问实例ap的积分属性而非类属性,同时将结果文本翻译为中文
    if ap.waterbender >= 11:
        print("“水是变化的元素。水善部落的族人能够适应诸多变故,他们骨子里的集体意识与爱意支撑着彼此渡过任何难关。”——爱洛。你是御水师,这段描述完全贴合你的特质。你未必喜欢变化,但总能从容应对,身边也有一群坚定的朋友陪你走过所有路程。只是要注意你天性乐于付出,别被别有用心的人利用。") 
    elif ap.firebender >= 11:
        print("“火是力量的元素。火烈国的族人有强烈的渴望与意志,有足够的能量和内驱力去实现自己的目标。”——爱洛。你是御火师,这非常酷。你的决心和机敏可能会吓到一部分人,但别因此停下追逐目标的脚步,真正值得留在你生命里的人,会在你攀向顶峰的路上一直为你加油。")
    elif ap.airbender >= 10:
        print("“气是自由的元素。气和族的僧人脱离世俗烦忧,找到了平静与自由,而且他们显然都很有幽默感。”——爱洛。你是御气师,这种特质有时看起来有点矛盾:你是朋友里最孩子气的那个,却有着远超年龄的智慧。大多数人摸不透你,希望你“选个明确的活法”,别听他们的,做你自己就好。")
    elif ap.earthbender >= 11:
        print("“土是实在的元素。大土国的族人多元又强大,他们坚韧、隐忍、持之以恒。”——爱洛。你是御土师,这种特质常被人误解:大家觉得你固执甚至有点粗线条,但你只是在保护自己和在乎的人。不过偶尔也可以灵活一点,不用事事都硬扛。")
    else:
        print("你是降世神通。你是个相当均衡的人,大概率是朋友圈里的和事佬,也是家里“靠谱”的那个孩子。记得多留点时间给自己,别忘了你手里握着的力量。")

# 调用函数执行判断
Done()

运行说明

  • 按照当前的测试计分逻辑,四类御术的积分均为7,未达到单类判定阈值,运行后会正常输出else分支的降世神通结果
  • 后续调整题目对应计分逻辑时,只要保持调用实例ap的四个加分方法即可,判断逻辑不需要额外改动
  • 如果要避免全局变量依赖,可以把ap作为参数传入Done函数,写法更规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 00:51:27