这是我的二十一点游戏,每次运行它都会出现此错误:
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')
。 。 。 。 。 。 。 。 。 .. 。 。 。 。 。 。
.. 。 。 。 。 。 。
答案 0 :(得分:1)
在我尽力修复之后,我尝试了你的游戏。现在我可以玩了。
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!
答案 1 :(得分:0)
问题是你用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