【问题标题】:Non-iterable value self.hand is used in an iterating context不可迭代值 self.hand 在迭代上下文中使用
【发布时间】:2021-06-07 16:32:20
【问题描述】:

我正在开发一个可用于玩二十一点 (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

显示错误 Non-iterable value self.hand is used in an itating context。 我希望有人能帮帮忙!问候,非常感谢。

【问题讨论】:

  • 您正在尝试遍历初始化为 None 的 self.hand。你不能遍历 None 数据类型。
  • 究竟抛出了什么错误?这听起来像是 pylint 错误,而不是运行时错误

标签: python discord discord.py bots blackjack


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2023-04-06
    相关资源
    最近更新 更多