2017-12-24 29 views
1

나는 파이썬을 사용하여 승리/손실 추적기를 만들 일하고 있어요, 내가 실행 해요 문제이 가능합니다 각각의 경우에 대한 변수의 이름을 지정합니다. 분명히 나는 ​​추적자가 (캐릭터 이름, 게임 방법, 게임 플레이 등) 발생할 수있는 모든 경우를 예상 할 수는 없지만 여전히 이러한 것들을 추적하고 싶다. 입력에서 파이썬 변수를 동적으로 생성 하시겠습니까?

나는 그 문자 또는 무엇이든, 놀이의 "방법"의 값을 저장하는 변수를 생성하기 위해 노력하고 있습니다. 사용자 입력을 받고 해당 문자열을 변수 이름으로 변환하여 승 및 손실 수를 저장하는 방법이 있습니까?

나는 약간의 연구를했는데 이것과 비슷한 많은 질문에 대한 대답은 "사전 사용"이지만, 사전의 이름을 "예측할 수 없다"면 어떻게 사용할 수 있습니까? ?

+4

당신은 사용할 수 있습니다. 'd = {}; d [input_key] = input_value' –

답변

0

문제를 해결하는 첫 번째 단계는 정확히를 정의하는 것입니다. 승리/손실 추적기를 정확히 사용하려는 의도의 예는 자신이하려는 일을 정확하게 설명하는 데 도움이되었을 것입니다.

당신은 가장 가능성/필요가 없습니다 매장 승리에 사용자 입력에 의한 변수 이름을 정의합니다. 관련 정보의 각 그룹 (예 : 한 사용자의 레코드)에 대한 사전을 작성하십시오. 이 사전은 아마 당신은 아래에 무엇을 찾고 있는지 등 내가 근사했습니다

사용자의 이름, 자신의 승리 & 손실 계수를 저장합니다.

#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]) 

예 출력 :

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'} 

계산 사전에 키의 이름을 정의 14 + 1

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

에 플레이어 "피터을"새로운 승리의 카운트를 업데이트 한 후 사용자 입력을 통해 승리 (요청하신대로). 위의 진술의

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

출력은 사용자 입력에 의해 키 이름을 정의

Input wins: 5 
Input wins variable name: usr_peter_wns 
{'usr_peter_wns': 5} 

대부분의 시간/변수는 최선의 해결책이 아닙니다. 쉬운 조작을 위해 예측 가능한 이름을 갖는 것이 더 좋습니다. 당신에 대해 알 수있는 사전 *은 아직 알려져 있지 않다 무엇을 저장하기 위해 *

+0

프로그램의 유연성을 허용하기 위해 사용자 입력을 통해 "방법"(캐릭터 플레이, 게임 플레이 등)을 정의하고 싶습니다. 분명히 예를 들어 탁월한 승패 추적 시스템은 쉽게 구현할 수 있지만 게임의 매개 변수를 선택하고 한 번의 클릭으로 모든 정보를 채우지 않고 당첨 또는 낙찰을하고 싶습니다. 시각. 그것은 내 의도 된 사용법을 전혀 지우고 있습니까? 철저한 답변에 감사드립니다. 나는이 프로그램이 융통성있게 (경쟁의 승리/손실을 추적 할 수있는 능력에서) 있다는 아이디어를 가지고 있으므로 최대한 값을 하드 코딩하는 것을 피하고 싶습니다. –

+0

"나는 경기의 매개 변수를 선택하고 한 번의 클릭으로 승리 또는 손실이라고 부를 수 있기를 원합니다." 따라서 추적 프로그램은 각 게임에 대해 서로 다른 매개 변수로 게임의 승패를 계산합니다. 변수 이름이 생성되면 어떻게 할 수 있습니까? (위의 답변 업데이트 참조) 저는 여기에서 당신을 도우려고 노력하고 있지만 질문을 정확하게 공식화하는데 더 많은 노력을 기울일 필요가 있습니다. 문맥 및 프로세스는 무엇입니까? 시스템이 어떻게 작동하고 기대되는 결과를 가져올지를 설명하는 몇 가지 구체적인 사용 사례를 기술하십시오. 예를 들어, 플레이어 'matt'게임 'zelda'... " –