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

Python类中遍历list对象的方法?Blackjack脚本开发问题求解

问题解决方案

缺陷根因

  • __str__ 方法要求最终返回一个完整的字符串,你将 return 语句直接写在了for循环内部,函数执行到第一次循环的return就会直接终止,不会遍历后续的牌,所以只能输出第一张牌的内容。

修正后的实现

你需要先遍历所有牌拼接成完整的输出字符串,最后再统一返回,修改后的Play_Pile类的__str__方法如下:

def __str__(self):
    if self.pile_owner == "HUMAN":
        # 先初始化空字符串存储所有牌的内容
        output_str = ""
        for card in self.pile_cards:
            output_str += f"{card.rank} of {card.suit}\n"
        # 遍历完成后统一返回,strip去掉末尾多余的换行
        return output_str.strip()
    elif self.pile_owner == "COMPY":
        # 增加判空逻辑,避免空牌堆时报索引错误
        if self.pile_cards:
            return f"{self.pile_cards[0].rank} of {self.pile_cards[0].suit}"
        return "No cards in pile"

可选优化

如果想要代码更简洁,HUMAN分支的循环拼接也可以用生成器表达式一行实现:

return "\n".join(f"{card.rank} of {card.suit}" for card in self.pile_cards)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:57:01