首页 > 解决方案 > Python:如何获取列表中的对象,然后返回该对象的值(这是一个变量)?

问题描述

我创建了一个程序,它可以洗牌一副牌,将五张牌发给两个单独的玩家,然后返回每个玩家起始牌组的价值。

如何获取放入列表中的对象并打印出该对象的值?

例如:我所有的牌都在一个列表中,程序将列表洗牌并为玩家选择五张牌:diamond1, diamond5, spade2, club6, heart9

然后我希望钻石 1 等于 1,钻石 5 等于 5,等等。

我已经能够通过将每张卡放在自己的列表中来做到这一点,但我真的想知道是否有更好的方法来做到这一点。

这是我的代码:

import random

diamond1, heart1, club1, spade1 = 1, 1, 1, 1
diamond2, heart2, club2, spade2 = 2, 2, 2, 2
diamond3, heart3, club3, spade3 = 3, 3, 3, 3
diamond4, heart4, club4, spade4 = 4, 4, 4, 4
diamond5, heart5, club5, spade5 = 5, 5, 5, 5
diamond6, heart6, club6, spade6 = 6, 6, 6, 6
diamond7, heart7, club7, spade7 = 7, 7, 7, 7
diamond8, heart8, club8, spade8 = 8, 8, 8, 8
diamond9, heart9, club9, spade9 = 9, 9, 9, 9
diamond10, heart10, club10, spade10 = 10, 10, 10, 10
diamondJack, heartJack, clubJack, spadeJack = 11, 11, 11, 11
diamondQueen, heartQueen, clubQueen, spadeQueen = 12, 12, 12, 12
diamondKing, heartKing, clubKing, spadeKing = 13, 13, 13, 13

cards = ["diamond1", "heart1", "club1", "spade1", "diamond2", "heart2", "club2", "spade2", "diamond3", "heart3", "club3", "spade3",
     "diamond4", "heart4", "club4", "spade4", "diamond5", "heart5", "club5", "spade5", "diamond6", "heart6", "club6", "spade6",
     "diamond7", "heart7", "club7", "spade7", "diamond8", "heart8", "club8", "spade8", "diamond9", "heart9", "club9", "spade9",
     "diamond10", "heart10", "club10", "spade10", "diamondJack", "heartJack", "clubJack", "spadeJack", "diamondQueen", "heartQueen", "clubQueen",
     "spadeQueen", "diamondKing", "heartKing", "clubKing", "spadeKing"]

def player1StartingDeck():
#Tells which cards are going to be in player 1 and 2's starting hand

#Player1
card1, card2, card3, card4, card5 = cards[0], cards[1], cards[2], cards[3], cards[4]

player1Hand = card1, card2, card3, card4, card5
print("Player 1's hand consists of: " + card1 + ", " + card2 + ", " + card3 + ", " + card4 + ", " + card5)

#Player1
card1List, card2List, card3List, card4List, card5List = [card1], [card2], [card3], [card4], [card5]

#Player1
for i in card1List:
    #print(i)
    cardValue = 0

    if i == "diamond1" or i == "heart1" or i == "club1" or i == "spade1":
        cardValue = 1
    elif i == "diamond2" or i == "heart2" or i == "club2" or i == "spade2":
        cardValue = 2
    elif i == "diamond3" or i == "heart3" or i == "club3" or i == "spade3":
        cardValue = 3
    elif i == "diamond4" or i == "heart4" or i == "club4" or i == "spade4":
        cardValue = 4
    elif i == "diamond5" or i == "heart5" or i == "club5" or i == "spade5":
        cardValue = 5
    elif i == "diamond6" or i == "heart6" or i == "club6" or i == "spade6":
        cardValue = 6
    elif i == "diamond7" or i == "heart7" or i == "club7" or i == "spade7":
        cardValue, cardValue2, cardValue3, cardValue4, cardValue5 = 7, 7, 7, 7, 7
    elif i == "diamond8" or i == "heart8" or i == "club8" or i == "spade8":
        cardValue = 8
    elif i == "diamond9" or i == "heart9" or i == "club9" or i == "spade9":
        cardValue = 9
    elif i == "diamond10" or i == "heart10" or i == "club10" or i == "spade10":
        cardValue = 10
    elif i == "diamondJack" or i == "heartJack" or i == "clubJack" or i == "spadeJack":
        cardValue = 11   
    elif i == "diamondQueen" or i == "heartQueen" or i == "clubQueen" or i == "spadeQueen":
        cardValue = 12   
    elif i == "diamondKing" or i == "heartKing" or i == "clubKing" or i == "spadeKing":
        cardValue = 13   

    #print(cardValue)
    totalValuecard1 = cardValue
