Python 如何从列表中添加两次迭代的项目以形成一个总数(21点手牌中的牌)

Python 如何从列表中添加两次迭代的项目以形成一个总数(21点手牌中的牌),python,blackjack,Python,Blackjack,剧组是这样设置的 import random PlayersHand = [] DealersHand = [] Ranks = ["2", "3", "4", "5", "6", "7", "8", "9", "10","Ace", "Jack", "Queen", "King"] Suits = ["Hearts", "Diamonds", "Clubs", "Spades"] Deck = [] for num in Ranks: for suit in Suits:

剧组是这样设置的

import random

PlayersHand = []
DealersHand = []
Ranks = ["2", "3", "4", "5", "6", "7", "8", "9", "10","Ace", "Jack", "Queen", "King"]
Suits = ["Hearts", "Diamonds", "Clubs", "Spades"]
Deck = []
for num in Ranks:
    for  suit in Suits:
        card = num + ' of ' + suit
        Deck += [card]
        random.shuffle(Deck)

print()

for i in Deck:
    numval=(i[0]) 

PlayersHand = random.choices(Deck, k=2)
        print(name,"Your cards are", PlayersHand)
        DealersHand = random.choices(Deck, k=1)
        print("Dealer, your cards are Blank +",DealersHand)
        total = 0

  for i in PlayersHand:
        countval=(i[0])#to get the value of the card(perhaps need first two values for one or ten)
        print ("count is", countval);
        print("-------------")
        print(i)
    if countval == "J" or countval =="K" or countval =="Q": total +=10
    elif  countval =="A":
            total = 11
    else:
            total=countval

    print ("countval is",countval)
    print ("countval is",total)
在代码中,我加入了一些标记,以帮助我理解流程。 i值按应重复,但接受(第二个)值,我似乎无法单独获取和使用第一个值,以便添加它们。将countval1添加到countval2的ie将变为总计 然后我需要能够添加下一张新卡


我知道还有一些更好的方法我还不太了解(比如dicts等等),但我想这样完成它,因为我已经为此奋斗了这么久

请注意,在
if
语句的其他两个分支中,您忘记了
+
,因此没有将其添加到总数(
+=
)中,而是覆盖了该值(
=

假设
playersand
是一个可编辑的字符串对象(即列表),您的代码应该如下所示:

total = 0

for i in PlayersHand:
    countval = i[:2] # up to two characters

    if countval in 'JKQ':
        total += 10
    elif countval == 'A':
        total += 11
    else:
        total += int(countval) # cast a string to a number 

展示如何在问题中将“PlayersHand”设置为正确格式的代码。此外,由于这是一款21点游戏,您应该在随机生成器中植入加密安全字节-
导入操作系统;random.seed(os.Uradom(32))
谢谢Eric。我不知道那是什么,但我想这会让它更安全。我会查一下。我得到这个错误,因为代码没有将JKQ或A转换为它们的整数值。老实说,在sum(PlayersHand)中,在伪随机数生成器中植入加密安全的随机数对于这个项目来说似乎很愚蠢-我认为这是浪费时间。你正在努力把这个项目整合起来,因为它是你所拥有的知识,那么你为什么要花时间尝试实现一个功能,它只在实际的黑杰克游戏中相关,你知道,人们实际上在赌钱?试过了。仍然会得到一个错误,它将一个字符串添加到求和的int(PlayersHand)中。我怎样才能确保JKQA得到他们的数值并加到总数中呢?@PHogan现在这是一个单独的问题,但我建议你创建一个函数来返回卡片的值,比如说
card\u value
,然后计算
sum(玩家中c的card\u value(c)
。这似乎是个好主意@JakuJ。我还在学习如何正确使用函数。出于某种原因,他们的逻辑把我搞糊涂了。return()得到了我,它从来没有根据错误排列(缩进)。不管怎样,我要试试看。