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
相关产品推荐
相关产品推荐

