![](/img/trans.png)
[英]TypeError: 'int' object is not subscriptable in trying to make a blackjack game
[英]Trying to make a blackjack game kind of
總結問題
我正在嘗試制作一個簡單的二十一點程序,該程序為庄家 1-11 選擇兩個數字,也為玩家 1-11 選擇兩個數字。 我想制作一個循環,根據玩家輸入、擊中或停留的內容來檢查玩家是否擊中或停留。 如果他們擊中,我希望它在玩家牌組中添加一張牌,並讓他們選擇再次擊中或留下。
如果他們留下來,我希望經銷商檢查一組規則,這些規則是:
1:庄家的點數是否小於 17 且小於玩家的點數 1a:如果小於 17 且小於玩家的點數,將抽取一個新號碼 1-11 並將其添加到庄家手牌中 1b:它然后將運行檢查它是否具有以下條件的循環
2:庄家是否有 17-21 且是否多於閑家 2a:如果有任何數字 17-21 且多於閑家,則打印獲勝信息
3:庄家是否有超過 21 3a:如果有超過 21 則打印房屋破產信息
4:庄家是否多於玩家 4a:如果庄家多於玩家(但由於之前的檢查而小於 21),那么它會打印一個庄家獲勝消息
所以這就是我試圖用留命令完成的事情,到目前為止我還沒有發現任何問題。
但是,即使我不鍵入stay,我的命中命令也不會注冊。我試圖通過讓它打印一條消息並在我鍵入命中時結束循環來調試它,但無論如何它仍然會通過停留命令運行,我認為這可能是我的輸入轉換為字符串的問題。
不要對我太苛刻,哈哈,我上周只自學了如何編碼,並從 python 開始。
這是我遇到問題的代碼:
'''
else:
hitstay = True
while hitstay:
action = str(input("hit or stay? "))
dealer = sum(dealer_cards)
player = sum(player_cards)
if action == 'stay' or 'Stay':
if dealer < 17 and dealer < player:
dealer_cards.append(random.randint(1, 11))
dealer = sum(dealer_cards)
print(f"Dealer pulls {dealer_cards[-1]}\n"
f"Dealer now has {sum(dealer_cards)}")
if 17 <= dealer <= 21 and dealer > player:
print(f"House won! Dealer cards: {dealer_cards}, {sum(dealer_cards)}\n"
f"Player cards: {player_cards}, {sum(player_cards)}")
playing = False
hitstay = False
elif dealer > 21:
print(f'House busted! Dealer cards: {dealer_cards}')
playing = False
hitstay = False
elif dealer > player:
print(f'House wins, Dealer cards {dealer_cards}, {sum(dealer_cards)}\n'
f'Player cards: {player_cards}, {sum(player_cards)}')
playing = False
hitstay = False
if action == 'hit' or 'Hit':
print('command hit')
playing = False
hitstay = False
'''
代替:
if action == 'stay' or 'Stay':
做:
if action == 'stay' or action == 'Stay':
或者:
if action in ('stay', 'Stay'):
或者最重要的是:
if action.lower() == 'stay':
第一個版本不起作用,因為它被解釋為:
if (action == 'stay') or 'Stay':
這與以下內容相同:
if (action == 'stay') or True:
這與以下內容相同:
if True:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.