for i in card2List:
    #print(i)
    cardValue = 0

    if i == "diamond1" or i == "heart1" or i == "club1" or i == "spade1":
        cardValue = 1
    elif i == "diamond2" or i == "heart2" or i == "club2" or i == "spade2":
        cardValue = 2
    elif i == "diamond3" or i == "heart3" or i == "club3" or i == "spade3":
        cardValue = 3
    elif i == "diamond4" or i == "heart4" or i == "club4" or i == "spade4":
        cardValue = 4
    elif i == "diamond5" or i == "heart5" or i == "club5" or i == "spade5":
        cardValue = 5
    elif i == "diamond6" or i == "heart6" or i == "club6" or i == "spade6":
        cardValue = 6
    elif i == "diamond7" or i == "heart7" or i == "club7" or i == "spade7":
        cardValue, cardValue2, cardValue3, cardValue4, cardValue5 = 7, 7, 7, 7, 7
    elif i == "diamond8" or i == "heart8" or i == "club8" or i == "spade8":
        cardValue = 8
    elif i == "diamond9" or i == "heart9" or i == "club9" or i == "spade9":
        cardValue = 9
    elif i == "diamond10" or i == "heart10" or i == "club10" or i == "spade10":
        cardValue = 10
    elif i == "diamondJack" or i == "heartJack" or i == "clubJack" or i == "spadeJack":
        cardValue = 11   
    elif i == "diamondQueen" or i == "heartQueen" or i == "clubQueen" or i == "spadeQueen":
        cardValue = 12   
    elif i == "diamondKing" or i == "heartKing" or i == "clubKing" or i == "spadeKing":
        cardValue = 13   

    #print(cardValue)
    totalValuecard2 = cardValue    
for i in card3List:
    #print(i)
    cardValue = 0

    if i == "diamond1" or i == "heart1" or i == "club1" or i == "spade1":
        cardValue = 1
    elif i == "diamond2" or i == "heart2" or i == "club2" or i == "spade2":
        cardValue = 2
    elif i == "diamond3" or i == "heart3" or i == "club3" or i == "spade3":
        cardValue = 3
    elif i == "diamond4" or i == "heart4" or i == "club4" or i == "spade4":
        cardValue = 4
    elif i == "diamond5" or i == "heart5" or i == "club5" or i == "spade5":
        cardValue = 5
    elif i == "diamond6" or i == "heart6" or i == "club6" or i == "spade6":
        cardValue = 6
    elif i == "diamond7" or i == "heart7" or i == "club7" or i == "spade7":
        cardValue, cardValue2, cardValue3, cardValue4, cardValue5 = 7, 7, 7, 7, 7
    elif i == "diamond8" or i == "heart8" or i == "club8" or i == "spade8":
        cardValue = 8
    elif i == "diamond9" or i == "heart9" or i == "club9" or i == "spade9":
        cardValue = 9
    elif i == "diamond10" or i == "heart10" or i == "club10" or i == "spade10":
        cardValue = 10
    elif i == "diamondJack" or i == "heartJack" or i == "clubJack" or i == "spadeJack":
        cardValue = 11   
    elif i == "diamondQueen" or i == "heartQueen" or i == "clubQueen" or i == "spadeQueen":
        cardValue = 12   
    elif i == "diamondKing" or i == "heartKing" or i == "clubKing" or i == "spadeKing":
        cardValue = 13   

    #print(cardValue)
    totalValuecard3 = cardValue
