Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 为什么它会将这些值附加到所有玩家身上,而不是一次附加一个?_Python 3.x - Fatal编程技术网

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
变量,以免重复使用