2012-11-23 43 views
1

我有點新的Python創建一個類的實例,並一直在尋找在這一天的所有信息。我希望能夠詢問用戶他們想要多少個實例,並根據他們的輸入,按照他們的要求創建一個類的多個實例。的Python:在運行時根據用戶輸入

我也想能有每個實例的名稱是基於開關量輸入,如詢問對方的姓名或東西。

NumPlayers = input("How many people are playing? ") 
for i in range(0, int(NumPlayers)-1): 
    name = input("What is your name? ") 
    name = Player() 

這將類似於John = Player()但「約翰」是什麼名稱的用戶給了我們,並且會有然而衆多玩家的用戶希望。

從今天開始我的研究,似乎讓人們決定自己的實例的名稱是不是一個好主意,所以在這一點上,我沿着這個線路思考更多的東西:

NumPlayers = input("How many people are playing? ") 
for i in range(0, int(NumPlayers)-1): 
    name = input("What is your name? ") 
    Player+i = Player(name) 

這將是一樣Player1 = Player("John")等,爲更多的玩家。這是可能的嗎?它真的讓我感到困惑。爲了澄清一些事情,類本身已經在代碼中,在提供的代碼中,Player是一個已經用方法和所有東西定義的類。

+0

注意,[PEP-8](http://www.python.org/dev/peps/pep-0008/)儲量''CapWords''爲類,所以''NumPlayers''是一個本地變量的錯誤名稱。 –

回答

2

你所尋找的是一個數據結構,具體而言,list

no_players = input("How many people are playing? ") 
players = [] 
for _ in range(int(no_players)): 
    name = input("What is your name? ") 
    players.append(Player(name)) 

這將產生一個列表[Player(...), Player(...), ...]。這可以編入索引(players[2])或迭代(for player in players:)等操作。我建議你閱讀the documentation瞭解更多信息。

作爲一個方面說明,一些列表可以更漂亮了list comprehension構成。

+0

我不知道有一種方法來實例化除了簡單的X = something()之外的東西,謝謝一堆。 Append vs. Extend對我來說一直有點棘手,所以這非常有幫助。 – Tortilaman

0

由於Lattyware建議您正在尋找一個列表,把你的玩家進入。 我可以建議稍微修改一下你的程序,只要他們輸入一個新名字就可以接受盡可能多的球員嗎?

players = [] 
while True: 
    playername = input("Insert a new player (empty to begin):") 
    if playername: 
     players.append(Player(playername)) 
    else: 
     break 
相關問題