为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梦里花落0921 2023-03-16 11:26:56
这是代码。我正在学习 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: 1020the percentage of 7 card hands that total 21 or less is 1 in 10.2import randomcard_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)
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

您用于“丢弃手牌并开始新手牌”的代码是:

hand.pop(all(hand))

这不会丢弃整只手(稍后解释这个表达式的含义)。

你应该使用:

hand.clear()

或者

hand = []

Integesting是方法的意思hand.pop(all(hand))。因为它真正做的是弹出非空数组的第二个元素。

因为all(hand)总是返回 True 并且hand.pop(True)被转换为hand.pop(1)并且它从数组中删除位置 1 的元素。

这就是位置“0”中的元素永远不会被触及的原因——因为你永远不会删除它。


查看完整回答
反对 回复 2023-03-16
  • 1 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信