首页 > 解决方案 > 我如何为班级球员中的每个球员分配一个数字?

问题描述

我已经制作了这个简单的程序,到目前为止所做的只是创建坦克,但是我遇到了一个问题。我希望它分配一个对应于它的第一个第二个第三个或第四个等的数字......有人可以提前帮助我吗?

class Player:
    def __init__(self, name, tank_name):
        self.name = name
        self.tank_name = tank_name
        self.number = number


players = input('Please type player amount >>> ')

try:
    players = int(players)
except ValueError:
    print('Whoops... ' + players + ' is not a valid number. The auto amount is two players.')
    players = int(2)

number = 0


def new_player():
    name = input('What is your name >>> ')
    tank_name = input('What is your tanks name >>> ')
    number = str(number)
    number = Player(name, tank_name)


for i in range(0, players):
    number = int(number)
    number = number + 1
    new_player()
    print()
    print('Next player or end of player creation.')
    print()

标签: pythonclass

解决方案


您可以通过将numbernew_player更改为:

def new_player(number):
    name = input('What is your name >>> ')
    tank_name = input('What is your tanks name >>> ')
    return Player(name, tank_name, number)

请注意,我现在return将其创建Player为您忘记做的创建。

我们现在给numberPlayer所以我们需要改变__init__这个:

def __init__(self, name, tank_name, number):
    self.name = name
    self.tank_name = tank_name
    self.number = number

现在你实际上已经有了一个变量number,你每次都增加 1(使用number = number + 1),但你可以i直接像这样使用。因为每次都会为您range增加一:i

for i in range(0, players):
    player = new_player(i)
    print()
    print('Next player or end of player creation.')
    print()

请注意我是如何摆脱int使用的,因为i这里已经是一个整数。

如果您想从 1 而不是 0 开始播放器,您可以更改new_player(i)new_player(i + 1).


推荐阅读