首页 > 解决方案 > Python中的多值变量

问题描述

有没有办法为一个变量分配多个值?我正在编写单人纸牌游戏,并使用 ACE 到 KING 的值作为卡片。有没有办法为变量分配“ACE”的值和“1”的值等等,KING 是“13”?这不是必需的,但会使代码更简单,更容易创建。


谢谢大家,我目前有这个:

from collections import namedtuple
Card = namedtuple('Card', 'name value')
ace = Card(name="ACE", value=1)

当我这样做时: print(ace)我最终得到:Card(name="ACE", value=1)当我执行 ace.name 或 ace.value 时,我也会得到正确的结果。

有没有办法在列表中包含“ace”值,而只撤回名称?

标签: pythonpython-3.x

解决方案


您可以使用一个类或namedtuple包装两条数据

from collections import namedtuple

Card = namedtuple('Card', 'name value')
ace = Card(name="ACE", value=1)
king = Card(name="King", value=13)

自定义类可能会更好,因为这样您就可以实现类似的逻辑card1 < card2

我可以使声明 stackA + 1 == stackB 为真吗?

是的,如果您在 Card 类型上实现__radd__and__eq__方法,接受将其他 Cards 添加到 int 类型并将结果与​​其他 Card 类型进行比较


推荐阅读