Python 为[字符串]/[列表中的项目]赋值
我正在创建一个纸牌游戏-21点-并且需要向用户显示一个字符串,但是要跟踪每张纸牌的计算值。因此,我创建了一个包含卡的所有值的列表:Python 为[字符串]/[列表中的项目]赋值,python,arrays,list,python-3.x,Python,Arrays,List,Python 3.x,我正在创建一个纸牌游戏-21点-并且需要向用户显示一个字符串,但是要跟踪每张纸牌的计算值。因此,我创建了一个包含卡的所有值的列表: cards = [1,1,1,1,2,2,2,2,3,3,3,3,...] 但是对于用户,例如,如果列表中的项目是13,我想显示King。如何制作包含这些值的字典/键或数组?我不能根据位置使用字典,因为一旦发了卡,我会将其从列表中删除/牌组您只需定义一个字符串列表: cardnames = ["Ace","2","3","4","5","6","7","8","9
cards = [1,1,1,1,2,2,2,2,3,3,3,3,...]
但是对于用户,例如,如果列表中的项目是
13
,我想显示King
。如何制作包含这些值的字典/键或数组?我不能根据位置使用字典,因为一旦发了卡,我会将其从列表中删除
/牌组
您只需定义一个字符串列表:
cardnames = ["Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]
现在,如果卡的值为v
,则可以使用cardnames[v-1]
获得相应的名称。例如:
v = 5
print("I have a %s"%cardnames[v-1])
在这种情况下,插孔的值为11,王后为12,国王为13。例如(使用python的交互式shell):
或者使用python3:
$ python3
Python 3.4.3 (default, Mar 26 2015, 22:03:40)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> cardnames = ["Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]
>>> v=12
>>> print("I have a %s"%cardnames[v-1])
I have a Queen
>>> v=7
>>> print("I have a %s"%cardnames[v-1])
I have a 7
>>> v=1
>>> print("I have a %s"%cardnames[v-1])
I have a Ace
>>> v=13
>>> print("I have a %s"%cardnames[v-1])
I have a King
在内部,您可以将卡表示为其值。王牌1分,国王13分,等等 你可以像你期望的那样建造你的“甲板”。[1,1,1,1,2,2,…]的列表,并根据需要进行操作 要向用户实际显示卡片,请使用Willem提到的卡片名列表。这将起作用,因为卡值1将对应卡名列表第一(零)位的卡名:“Ace” 例如:
Python 3.4.1 |Anaconda 2.1.0 (64-bit)| (default, Sep 10 2014, 17:10:18)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> cardnames = ["Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]
>>> hand = [1,1,2,4,6,3,11,8]
>>> for x in hand:
... print(cardnames[x-1])
...
Ace
Ace
2
4
6
3
Jack
8
>>> faces = {1: 'Ace', 11: 'Jack', 12: 'Queen', 13: 'King'}
>>> faces[1]
'Ace'
>>> faces[13]
'King'
>>> cards = [1,1,1,1,2,2,2,2,3,3,3,3,11]
>>> cards[1]
1
>>> faces[cards[1]]
'Ace'
你可以用字典把数字翻译成卡片名称。像这样:
faces = {
1: 'Ace',
2: '2',
3: '3',
...
11: 'Jack',
12: 'Queen',
13: 'King'
}
然后,你可以相应地给他们打电话。比如:
faces[cardnames[13]]
将等同于“国王”
详细说明一下,因为评论中有问题:
dict(faces是什么)是一组键值对。在这种情况下,“键”是卡的数值,“值”是卡的面(字符串)。通过dict的键引用dict中的值
比如说。如果我有一个像上面那样的口述,我会说:
faces[1]
那就是“王牌”。例如:
Python 3.4.1 |Anaconda 2.1.0 (64-bit)| (default, Sep 10 2014, 17:10:18)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> cardnames = ["Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]
>>> hand = [1,1,2,4,6,3,11,8]
>>> for x in hand:
... print(cardnames[x-1])
...
Ace
Ace
2
4
6
3
Jack
8
>>> faces = {1: 'Ace', 11: 'Jack', 12: 'Queen', 13: 'King'}
>>> faces[1]
'Ace'
>>> faces[13]
'King'
>>> cards = [1,1,1,1,2,2,2,2,3,3,3,3,11]
>>> cards[1]
1
>>> faces[cards[1]]
'Ace'
那么基本上你是在寻找字符串的位置?另外,为什么要使用
[v-1]
而不是[v+1]
,因为列表编号从0开始。您的卡系统的值似乎从1
开始。为了将1
映射到0
,2
映射到1
等,您可以使用1
进行减法。谢谢您的回答!我需要python33.4
,而不是python2。这不是问题。您可以使用Python 3.4完全复制该示例。谢谢!还有两件事。1.我需要每张卡的4张,而不是1张。那么,我如何使用它来找到卡片的位置呢?另外,我会重新整理这份名单,所以这个职位不会真的很好地发挥作用。我还没有完全理解。如果玩家的手是[2,2,6,12]
,该怎么办?或有2+的同一张卡。我觉得我需要一本字典,因为卡片使用后,我会把它从卡片组中删除。我的新编辑应该有助于解释事情。基本上,你保持你的名单和你的卡名单分开。你可以洗牌或者编辑你的名单,但是你的名单应该是静态的。太好了,非常感谢!为什么cardnames
在那里?@retep-这是您在问题中引用的卡值列表。我不知道代码的其余部分是什么样子,所以我假设您需要引用该列表。因此,dict(faces是什么)是一组键值对。在这种情况下,“键”是卡的数值,“值”是卡的面(字符串)。通过dict的键引用dict中的值。