Dhr*_*v S 2 python int iterable
我一直试图获得列表的总和,使用函数将其值从字符串更改为int
player_hand = []
def card_type(player_hand):
card_value = 0
if player_hand[0] == 'A':
card_value = 11
if player_hand[0] == 'J':
card_value = 10
if player_hand[0] == 'Q':
card_value = 10
if player_hand[0] == 'K':
card_value = 10
if player_hand[0] == '2':
card_value = 2
if player_hand[0] == '3':
card_value = 3
if player_hand[0] == '4':
card_value = 4
if player_hand[0] == '5':
card_value = 5
if player_hand[0] == '6':
card_value = 6
if player_hand[0] == '7':
card_value = 7
if player_hand[0] == '8':
card_value = 8
if player_hand[0] == '9':
card_value = 9
if player_hand[0] == '1':
card_value = 10
def player_hit(card_deck):
rando = random.randint(0,len(card_deck)-1)
player_hand.append(card_deck[rando])
card_deck.remove(card_deck[rando])
Run Code Online (Sandbox Code Playgroud)
然后尝试使用找到播放器列表的总和
card_total = 0
print('Player was handed:')
for i in range(2):
print(player_hit(card_deck))
for i in len(player_hand)-1:
print('\n',sum(card_type(player_hand[i])))
Run Code Online (Sandbox Code Playgroud)
但是我得到一个错误
for i in len(player_hand)-1:
TypeError: 'int' object is not iterable
Run Code Online (Sandbox Code Playgroud)
我不明白问题是什么,因为我已经采取了值并将它们转换为int已经以及检查列表索引范围.请帮忙
len(player_hand) - 1只是一个整数,但是你编写的代码试图遍历它.您需要一个可迭代对象来执行for循环.试试这个:
for i in range(len(player_hand)):
# do your thing here
Run Code Online (Sandbox Code Playgroud)
另一种方法是直接player_hand迭代,因为它是可迭代的,就像这样:
for card in player_hand:
print('\n', card_type(card))
Run Code Online (Sandbox Code Playgroud)