如何将变量和字符串一起添加以获取另一个变量

时间:2016-12-08 09:42:55

标签: python-3.x

我有一个名为enemyPokemon的词典,其中包含4个敌人的怪物,我有更多的词典,其中包含敌人可以做的动作,其中包括口袋妖怪的名字,然后是“战斗”。

我正在尝试从移动列表中随机移动,具体取决于你正在战斗的敌人,但是,我不知道该怎么做。

这是我写的代码:

x是一个变量,可以选择4个敌人的口袋妖怪中的一个。

enemyPokemon = {
    1: 'Slowpoke',
    2: 'Eevee',
    3: 'Piplup',
    4: 'Rattata',
}

SlowpokeFight = {
    1:'Water Pulse',
    2:'Zen Headbutt',
    3:'Tackle',
    4:'Rain Dance',
}
EeveeFight = {
    1:'Sand Attack',
    2:'Bite',
    3:'Double-Edge',
    4:'Last Resort',
}
PiplupFight = {
    1:'Water Sport',
    2:'Peck',
    3:'Bubble',
    4:'Drill Peck',
}
RattataFight = {
    1:'Tail Whip',
    2:'Quick Attack',
    3:'Hyper Fang',
    4:'Crunch',
}


randomMove = random.randint(1,4)
 whatEnemy = str(enemyPokemon[int(x)])+'Fight')
 print (str(whatEnemy[int(randomMove)]))
 print (randomMove)
 print (whatEnemy[int(x)])

2 个答案:

答案 0 :(得分:0)

改为使用嵌套字典,这样您就可以将动作映射到宠物小精灵。

你可以通过将它们分成两个词典来实现这一点。

import random

enemyPokemon = {
    1: 'Slowpoke',
    2: 'Eevee',
    3: 'Piplup',
    4: 'Rattata',
}

pokemonMoves = {
    'Slowpoke' : {
        1:'Water Pulse',
        2:'Zen Headbutt',
        3:'Tackle',
        4:'Rain Dance'
    },
    'Eevee' : {
        1:'Sand Attack',
        2:'Bite',
        3:'Double-Edge',
        4:'Last Resort'
    }
    # ...
}

randomMove = random.randint(1, 4)
enemy = enemyPokemon[randomMove]
move = pokemonMoves[enemy][randomMove]

print(enemy)
print(move)

您甚至可能倾向于只将一个口袋妖怪名称字典作为键,并将其移动字典作为值。

import random

pokemon = {
    'Slowpoke' : {
        1:'Water Pulse',
        2:'Zen Headbutt',
        3:'Tackle',
        4:'Rain Dance'
    },
    'Eevee' : {
        1:'Sand Attack',
        2:'Bite',
        3:'Double-Edge',
        4:'Last Resort'
    }
    # ...
}

# creates a list of all the keys (pokemon names from dict)
allPokemon = list(pokemon) 

randomMove = random.randint(1, 4)
enemy = random.choice(allPokemon)
move = pokemon[enemy][randomMove]

print(enemy)
print(move)

答案 1 :(得分:0)

如果你想从字符串中调用变量,这就是你需要的:

whatEnemy = globals()[(str(enemyPokemon[int(x)])+'Fight')]