在Python中使用for循环搜索并显示从列表中找到的内容

问题描述:

我一直在Python中制作一个简单的Blackjack游戏,并且我发现了一种从列表中随机选取一张卡片然后搜索不同的字母和数字。这将每张卡的分数加起来,所以用户不必自己做。这应该是这样的:在Python中使用for循环搜索并显示从列表中找到的内容

card1 = random.choice (all_possible) 
 

 
    all_possible.remove(card1) 
 

 
    add_face = set('JQK') 
 
    for faces in card1: 
 
     if add_face & set(faces): 
 
      user_cards +=10

这就是我已经通过在谷歌搜索想出简单的部分。我为每个数字2-10写出了相同的东西,这会将相应的数字添加到总分中。我的问题是如何在一组中搜索所有2-10并添加找到的数字。

,我试图让工作的一个例子是这样的:

card1 = random.choice (all_possible) 
 

 
    all_possible.remove(card1) 
 

 
    add_face = set('23456789') 
 
    for faces in card1: 
 
     if add_face & set(faces): 
 
      user_cards += ???????

的问题是我不知道如何结束的代码,以便它增加了相应的数字,它发现。

+0

你是如何定义每张卡的'分数'的?你想“加起来”是什么? – LittleQ

+0

'try:user_cards + = int(face)除了:pass'吗?或者使用字典,将脸部字符串映射到分数。这可能是最干净的解决方案恕我直言。 –

+0

@LittleQ我想把二十一点上每张牌的得分加起来。 Ace = 1;杰克,女王和国王= 10; 2-10 =相应的号码。这将告诉玩家他们的卡牌得分,而他们不必去解决它。我的方法很有效,但很长。 –

由于2到10张牌的得分只是他们的值,您可以尝试将牌的值转换为整数并将其添加到得分中。对于面卡,您可以使用字典,例如Q10。您也可以结合这两种方法:

values = {'J': 10, 'Q': 10, 'K': 10, 'A': 1} # score per value 
hand = ["SA", "H10", "DK", "C8"] # all the cards in a hand 
score = 0 # running score 
for card in hand: 
    suit, value = card[0], card[1:] # separate suit and value 
    try: 
     score += int(value) # handes cases 2 - 10 
    except ValueError: 
     score += values[value] # cases J, Q, K, A 

注意,然而,根据二十一点规则,王牌可以1个或11分,根据不同的情况,所以你可能要单独处理的王牌。

+0

对不起,没有提到这是我的错。 card1是以这种方式格式化的甲板上的卡:西装+数字/脸,例如,2 of spades = S2 –

+0

all_possible是用户可以获得的所有可能卡片的列表,一旦该卡片被选中,它将从列表中删除 –

+0

@NorbertD查看我的更新。这应该现在工作。 –

对不起。这比我想象的要容易得多。感谢您的答案,因为他们帮我重做我的代码,但我发现一个更容易的解决方案,这正是我之前使用,但稍微调整了:

card1 = random.choice (all_possible) 
 

 
    all_possible.remove(card1) 
 

 
    add_face = set('23456789') 
 
    for faces in card1: 
 
     if add_face & set(faces): 
 
      user_cards = float(user_cards) + float(faces)

正如你可以看到上面的“面对'变量是存储的号码,如果我把它添加到最后,它会起作用。我已经测试过这个,它可以工作,但如果你认为我错了,请告诉我,因为我仍然学习用Python编写代码,我想了解更多。

再次感谢您的帮助!