Python 21点循环故障

Python 21点循环故障,python,random,while-loop,blackjack,Python,Random,While Loop,Blackjack,所以我正在做一个21点模拟器来找出某些手牌赢或不赢的概率。我有一个while循环来循环一整副52张牌,直到剩下4张牌。在这里面,我有一个循环,让庄家抽签,直到他的计数达到17+,就像真正的21点。当我运行代码时,它将成功地运行一组代码,但每次只打印同一只手。代码如下: # <--- PROGRAM SETUP ---> import random # Drawing Card Function def draw_card(): # Card Values in 1 Deck

所以我正在做一个21点模拟器来找出某些手牌赢或不赢的概率。我有一个while循环来循环一整副52张牌,直到剩下4张牌。在这里面,我有一个循环,让庄家抽签,直到他的计数达到17+,就像真正的21点。当我运行代码时,它将成功地运行一组代码,但每次只打印同一只手。代码如下:

# <--- PROGRAM SETUP --->
import random

# Drawing Card Function
def draw_card():
    # Card Values in 1 Deck
    vals = [2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,
            8,8,8,8,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,
            10,10,10,10,10,10,10,10,10,11,11,11,11]
    # </--->

    dealer = 0
    player = 0
    bust = 21


    deck_count = 0
    hand_count = 0

    dealer_cards = []

    # <--- // --->

    cards = 52
    # Loop Hands Through Deck
    while(cards > 4):

        # Draw Card Loop
        while(dealer <= 16):
            card = random.choice(vals)
            vals.remove(card)
            dealer_cards.append(card)

            dealer = dealer + card

        hand_count = hand_count + 1
        cards = cards - len(dealer_cards)


        # <--- Results --->
        if 17 <= dealer <= 21:
            print "Hand: {}, Dealer Stands @ {}".format(hand_count, dealer)
            for i in dealer_cards:
                print "Card: {}".format(i)

        else:
            print "Hand: {}, Dealer Busts @ {}".format(hand_count, dealer)
            for i in dealer_cards:
                print "Card: {}".format(i)

    else:
        deck_count = deck_count + 1
        print "Deck {} is finished!".format(deck_count)

# <--- // --->

draw_card()

我可以修正什么使每只手都是唯一的画,而不是多次打印第一手?谢谢

在循环迭代之间,您实际上并没有清理经销商的手

因此,他可以只抽一张卡,从他19岁起,永远坚持下去,跳过内部
,而庄家<17
循环,从你的虚拟资金中攫取你的所有资金,因为他知道他有一手相当不错的牌


只需在结果if/else检查后设置
dealer=0

在循环迭代之间,您实际上并没有清除dealer的手

因此,他可以只抽一张卡,从他19岁起,永远坚持下去,跳过内部
,而庄家<17
循环,从你的虚拟资金中攫取你的所有资金,因为他知道他有一手相当不错的牌


只需在结果if/else检查后设置
dealer=0

您忘记在每次迭代之前重置
dealer
dealer\u卡
,因此您的
while(dealer 4):
经销商卡=[]
经销商=0
#抽卡环

while(经销商您忘记在每次迭代之前重置
经销商和
经销商卡,因此您的
while(经销商4):
经销商卡=[]
经销商=0
#抽卡环

虽然(庄家当<代码>庄家>16
和<代码>牌>4
时,循环会无休止地继续。重新思考你的不变量。当<代码>庄家>16
和<代码>牌>4
时,循环会无休止地继续。重新思考你的不变量。修复后,现在你需要正确处理ACE。很少有赌场站在软17上,当然也没有赌场t两个a作为半身像,就像这个代码一样。在这个问题解决之后,现在你需要正确处理a。很少有赌场站在soft 17上,当然没有一家像这个代码那样将两个a作为半身像来计算。
    Hand: 1, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 2, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 3, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 4, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 5, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 6, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 7, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 8, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 9, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 10, Dealer Stands @ 19
...All the way till the deck has less than 4 cards left.
while(cards > 4):
    dealer_cards = []
    dealer = 0

    # Draw Card Loop
    while(dealer <= 16):
        card = random.choice(vals)
        vals.remove(card)
        dealer_cards.append(card)

        dealer = dealer + card

...