Python - for循环没有进入(二十一点游戏)

时间:2015-06-02 16:17:57

标签: python if-statement for-loop blackjack

我刚刚开始学习python,我的第一个项目是基于文本的Blackjack游戏。

pH值是球员的手,pTotal是球员牌的总数。

for循环似乎在第一次迭代后退出。当我在循环后打印pTotal和pH值时,它每次只显示第一张卡片的值。

代码:

import random

f = open('Documents/Python/cards.txt', 'r')
deck = f.read().splitlines()
f.close

pTotal = 0
cTotal = 0

random.shuffle(deck)

pHand = [deck[0], deck[1]]
cHand = [deck[2]]

for x in pHand:

    if deck[x][0] == '1' or deck[x][0] == 'J' or deck[x][0] == 'Q' or deck[x][0] == 'K':
        pTotal += 10
    elif deck[x][0] == 'A':
        pTotal += 11
    else:
        pTotal += int(deck[x][0])

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

我认为你想要的是

#using x as a list item
for x in pHand:

    if x[0] == '1' or x[0] == 'J' or x[0] == 'Q' or x[0] == 'K':
        pTotal += 10
    elif x[0] == 'A':
        pTotal += 11
    else:
        pTotal += int(x[0])

for-in循环使用pHand作为每个值的临时变量,遍历x中的项目。在您的情况下,在第一次迭代中,您有x = deck[0]。在第二次迭代中,您有x = deck[1]

在您发布的代码中,您尝试使用x作为索引,这很好,只要您为循环使用正确的值。

#using x as an index
for x in range(0, len(pHand)):

    if deck[x][0] == '1' or deck[x][0] == 'J' or deck[x][0] == 'Q' or deck[x][0] == 'K':
        pTotal += 10
    elif deck[x][0] == 'A':
        pTotal += 11
    else:
        pTotal += int(deck[x][0])