亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么當我隨機選擇一個數字放入列表時,它總是選擇相同的起始數字?

為什么當我隨機選擇一個數字放入列表時,它總是選擇相同的起始數字?

夢里花落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 關注
  • 97 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號