问题描述
我正在开发可用于玩二十一点 (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
设置为可迭代对象。