int对象不是一个可迭代的python问题



所以我一直得到

File "main.py", line 77, in <module>
dealer_cards_total = sum(dealer_cards)
TypeError: 'int' object is not iterable

我尝试了各种"解决方案",并尝试分析与我有相同错误的其他程序,但我似乎什么都找不到,我使用一长串标签根据程序标记了错误的来源,以下是代码:

import random
import time

Ace = 11
Jack = 10
Queen = 10
King = 10

cards = [Ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King]

e = 0
Ace_21 = False
player_bal = 0
dealer_bal = 0
player_cards = []
dealer_cards = []
player_cards_total = 0
dealer_cards_total = 0
card = ''
move = ''
moves = 0
def get_card():
return(int(cards[random.randrange(1, 13)]))

dealer_cards =  [get_card()]
player_cards = [get_card(), get_card()]
player_cards_total = sum(player_cards)

def get_move():

if moves == 0:
print('nDealer's cards: ', dealer_cards)
print('Your cards: ', player_cards,'nTotal: ', player_cards_total)
move = input('Chose your next move: ')
if move in ['h', 'Hit']:
move = 'hit'
elif move in ['s', 'Stand']:
move = 'stand'
return(move)

while player_cards_total < 21:
player_cards_total = sum(player_cards)
dealer_cards_total = sum(dealer_cards)
if player_cards_total > 20:
print('nn//////////////////////////nDealer's cards: ', dealer_cards)
print('Your cards: ', player_cards,'nTotal: ', player_cards_total, 'n//////////////////////////')
print('nBUSTn')
break
move = get_move()

if move == 'hit':
player_cards.append(get_card())
else:
break
######################################### lines:
if player_cards_total > 21:                66
print('You lose!!!')                    67
elif player_cards_total == 21:             68
print('Great job, you win')              69
else:                                      70
print('DEALER'S TURN')                  71
while dealer_cards_total < 20:           72
if e == 0:                             73
dealer_cards.append(get_card())      74
e = 1                                75
print(dealer_cards)                    76
dealer_cards_total = sum(dealer_cards) 77
dealer_cards = get_card()              78
#####################################################
if dealer_cards_total == 21:
print('YOU LOSE')
elif dealer_cards_total > 21:
print('DEALER BUSTEDnYOU WIN!!!')
elif dealer_cards_total > player_cards_total and dealer_cards_total < 22:
print('YOU LOSE')
else:
print('YOU WIN')

这可能是一个简单的解决方案,但我有点像一个工程师,在之前我还没有遇到过这个问题

错误发生在以下行:

dealer_cards_total = sum(dealer_cards) 
dealer_cards = get_card()              

原因是sum((需要一个列表。

但是,get_card((返回一个整数。因此,在第一次迭代之后,dealer_cards从列表变为整数。

似乎你在脚本的开头就解释了这一点:

dealer_cards =  [get_card()]

在不评估脚本其余部分的情况下,似乎至少解决方案应该放在某个地方,确保dealer_cards仍然是一个列表。

最新更新