for i in card4List:
    #print(i)
    cardValue = 0

    if i == "diamond1" or i == "heart1" or i == "club1" or i == "spade1":
        cardValue = 1
    elif i == "diamond2" or i == "heart2" or i == "club2" or i == "spade2":
        cardValue = 2
    elif i == "diamond3" or i == "heart3" or i == "club3" or i == "spade3":
        cardValue = 3
    elif i == "diamond4" or i == "heart4" or i == "club4" or i == "spade4":
        cardValue = 4
    elif i == "diamond5" or i == "heart5" or i == "club5" or i == "spade5":
        cardValue = 5
    elif i == "diamond6" or i == "heart6" or i == "club6" or i == "spade6":
        cardValue = 6
    elif i == "diamond7" or i == "heart7" or i == "club7" or i == "spade7":
        cardValue, cardValue2, cardValue3, cardValue4, cardValue5 = 7, 7, 7, 7, 7
    elif i == "diamond8" or i == "heart8" or i == "club8" or i == "spade8":
        cardValue = 8
    elif i == "diamond9" or i == "heart9" or i == "club9" or i == "spade9":
        cardValue = 9
    elif i == "diamond10" or i == "heart10" or i == "club10" or i == "spade10":
        cardValue = 10
    elif i == "diamondJack" or i == "heartJack" or i == "clubJack" or i == "spadeJack":
        cardValue = 11   
    elif i == "diamondQueen" or i == "heartQueen" or i == "clubQueen" or i == "spadeQueen":
        cardValue = 12   
    elif i == "diamondKing" or i == "heartKing" or i == "clubKing" or i == "spadeKing":
        cardValue = 13   

    #print(cardValue)
    totalValuecard4 = cardValue
for i in card5List:
    #print(i)
    cardValue = 0

    if i == "diamond1" or i == "heart1" or i == "club1" or i == "spade1":
        cardValue = 1
    elif i == "diamond2" or i == "heart2" or i == "club2" or i == "spade2":
        cardValue = 2
    elif i == "diamond3" or i == "heart3" or i == "club3" or i == "spade3":
        cardValue = 3
    elif i == "diamond4" or i == "heart4" or i == "club4" or i == "spade4":
        cardValue = 4
    elif i == "diamond5" or i == "heart5" or i == "club5" or i == "spade5":
        cardValue = 5
    elif i == "diamond6" or i == "heart6" or i == "club6" or i == "spade6":
        cardValue = 6
    elif i == "diamond7" or i == "heart7" or i == "club7" or i == "spade7":
        cardValue, cardValue2, cardValue3, cardValue4, cardValue5 = 7, 7, 7, 7, 7
    elif i == "diamond8" or i == "heart8" or i == "club8" or i == "spade8":
        cardValue = 8
    elif i == "diamond9" or i == "heart9" or i == "club9" or i == "spade9":
        cardValue = 9
    elif i == "diamond10" or i == "heart10" or i == "club10" or i == "spade10":
        cardValue = 10
    elif i == "diamondJack" or i == "heartJack" or i == "clubJack" or i == "spadeJack":
        cardValue = 11   
    elif i == "diamondQueen" or i == "heartQueen" or i == "clubQueen" or i == "spadeQueen":
        cardValue = 12   
    elif i == "diamondKing" or i == "heartKing" or i == "clubKing" or i == "spadeKing":
        cardValue = 13   

    #print(cardValue)
    totalValuecard5 = cardValue

totalValuePlayer1 = totalValuecard1 + totalValuecard2 + totalValuecard3 + totalValuecard4 + totalValuecard5
print("Player 1's starting hand value is: " + str(totalValuePlayer1))

def player2StartingDeck():

#Player2
card6, card7, card8, card9, card10 = cards[5], cards[6], cards[7], cards[8], cards[9]

player2Hand = card6, card7, card8, card9, card10
print("Player 2's hand consists of: " + card6 + ", " + card7 + ", " + card8 + ", " + card9 + ", " + card10)

#Player2
card6List, card7List, card8List, card9List, card10List = [card6], [card7], [card8], [card9], [card10]      

#Player2
for i in card6List:
    #print(i)
    cardValue = 0

    if i == "diamond1" or i == "heart1" or i == "club1" or i == "spade1":
        cardValue = 1
    elif i == "diamond2" or i == "heart2" or i == "club2" or i == "spade2":
        cardValue = 2
    elif i == "diamond3" or i == "heart3" or i == "club3" or i == "spade3":
        cardValue = 3
    elif i == "diamond4" or i == "heart4" or i == "club4" or i == "spade4":
        cardValue = 4
    elif i == "diamond5" or i == "heart5" or i == "club5" or i == "spade5":
        cardValue = 5
    elif i == "diamond6" or i == "heart6" or i == "club6" or i == "spade6":
        cardValue = 6
    elif i == "diamond7" or i == "heart7" or i == "club7" or i == "spade7":
        cardValue, cardValue2, cardValue3, cardValue4, cardValue5 = 7, 7, 7, 7, 7
    elif i == "diamond8" or i == "heart8" or i == "club8" or i == "spade8":
        cardValue = 8
    elif i == "diamond9" or i == "heart9" or i == "club9" or i == "spade9":
        cardValue = 9
    elif i == "diamond10" or i == "heart10" or i == "club10" or i == "spade10":
        cardValue = 10
    elif i == "diamondJack" or i == "heartJack" or i == "clubJack" or i == "spadeJack":
        cardValue = 11   
    elif i == "diamondQueen" or i == "heartQueen" or i == "clubQueen" or i == "spadeQueen":
        cardValue = 12   
    elif i == "diamondKing" or i == "heartKing" or i == "clubKing" or i == "spadeKing":
        cardValue = 13   

    #print(cardValue)
    totalValuecard6 = cardValue
