我试图用一个函数修改列表中的值,但失败了

2024-05-17 11:35:14 发布

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

deck = ['1c', '4s', '8s', '8h', '1h', '2s', '2c', '8h', 'ks', 'qd', '4d', 'jd', '7c', '10h', '5c', '10d', '3d', '9c', '7d', '4h', '2s']
powerCard = "1c"
def deckStrength(powerCard, deck):
#     global deck
    powerCardExists = False
    for card in deck:
        if card == powerCard:
            powerCardExists = True
    if(powerCardExists):
        deck.remove(powerCard)
    for card in deck:
        card = card[:-1]
    print(deck)

deckStrength(powerCard, deck)

如果运行此命令,输出将为:

['4s', '8s', '8h', '1h', '2s', '2c', '8h', 'ks', 'qd', '4d', 'jd', '7c', '10h', '5c', '10d', '3d', '9c', '7d', '4h', '2s']

如您所见,对于deckStrength函数中的last for循环,我试图去掉deck列表中每个字符串中的最后一个字符。这件事没有发生,为什么

我还想补充一点,我尝试在没有deck作为函数参数的情况下调用“global deck”,但是没有成功,所以我尝试了这个


Tags: infalsetrueforifdefcardglobal
1条回答
网友
1楼 · 发布于 2024-05-17 11:35:14

您需要创建一个新列表并将该列表分配给您的更改

例如:

deck = ['1c', '4s', '8s', '8h', '1h', '2s', '2c', '8h', 'ks', 'qd', '4d', 'jd', '7c', '10h', '5c', '10d', '3d', '9c', '7d', '4h', '2s']
powerCard = "1c"
def deckStrength(powerCard, deck):
#     global deck
    powerCardExists = False
    for card in deck:
        if card == powerCard:
            powerCardExists = True
    if(powerCardExists):
        deck.remove(powerCard)
    new_deck = [card[:-1] for card in deck]
    print(new_deck)

deckStrength(powerCard, deck)

相关问题 更多 >