猿问

为什么当我随机选择一个数字放入列表时,它总是选择相同的起始数字?

这是代码。我正在学习 Python,我尝试编写一个 Blackjack 脚本,该脚本可以计算在拥有 21 点或以下的情况下以 X 大小的手结束的几率。该代码应该不断地从牌组中添加随机卡片,直到达到一定数量的卡片。(我知道甲板通常不是无限的,这只是一个实验)


如果它在 X 手牌数量之前超过 21,则弃牌并开始新手牌。


但出于某种原因,每次它开始新手牌时,手牌列表都以与之前所有手牌相同的第一个整数开头,如下所示:


有人可以向我解释我做错了什么吗?


[8, 3, 2, 6, 2]

[8, 2, 3, 2, 5]

[8, 2, 2, 4, 3]

[8, 6, 2, 2, 2]

[8, 2, 2, 2, 7]

[8, 4, 5, 2, 2]

[8, 5, 2, 2, 2]

[8, 2, 2, 2, 6]

[8, 2, 2, 6, 3]

[8, 3, 6, 2, 2]

[8, 6, 2, 2]

total amount of hands: 1020

the percentage of 7 card hands that total 21 or less is 1 in 10.2

import random


card_deck = [2,3,4,5,6,7,8,9,10,11]


def blackjack_tracker(deck):


    hand = []

    trackers = 0

    count = 0

    ace = 0

    x = 0


    while trackers <10:


        if len(hand) < 7:

            hand.append(random.choice(deck))


            if len(hand) == 7 and sum(hand) <= 21:

                print(hand)

                hand.pop(all(hand))

                trackers += 1

                count += 1


            elif len(hand) == 7 and sum(hand) > 21:

                hand.pop(all(hand))

                count += 1

            




    print(hand)

    print('total amount of hands: {}'.format(count))

    print('the percentage of 7 card hands that total 21 or less is 1 in {}'.format(count/10))


blackjack_tracker(card_deck)


梦里花落0921
浏览 77回答 1
1回答

神不在的星期二

您用于“丢弃手牌并开始新手牌”的代码是:hand.pop(all(hand))这不会丢弃整只手(稍后解释这个表达式的含义)。你应该使用:hand.clear()或者hand&nbsp;=&nbsp;[]Integesting是方法的意思hand.pop(all(hand))。因为它真正做的是弹出非空数组的第二个元素。因为all(hand)总是返回 True 并且hand.pop(True)被转换为hand.pop(1)并且它从数组中删除位置 1 的元素。这就是位置“0”中的元素永远不会被触及的原因——因为你永远不会删除它。
随时随地看视频慕课网APP

相关分类

Python
我要回答