簡體   English   中英

添加二十一點游戲的總數

[英]Adding totals for blackjack game

我正在開發一款與表情符號配合使用的二十一點游戲。 卡的價值不是為我計算的。 我的字典中每個鍵都有 4 個表情符號值。 沒有拋出任何錯誤,只是沒有添加值並打印 0。當我刪除or card==並將其替換為 just or時,總數似乎不斷增加

2946
2949
2953
2958
2964
if message.content.lower().startswith('!blackjack'):
    x = message.content.split(" ", 1)
    betamount = int(x[1])
    winner = eval(str(betamount*2))
    blackjackwinner = eval(str(betamount * 2.5))
    cardz = {2: ['<:h2:623593289823813632>', '<:d2:623593251307520011>', '<:c2:623593250896216074>', '<:s2:623593440180961281>'], 3: ['<:h3:623593289693528094>', '<:d3:623593251223502858>', '<:c3:623593250628042772>', '<:s3:623593440327893034>'], 4: ['<:h4:623593289697722388>', '<:d4:623593251269640241>', '<:c4:623593250980233226>', '<:s4:623593440101400586>'], 5: ['<:h5:623593289693659156>', '<:d5:623593251303194634>', '<:c5:623593250850340875>', '<:s5:623593440130760734>'], 6: ['<:h6:623593289970352179>', '<:d6:623593251043278879>', '<:c6:623593251009593344>', '<:s6:623593440118177822>'], 7: ['<:h7:623593289731276880>', '<:d7:623593251324166144>', '<:c7:623593250758066179>', '<:s7:623593440126435359>'], 8: ['<:h8:623593289387474975>', '<:d8:623593251374366720>', '<:c8:623593250757935150>', '<:s8:623593439899942935>'], 9: ['<:h9:623593289852911677>', '<:d9:623593251311714326>', '<:c9:623593250699214869>', '<:s9:623593440155926529>'], 10: ['<:h10:623593289723019265>', '<:d10:623593251395469372>', '<:c10:623593251072507918>', '<:s10:623593440147669003>'], 11: ['<:hjack:623593289379217412>', '<:djack:623593251127033877>', '<:cjack:623593251164782613>', '<:sjack:623593440269303857>'], 12: ['<:hqueen:623593289848717343>', '<:dqueen:623593251437412392>', '<:cqueen:623593251299131432>', '<:squeen:623593440571293706>'], 13: ['<:hking:623593289764962344>', '<:dking:623593251676487700>', '<:cking:623593251206856704>', '<:sking:623593440147406848>'], 14: ['<:hace:623593289769025546>', '<:dace:623593251470966789>', '<:cace:623593251122839572>', '<:sace:623593439946211345>']}

    def deal(cardz):
        hand = []
        for i in range(2):
            ran = random.randint(0,3)
            card = random.choice(list(cardz.values()))[ran]
            hand.append(card)
        return (''.join(hand))

    def total(hand):
        total = 0
        cardy = 0
        for card in hand:
            if card == "<:h2:623593289823813632>" or card== "<:d2:623593251307520011>" or card== "<:c2:623593250896216074>" or card== "<:s2:623593440180961281>":
                cardy += 2
                total+= 2
                print(total)
            if card == "<:h3:623593289693528094>" or card== "<:d3:623593251223502858>" or card== "<:c3:623593250628042772>" or card== "<:s3:623593440327893034>":
                cardy += 3
                total+= 3
                print(total)
            if card == "<:h4:623593289697722388>"or card== "<:d4:623593251269640241>"or card== "<:c4:623593250980233226>"or card== "<:s4:623593440101400586>":
                cardy += 4
                total+= 4
                print(total)
            if card == "<:h5:623593289693659156>"or card== "<:d5:623593251303194634>"or card== "<:c5:623593250850340875>"or card== "<:s5:623593440130760734>":
                cardy += 5
                total+= 5
                print(total)
            if card == "<:h6:623593289970352179>"or card== "<:d6:623593251043278879>"or card== "<:c6:623593251009593344>"or card== "<:s6:623593440118177822>":
                cardy += 6
                total+= 6
                print(total)
            if card == "<:h7:623593289731276880>"or card== "<:d7:623593251324166144>"or card== "<:c7:623593250758066179>"or card== "<:s7:623593440126435359>":
                cardy += 7
                total+= 7
            if card == "<:h8:623593289387474975>"or card== "<:d8:623593251374366720>"or card== "<:c8:623593250757935150>"or card== "<:s8:623593439899942935>":
                cardy += 8
                total+= 8
            if card == "<:h9:623593289852911677>"or card== "<:d9:623593251311714326>"or card== "<:c9:623593250699214869>"or card== "<:s9:623593440155926529>":
                cardy += 9
                total+= 9
            if card == "<:h10:623593289723019265>"or card== "<:d10:623593251395469372>"or card== "<:c10:623593251072507918>"or card== "<:s10:623593440147669003>":
                cardy += 10
                total+= 10
            if card == "<:hjack:623593289379217412>"or card== "<:djack:623593251127033877>"or card== "<:cjack:623593251164782613>"or card== "<:sjack:623593440269303857>" or card == "<:hqueen:623593289848717343>" or card== "<:dqueen:623593251437412392>"or card== "<:cqueen:623593251299131432>"or card== "<:squeen:623593440571293706>" or card == "<:hking:623593289764962344>"or card== "<:dking:623593251676487700>"or card== "<:cking:623593251206856704>" or card== "<:sking:623593440147406848>":
                cardy += 10
                total+= 10
            elif card == "<:hace:623593289769025546>" or card== "<:dace:623593251470966789>" or card== "<:cace:623593251122839572>" or card== "<:sace:623593439946211345>":
                if total >= 11:
                    cardy += 1 
                    total+= 1
                else: 
                    cardy += 11
                    total+= 11
            else:
                total += cardy
        return total


    dealer_hand = deal(cardz)
    player_hand = deal(cardz)

    print(total(dealer_hand))
    print(total(player_hand))

那里發生的事情是您遇到了操作順序問題。

如所寫,你有相當於

if (card == some_string) or (card == other_string):
   ...

如果您刪除card == ,則它相當於:

if (card == some_string) or other_string:
   ...

python 中的or工作方式本質上是:

def or(a, b):
    if a:
        return a
    return b

由於other_string始終是真實的,因此您遇到了錯誤。

你可能應該做的是說

if card in cardz[2]:
   ...

此外,如果將第一個if之后的所有代碼替換為elif ,您的代碼將運行得更快。 它們是相互排斥的東西,你應該這樣對待它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM