Python 3.x 为什么它会将这些值附加到所有玩家身上,而不是一次附加一个?
在我为纸牌游戏“战争”创建的一个程序中,我在给每个玩家发牌时遇到了麻烦。 代码看起来像Python 3.x 为什么它会将这些值附加到所有玩家身上,而不是一次附加一个?,python-3.x,Python 3.x,在我为纸牌游戏“战争”创建的一个程序中,我在给每个玩家发牌时遇到了麻烦。 代码看起来像 import random count = True class Player: def __init__(self, name, hand): self.name = name self.hand = hand players = [] hand = [] deck = ['Ace of Diamonds', '2 of Diamonds', '3 of
import random
count = True
class Player:
def __init__(self, name, hand):
self.name = name
self.hand = hand
players = []
hand = []
deck = ['Ace of Diamonds', '2 of Diamonds', '3 of Diamonds', '4 of Diamonds', '5 of Diamonds',
'6 of Diamonds', '7 of Diamonds', '8 of Diamonds', '9 of Diamonds', '10 of Diamonds', 'Jack of Diamonds', 'Queen of Diamonds', 'King of Diamonds', 'Ace of Hearts', '2 of Hearts', '3 of Hearts', '4 of Hearts', '5 of Hearts', '6 of Hearts', '7 of Hearts',
'8 of Hearts', '9 of Hearts', '10 of Hearts', 'Jack of Hearts', 'Queen of Hearts', 'King of Hearts', 'Ace of Spades', '2 of Spades', '3 of Spades', '4 of Spades', '5 of Spades', '6 of Spades', '7 of Spades',
'8 of Spades', '9 of Spades', '10 of Spades', 'Jack of Spades', 'Queen of Spades', 'King of Spades', 'Ace of Clubs', '2 of Clubs', '3 of Clubs', '4 of Clubs', '5 of Clubs', '6 of Clubs', '7 of Clubs',
'8 of Clubs', '9 of Clubs', '10 of Clubs', 'Jack of Clubs', 'Queen of Clubs', 'King of Clubs']
random.shuffle(deck)
while count == True:
try:
print()
player_count = int(input("Number of players: "))
if player_count == 0:
player_count = int('a')
count = False
except ValueError:
print("Oops, we counldn't understand that.")
print()
for i in range(1, player_count + 1):
name = input(f"Player {i}'s name: ")
card_count = 52 / player_count
while card_count > 0:
card = deck[0]
deck.remove(card)
hand.append(card)
card_count -= 1
players.append(Player(name, hand))
print()
for p in players:
print(f'{p.name} : {p.hand}')
print()
Number of players: 2
Player 1's name: jo
Player 2's name: bob
jo : ['8 of Hearts', '6 of Clubs', 'Ace of Hearts', 'Jack of Spades', 'King of Clubs', 'Queen of Spades', 'King of Spades', 'King of Diamonds', '8 of Clubs', '5 of Hearts', '8 of Diamonds', 'Jack of Clubs', '10 of Hearts', '5 of Diamonds', '4 of Hearts', '6 of Diamonds', '10 of Clubs', '7 of Diamonds', '4 of Spades', 'King of Hearts', '2 of Clubs', 'Queen of Clubs', '3 of Clubs', '6 of Hearts', '2
of Hearts', '4 of Diamonds', '5 of Spades', 'Ace of Spades', 'Queen of Hearts', '9 of Diamonds', 'Ace of Diamonds', '3 of Diamonds', 'Queen of Diamonds', 'Jack of Hearts', 'Ace of Clubs', '9 of Clubs', '8 of Spades', '2 of Spades', '6 of Spades', '3 of Spades', '10 of Spades', '7 of Spades', '9 of Spades', '4 of Clubs', '9 of Hearts', '5 of Clubs', '3 of Hearts', '2 of Diamonds', '7 of Hearts', '7 of Clubs', '10 of Diamonds', 'Jack of Diamonds']
bob : ['8 of Hearts', '6 of Clubs', 'Ace of Hearts', 'Jack of Spades', 'King of Clubs', 'Queen of Spades', 'King of Spades', 'King of Diamonds', '8 of Clubs', '5 of Hearts', '8 of Diamonds', 'Jack of
Clubs', '10 of Hearts', '5 of Diamonds', '4 of Hearts', '6 of Diamonds', '10 of Clubs', '7 of Diamonds', '4 of Spades', 'King of Hearts', '2 of Clubs', 'Queen of Clubs', '3 of Clubs', '6 of Hearts', '2 of Hearts', '4 of Diamonds', '5 of Spades', 'Ace of Spades', 'Queen of Hearts', '9 of Diamonds', 'Ace of Diamonds', '3 of Diamonds', 'Queen of Diamonds', 'Jack of Hearts', 'Ace of Clubs', '9 of Clubs', '8 of Spades', '2 of Spades', '6 of Spades', '3 of Spades', '10 of Spades', '7 of Spades', '9 of Spades', '4 of Clubs', '9 of Hearts', '5 of Clubs', '3 of Hearts', '2 of Diamonds', '7 of Hearts', '7
of Clubs', '10 of Diamonds', 'Jack of Diamonds']
如果我输入两个名为jo和bob的玩家,输出看起来像
import random
count = True
class Player:
def __init__(self, name, hand):
self.name = name
self.hand = hand
players = []
hand = []
deck = ['Ace of Diamonds', '2 of Diamonds', '3 of Diamonds', '4 of Diamonds', '5 of Diamonds',
'6 of Diamonds', '7 of Diamonds', '8 of Diamonds', '9 of Diamonds', '10 of Diamonds', 'Jack of Diamonds', 'Queen of Diamonds', 'King of Diamonds', 'Ace of Hearts', '2 of Hearts', '3 of Hearts', '4 of Hearts', '5 of Hearts', '6 of Hearts', '7 of Hearts',
'8 of Hearts', '9 of Hearts', '10 of Hearts', 'Jack of Hearts', 'Queen of Hearts', 'King of Hearts', 'Ace of Spades', '2 of Spades', '3 of Spades', '4 of Spades', '5 of Spades', '6 of Spades', '7 of Spades',
'8 of Spades', '9 of Spades', '10 of Spades', 'Jack of Spades', 'Queen of Spades', 'King of Spades', 'Ace of Clubs', '2 of Clubs', '3 of Clubs', '4 of Clubs', '5 of Clubs', '6 of Clubs', '7 of Clubs',
'8 of Clubs', '9 of Clubs', '10 of Clubs', 'Jack of Clubs', 'Queen of Clubs', 'King of Clubs']
random.shuffle(deck)
while count == True:
try:
print()
player_count = int(input("Number of players: "))
if player_count == 0:
player_count = int('a')
count = False
except ValueError:
print("Oops, we counldn't understand that.")
print()
for i in range(1, player_count + 1):
name = input(f"Player {i}'s name: ")
card_count = 52 / player_count
while card_count > 0:
card = deck[0]
deck.remove(card)
hand.append(card)
card_count -= 1
players.append(Player(name, hand))
print()
for p in players:
print(f'{p.name} : {p.hand}')
print()
Number of players: 2
Player 1's name: jo
Player 2's name: bob
jo : ['8 of Hearts', '6 of Clubs', 'Ace of Hearts', 'Jack of Spades', 'King of Clubs', 'Queen of Spades', 'King of Spades', 'King of Diamonds', '8 of Clubs', '5 of Hearts', '8 of Diamonds', 'Jack of Clubs', '10 of Hearts', '5 of Diamonds', '4 of Hearts', '6 of Diamonds', '10 of Clubs', '7 of Diamonds', '4 of Spades', 'King of Hearts', '2 of Clubs', 'Queen of Clubs', '3 of Clubs', '6 of Hearts', '2
of Hearts', '4 of Diamonds', '5 of Spades', 'Ace of Spades', 'Queen of Hearts', '9 of Diamonds', 'Ace of Diamonds', '3 of Diamonds', 'Queen of Diamonds', 'Jack of Hearts', 'Ace of Clubs', '9 of Clubs', '8 of Spades', '2 of Spades', '6 of Spades', '3 of Spades', '10 of Spades', '7 of Spades', '9 of Spades', '4 of Clubs', '9 of Hearts', '5 of Clubs', '3 of Hearts', '2 of Diamonds', '7 of Hearts', '7 of Clubs', '10 of Diamonds', 'Jack of Diamonds']
bob : ['8 of Hearts', '6 of Clubs', 'Ace of Hearts', 'Jack of Spades', 'King of Clubs', 'Queen of Spades', 'King of Spades', 'King of Diamonds', '8 of Clubs', '5 of Hearts', '8 of Diamonds', 'Jack of
Clubs', '10 of Hearts', '5 of Diamonds', '4 of Hearts', '6 of Diamonds', '10 of Clubs', '7 of Diamonds', '4 of Spades', 'King of Hearts', '2 of Clubs', 'Queen of Clubs', '3 of Clubs', '6 of Hearts', '2 of Hearts', '4 of Diamonds', '5 of Spades', 'Ace of Spades', 'Queen of Hearts', '9 of Diamonds', 'Ace of Diamonds', '3 of Diamonds', 'Queen of Diamonds', 'Jack of Hearts', 'Ace of Clubs', '9 of Clubs', '8 of Spades', '2 of Spades', '6 of Spades', '3 of Spades', '10 of Spades', '7 of Spades', '9 of Spades', '4 of Clubs', '9 of Hearts', '5 of Clubs', '3 of Hearts', '2 of Diamonds', '7 of Hearts', '7
of Clubs', '10 of Diamonds', 'Jack of Diamonds']
我认为正在发生的是,它第一次通过并将卡片附加到乔和鲍勃的手上。然后它经过第二次,做同样的事情。它为什么这样做,我如何阻止它,使其正常工作?
我已尝试更改
玩家的缩进和行。追加(玩家(姓名,手牌))
,但没有成功。您正在将牌发到顶级手牌
数组,并将其分配给每个玩家
,但从未重置它。在Player.append(Player(name,hand))
之后添加hand.clear()
,或在for
循环中声明hand
变量,以免重复使用