for i in card7List:
    #print(i)
    cardValue = 0

    if i == "diamond1" or i == "heart1" or i == "club1" or i == "spade1":
        cardValue = 1
    elif i == "diamond2" or i == "heart2" or i == "club2" or i == "spade2":
        cardValue = 2
    elif i == "diamond3" or i == "heart3" or i == "club3" or i == "spade3":
        cardValue = 3
    elif i == "diamond4" or i == "heart4" or i == "club4" or i == "spade4":
        cardValue = 4
    elif i == "diamond5" or i == "heart5" or i == "club5" or i == "spade5":
        cardValue = 5
    elif i == "diamond6" or i == "heart6" or i == "club6" or i == "spade6":
        cardValue = 6
    elif i == "diamond7" or i == "heart7" or i == "club7" or i == "spade7":
        cardValue, cardValue2, cardValue3, cardValue4, cardValue5 = 7, 7, 7, 7, 7
    elif i == "diamond8" or i == "heart8" or i == "club8" or i == "spade8":
        cardValue = 8
    elif i == "diamond9" or i == "heart9" or i == "club9" or i == "spade9":
        cardValue = 9
    elif i == "diamond10" or i == "heart10" or i == "club10" or i == "spade10":
        cardValue = 10
    elif i == "diamondJack" or i == "heartJack" or i == "clubJack" or i == "spadeJack":
        cardValue = 11   
    elif i == "diamondQueen" or i == "heartQueen" or i == "clubQueen" or i == "spadeQueen":
        cardValue = 12   
    elif i == "diamondKing" or i == "heartKing" or i == "clubKing" or i == "spadeKing":
        cardValue = 13   

    #print(cardValue)
    totalValuecard7 = cardValue    
for i in card8List:
    #print(i)
    cardValue = 0

    if i == "diamond1" or i == "heart1" or i == "club1" or i == "spade1":
        cardValue = 1
    elif i == "diamond2" or i == "heart2" or i == "club2" or i == "spade2":
        cardValue = 2
    elif i == "diamond3" or i == "heart3" or i == "club3" or i == "spade3":
        cardValue = 3
    elif i == "diamond4" or i == "heart4" or i == "club4" or i == "spade4":
        cardValue = 4
    elif i == "diamond5" or i == "heart5" or i == "club5" or i == "spade5":
        cardValue = 5
    elif i == "diamond6" or i == "heart6" or i == "club6" or i == "spade6":
        cardValue = 6
    elif i == "diamond7" or i == "heart7" or i == "club7" or i == "spade7":
        cardValue, cardValue2, cardValue3, cardValue4, cardValue5 = 7, 7, 7, 7, 7
    elif i == "diamond8" or i == "heart8" or i == "club8" or i == "spade8":
        cardValue = 8
    elif i == "diamond9" or i == "heart9" or i == "club9" or i == "spade9":
        cardValue = 9
    elif i == "diamond10" or i == "heart10" or i == "club10" or i == "spade10":
        cardValue = 10
    elif i == "diamondJack" or i == "heartJack" or i == "clubJack" or i == "spadeJack":
        cardValue = 11   
    elif i == "diamondQueen" or i == "heartQueen" or i == "clubQueen" or i == "spadeQueen":
        cardValue = 12   
    elif i == "diamondKing" or i == "heartKing" or i == "clubKing" or i == "spadeKing":
        cardValue = 13   

    #print(cardValue)
    totalValuecard8 = cardValue
