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

Python类中字典操作报错:unsupported operand type(s) for +=: 'int' and 'NoneType'

问题分析与修复方案

看起来你遇到的问题是几个小代码错误导致的,咱们一步步拆解:

首先,错误提示 unsupported operand type(s) for +=: 'int' and 'NoneType' 说明你试图把None值加到整数类型的分数上,而None来自于self.d.get(plr_cur_value[i])这个调用。下面是具体问题和修复方案:

  • 变量引用错误:在deck_adjust方法里,你写的plr_cur_value[i]没有加self.前缀,Python会把它当成未定义的局部变量。你实际要访问的是类实例的self.plr_cur_value属性,必须写成self.plr_cur_value[i]。
  • 语法错误:self.plr_result_score + =中间多了空格,正确的赋值运算符是+=,空格会导致语法解析错误。
  • 缺少字典初始化:你的类里没有把原代码中的d={'9h':9, 'Qd':10}定义为实例属性self.d,导致deck_adjust方法里无法正确访问这个分数映射字典。

修正后的完整代码

我还优化了循环写法,让代码更简洁直观:

class PlayerScore:  # 替换成你实际的类名
    def __init__(self, plr_cur_value, plr_result_score):
        self.plr_cur_value = plr_cur_value
        self.plr_result_score = plr_result_score
        # 初始化分数映射字典作为实例属性
        self.d = {'9h':9, 'Qd':10}

    def deck_adjust(self):
        # 直接遍历列表元素,比range(len())更易读
        for card in self.plr_cur_value:
            if card in self.d:
                # 既然已确认card在字典中,直接用索引取值更高效,避免get返回None的可能
                self.plr_result_score += self.d[card]
        return self.plr_result_score

额外小建议

既然你已经通过if card in self.d确认了键存在,那么用self.d[card]比self.d.get(card)更合适——get方法是为了处理键不存在的场景,这里已经排除了这种情况,直接索引更高效也更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:40:28