我目前正在尝试制作二十一点游戏,并且我一直在努力计算手头的总数。
我的手牌将包括卡牌等级和卡牌适用于:
hand = ['C9','S4']
我知道如果那里没有字符串,你可以很容易地计算数字: 例如:
hand = ['9','4']
我可以很容易地做到:
hand = map(int,hand)
然后
sum(hand)
但我怎么想用里面的字符串来做呢? 如果除了使用我的方式之外还有其他任何好方法来计算总数,请随时发布。
答案 0 :(得分:3)
如果数值始终是排除第一个字符的字符串的一部分,那么您可以通过
实现sum([int(s[1:]) for s in hand])
答案 1 :(得分:1)
而不是只做一个map
,你可以做两个map
,一个得到第二个项目(假设你想要求和的值是第二个项目):
from operator import itemgetter
l = ['C9','S4']
sum(map(int, map(itemgetter(1), l)))
但是,您可以使用collections.namedtuple
(而不是使用普通tuple
的轻量级类)来代替使用字符串:
from collections import namedtuple
Card = namedtuple('Card', ['suit', 'rank'])
l = [Card('C', 9), Card('S', 4)]
sum(i.rank for i in l)