一定数量的移动列表中的空格

2024-05-18 07:34:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试用Python制作一个简单的纸牌游戏。在

我必须能够移动我手牌列表中的任何一张牌,或者向左移动1或3个空格,如果已经在该位置的卡牌与号码或套牌匹配,那么我需要更换它。在

以下是我目前所做的尝试:

假设MN是指定要移动的空间数。 假设MC是指定移动那么多空格的卡。 假设手牌是我手中当前牌的列表。在

if MN == '1':
    Hand.replace(Hand[Hand.index(MC) - int(1)], MC)
if MN == '3':
    Hand.replace(Hand[Hand.index(MC) - int(3)], MC)

所以基本上我要找出如何移动指定的卡片(MC)在我的卡片列表(Hand)中正确的空格数(MN)。在

如果我的手是这样的:

^{pr2}$

然后我应该可以把3s1空间移到左边,让它代替KS,因为它们有相同的套件。在

[ JC,  4C,  7D,  3S]

提前谢谢你的帮助。在


Tags: 游戏列表indexif空间mcreplace号码
2条回答

我将使用列表的切片表示法:http://docs.python.org/tutorial/introduction.html#lists

例如,假设您有这样一个列表:

l = [1, 2, 3, 4, 5, 6, 7, 8]

如果您想将元素4移动到1个空间,可以这样做:

^{pr2}$

通过提取参数indexvaluespaces和{},这就足够普遍了,可以提取到一个好的函数中。尝试使用其他值(而不是1或3)。如果spaces太高,结果将是原始列表。在

如果要将元素向右移动而不是向左移动,则必须稍微更改表达式,但这是相同的想法。在

移动列表中的项目通常意味着将其从原始位置弹出并插入到所需位置。不幸的是,你的问题没有提供足够的信息来说明你的手牌和牌类是什么样子的,但是如果手牌是一个简单的列表,那么下面应该做:

HI = Hand.index(MC)
if (MN == '1') or (MN == '3'):
    Hand[HI - int(MN)] = MC
    Hand.pop(HI)

请注意,由于信息不足,这里省略了数字和套件的比较。在

相关问题 更多 >