从输入动态创建python变量?

时间:2017-12-24 02:11:45

标签: python dictionary naming-conventions dynamic-variables

我正在努力使用python创建一个赢/输跟踪器,而我遇到的问题是为每种情况命名一个变量。显然,我无法预测跟踪器可能遇到的每一个案例(角色名称,游戏方法,玩游戏等),但我仍然想跟踪这些事情。

我正在创建一个变量来存储"方法"的值。游戏,无论是角色还是其他任何东西。有没有办法接收用户输入并将该字符串转换为变量名称,然后存储赢/输的数量?

我已经完成了一些研究,似乎许多与此类似的问题的答案是"使用字典",但如果我"可以&我怎样才能使用字典? #39; T"期待字典的名称?

1 个答案:

答案 0 :(得分:0)

解决问题的第一步是准确定义它。您打算如何使用您的赢/输跟踪器的一个示例将有助于明确您正在尝试做什么。

您很可能不需要/想要通过用户输入来定义变量名来存储获胜。而是为每组相关信息(例如来自一个用户的记录)创建字典。这本词典将存储用户的名字,他们的胜利和奖励。损失计数等。

我已经接近你可能在下面寻找的东西了。

function takeLowestAvailableID() {
    return minHeap.pop();
}

function freeID(int freed) {
    minHeap.push(freed);
}

示例输出:

#create list 
gameTracker=[]

#method to get string input from user. Extremely basic solely to answer question. If you actually intend to get user input you'll need proper type checking in these functions
def inputString(Message):
    return raw_input(Message)

def inputInt(Message):
    return int(raw_input(Message))

#Replace "InputString('')" with whatever function is returning user input   
#Loop twice & input records for 2 players in gameTracker list. Each player's records is stored in a dictionary
for i in range(2):
    gameTracker.append(
    {"playerName":inputString("Input player name: "), "playerMethod":inputString("Input method: "),"gamePlayed":inputString("Input game: "),"wins":inputInt("Input wins: "),"losses":inputInt("Input losses: ")}
    )


#Print values for each player (dictionary), from gameTracker list   
for i in range(len(gameTracker)):
    print(gameTracker[i])

#Update the win count for player named 'peter'
for i in range(len(gameTracker)):

    if gameTracker[i]['playerName']=="peter":
        #get new win count- replace with whatever method does this for your application
        newWinCount=inputInt("Enter new win count: ")

        gameTracker[i]['wins']=newWinCount

        #Add one win to record for player 'peter'
        gameTracker[i]['wins']+=1

        print(gameTracker[i])

更新玩家的新赢额后#34; peter"到14 + 1

Records for 2 players stored in "gameTracker"
{'playerName': 'peter', 'wins': 4, 'losses': 5, 'playerMethod': 'character', 'gamePlayed': 'GTA'}

{'playerName': 'david', 'wins': 5, 'losses': 6, 'playerMethod': 'character', 'gamePlayed': 'Zelda'}

在字典中定义键的名称,通过用户输入计算胜利(按照您的要求)。

{'playerName': 'peter', 'wins': 15, 'losses': 5, 'playerMethod': 
'character', 'gamePlayed': 'GTA'}

上述陈述的输出

gameTracker.append(
{inputString("Input wins variable name: "):inputInt("Input wins: ")}
)   
print(gameTracker[0])   

大多数时候,用户输入/变量定义键名称不是最佳解决方案。最好有可预测的名称,以便于操作。