for i in card9List:
    #print(i)
    cardValue = 0

    if i == "diamond1" or i == "heart1" or i == "club1" or i == "spade1":
        cardValue = 1
    elif i == "diamond2" or i == "heart2" or i == "club2" or i == "spade2":
        cardValue = 2
    elif i == "diamond3" or i == "heart3" or i == "club3" or i == "spade3":
        cardValue = 3
    elif i == "diamond4" or i == "heart4" or i == "club4" or i == "spade4":
        cardValue = 4
    elif i == "diamond5" or i == "heart5" or i == "club5" or i == "spade5":
        cardValue = 5
    elif i == "diamond6" or i == "heart6" or i == "club6" or i == "spade6":
        cardValue = 6
    elif i == "diamond7" or i == "heart7" or i == "club7" or i == "spade7":
        cardValue, cardValue2, cardValue3, cardValue4, cardValue5 = 7, 7, 7, 7, 7
    elif i == "diamond8" or i == "heart8" or i == "club8" or i == "spade8":
        cardValue = 8
    elif i == "diamond9" or i == "heart9" or i == "club9" or i == "spade9":
        cardValue = 9
    elif i == "diamond10" or i == "heart10" or i == "club10" or i == "spade10":
        cardValue = 10
    elif i == "diamondJack" or i == "heartJack" or i == "clubJack" or i == "spadeJack":
        cardValue = 11   
    elif i == "diamondQueen" or i == "heartQueen" or i == "clubQueen" or i == "spadeQueen":
        cardValue = 12   
    elif i == "diamondKing" or i == "heartKing" or i == "clubKing" or i == "spadeKing":
        cardValue = 13   

    #print(cardValue)
    totalValuecard9 = cardValue
for i in card10List:
    #print(i)
    cardValue = 0

    if i == "diamond1" or i == "heart1" or i == "club1" or i == "spade1":
        cardValue = 1
    elif i == "diamond2" or i == "heart2" or i == "club2" or i == "spade2":
        cardValue = 2
    elif i == "diamond3" or i == "heart3" or i == "club3" or i == "spade3":
        cardValue = 3
    elif i == "diamond4" or i == "heart4" or i == "club4" or i == "spade4":
        cardValue = 4
    elif i == "diamond5" or i == "heart5" or i == "club5" or i == "spade5":
        cardValue = 5
    elif i == "diamond6" or i == "heart6" or i == "club6" or i == "spade6":
        cardValue = 6
    elif i == "diamond7" or i == "heart7" or i == "club7" or i == "spade7":
        cardValue, cardValue2, cardValue3, cardValue4, cardValue5 = 7, 7, 7, 7, 7
    elif i == "diamond8" or i == "heart8" or i == "club8" or i == "spade8":
        cardValue = 8
    elif i == "diamond9" or i == "heart9" or i == "club9" or i == "spade9":
        cardValue = 9
    elif i == "diamond10" or i == "heart10" or i == "club10" or i == "spade10":
        cardValue = 10
    elif i == "diamondJack" or i == "heartJack" or i == "clubJack" or i == "spadeJack":
        cardValue = 11   
    elif i == "diamondQueen" or i == "heartQueen" or i == "clubQueen" or i == "spadeQueen":
        cardValue = 12   
    elif i == "diamondKing" or i == "heartKing" or i == "clubKing" or i == "spadeKing":
        cardValue = 13   

    #print(cardValue)
    totalValuecard10 = cardValue

totalValuePlayer2 = totalValuecard6 + totalValuecard7 + totalValuecard8 + totalValuecard9 + totalValuecard10
print("Player 1's starting hand value is: " + str(totalValuePlayer2))

random.shuffle(cards)

#print(cards)

player1StartingDeck()
player2StartingDeck()

标签: pythonpython-3.x

解决方案


这是计算给定一组卡片总价值的解决方案。您可以使其适应您的解决方案。由于所有梅花、黑桃、方块、红心都具有相同的价值,因此您无需单独检查它们。

import numpy as np

cards1 = [s + str(i) for i in range(1,11) for s in ['diamond', 'heart', 'club', 'spade']]
cards2 = [s + i for i in ['Jack', 'Queen', 'King'] for s in ['diamond', 'heart', 'club', 'spade']]
cards = np.array(cards1+cards2)

hand = np.random.randint(0, len(cards), 5)
card_list =cards[hand]
total_value = 0
for card in card_list:
    if (card[-2:]).isdigit():
        total_value += int(card[-2:])
    elif  (card[-1:]).isdigit():
        total_value += int(card[-1:])
    elif card[-4:] == 'Jack':
        total_value += 11
    elif card[-5:] == 'Queen':
        total_value += 12
    else:
        total_value += 13    

print (card_list, total_value)

这里的技巧是首先查看字符串是否以数字结尾,在这种情况下,卡片的值只是等于该数字。如果不是这种情况,则意味着它是“杰克”、“女王”或“国王”。但是由于这些字符串的长度不一样,所以我们明确检查并添加相应的值。


推荐阅读