21点游戏错误?

2024-05-14 20:46:54 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的21点游戏,每次我运行它,我都会得到以下错误:

Traceback (most recent call last):
  File "...", line 42, in <module>
    mydeck = deck()
  File "...", line 9, in deck
    deck.append(suit+rank)
TypeError: Can't convert 'int' object to str implicitly

(我拿出文件的位置和名称)

我不知道为什么会这样。有人能帮忙吗?谢谢!你知道吗

# Blackjack Game

import random

def deck():
    deck = []
    for suit in ['H','S','D','C']:
        for rank in ['A',2,3,4,5,6,7,8,9,10,'J','Q','K']:
            deck.append(suit+rank)
    random.shuffle(deck)
    return deck

def pCount(cards):
    count = 0
    aceCount = 0
    for i in cards:
        if(i[1] == 'J' or i[1] == 'Q' or i[1] == 'K' or i[1] == 10):
            count += 10
        elif (i[1] != 'A'):
            count += int(i[1])
        else:
            aceCount += 1
    if aceCount == 1 and count >= 10:
        count += 11
    elif aceCount != 0:
        count += 1
    return count

def playingHands(deck):
        dealerhand = []
        playerhand = []
        dealerhand.append(deck.pop())
        dealerhand.append(deck.pop())
        playerhand.append(deck.pop())
        playerhand.append(deck.pop())

        while pCount(dealerhand) <= 16:
            dealerhand.append(deck.pop())
        return [dealerhand, playerhand]

game = ""
mydeck = deck()
hands = playingHands(dck)
dealer = hands[0]
player = hands[1]

while game != 'exit':
    dealerCount = pCount(dealer)
    playerCount = pCount(player)
    print ('Dealer has: ')
    print (dealer)
    print ('Player, you have: ')
    print (player)
    if playerCount == 21:
        print ('Blackjack! Player wins!')
        break
    elif playerCount > 21:
        print ('Player busts! With '+playerCount+' points. Dealer wins!')
        break
    elif dealerCount > 21:
        print ('Dealer busts! With '+dealerCount+' points. Player wins!')
        break
    game = input('What would you like to do? H: hit, S: stand? ')
    if game == 'H':
        player.append(deck.pop())
    elif playerCount > dealerCount:
        print ('Player wins with ' + playerCount + ' points')
        print ('Dealer has ' + dealer + ' or ' +dealerCount + ' points')
        break
    else:
        print ('Dealer wins!')
        print ('Dealer has ' + dealer + ' or ' +dealerCount + ' points')        

是的。 . . . . . . . . .. . . . . . . . 你知道吗

。。 . . . . . . . 你知道吗


Tags: orincountpopplayerprintdeckelif
2条回答

问题是您正在用str添加int(正如错误所说)。 试着把它们转换成str

my_list  = ['A',2,3,4,5,6,7,8,9,10,'J','Q','K']

for i in my_list:
    print(i)
# Return the error

for i in my_list:
    print(str(i))

# print the list

我尽我所能修复了你的游戏。现在我可以弹了。你知道吗

import random

def deck():
    deck = []
    for suit in ['H','S','D','C']:
        for rank in ['A',2,3,4,5,6,7,8,9,10,'J','Q','K']:
            deck.append(suit+str(rank))
    random.shuffle(deck)
    return deck

def pCount(cards):
    count = 0
    aceCount = 0
    for i in cards:
        if(i[1] == 'J' or i[1] == 'Q' or i[1] == 'K' or i[1] == 10):
            count += 10
        elif (i[1] != 'A'):
            count += int(i[1])
        else:
            aceCount += 1
    if aceCount == 1 and count >= 10:
        count += 11
    elif aceCount != 0:
        count += 1
    return count

def playingHands(deck):
        dealerhand = []
        playerhand = []
        dealerhand.append(deck.pop())
        dealerhand.append(deck.pop())
        playerhand.append(deck.pop())
        playerhand.append(deck.pop())

        while pCount(dealerhand) <= 16:
            dealerhand.append(deck.pop())
        return [dealerhand, playerhand]

game = ""
mydeck = deck()
hands = playingHands(mydeck)
dealer = hands[0]
player = hands[1]

while game != 'exit':
    dealerCount = pCount(dealer)
    playerCount = pCount(player)
    print ('Dealer has: ')
    print (dealer)
    print ('Player, you have: ')
    print (player)
    if playerCount == 21:
        print ('Blackjack! Player wins!')
        break
    elif playerCount > 21:
        print ('Player busts! With '+str(playerCount)+' points. Dealer wins!')
        break
    elif dealerCount > 21:
        print ('Dealer busts! With '+str(dealerCount)+' points. Player wins!')
        break
    game = raw_input('What would you like to do? H: hit, S: stand? ')
    if game == 'H':
        player.append(deck().pop())
    elif playerCount > dealerCount:
        print ('Player wins with ' + playerCount + ' points')
        print ('Dealer has ' + str(dealer) + ' or ' +str(dealerCount) + ' points')
        break

    else:
        print ('Dealer wins!')
        print ('Dealer has ' + str(dealer) + ' or ' +str(dealerCount) + ' points')

试验

$ python pyprog.py 
Dealer has: 
['H2', 'S8', 'HJ']
Player, you have: 
['HK', 'C3']
What would you like to do? H: hit, S: stand? S
Dealer wins!
Dealer has ['H2', 'S8', 'HJ'] or 20 points
Dealer has: 
['H2', 'S8', 'HJ']
Player, you have: 
['HK', 'C3']
What would you like to do? H: hit, S: stand? S
Dealer wins!
Dealer has ['H2', 'S8', 'HJ'] or 20 points
Dealer has: 
['H2', 'S8', 'HJ']
Player, you have: 
['HK', 'C3']
What would you like to do? H: hit, S: stand? H
Dealer has: 
['H2', 'S8', 'HJ']
Player, you have: 
['HK', 'C3', 'H6']
What would you like to do? H: hit, S: stand? S
Dealer wins!
Dealer has ['H2', 'S8', 'HJ'] or 20 points
Dealer has: 
['H2', 'S8', 'HJ']
Player, you have: 
['HK', 'C3', 'H6']
What would you like to do? H: hit, S: stand? H
Dealer has: 
['H2', 'S8', 'HJ']
Player, you have: 
['HK', 'C3', 'H6', 'H6']
Player busts! With 25 points. Dealer wins!

相关问题 更多 >

    热门问题