不可迭代值 self.hand 用于迭代上下文

问题描述

我正在开发可用于玩二十一点 (Python) 的 discord 机器人。下面的代码应该是计算各自手的值:

class Player(object):
    def __init__(self,id=''):
        self.id = id
        self.hand = None
        self.status_text = ''
        self.bet = 0
        self.value = 0
        self.score = 0
        self.wins = 0
        self.no_response = 0
        self.request_leave = False
        self.playing = False

    def calculate_value(self):
        """Calculates value of player's hand"""
        if not self.hand:
            return 0
        num_aces = 0
        total_value = 0
        for card in self.hand:
            if pydealer.const.DEFAULT_RANKS['values'][card.value] == 13:
                num_aces += 1
                total_value += 11
            elif pydealer.const.DEFAULT_RANKS['values'][card.value] >= 10:
                total_value += 10
            else:
                total_value += int(card.value)

        while num_aces > 0 and total_value > 21:
                total_value -= 10
                num_aces -= 1
        return total_value

不幸的是我得到了

for card in self.hand:
    if pydealer.const.DEFAULT_RANKS['values'][card.value] == 13:
       num_aces += 1
       total_value += 11

显示错误不可迭代值 self.hand 在迭代上下文中使用。 我希望有人能帮帮忙!问候并非常感谢。

解决方法

您的 self.hand 被初始化为 None。 因此,在使用它运行之前,请确保将 self.hand 设置为可迭代对象。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...