如何使用Python从2个列表和其他字典创建字典?

时间:2020-05-31 10:58:00

标签: python list dictionary for-loop while-loop

回答here

1。首先,如上面的代码所示,我创建了变量POWERgandalfsaruman,然后创建了一个名为spells的变量来存储巫师的法术数量投。

代码

POWER = {
    'Fireball': 50, 
    'Lightning bolt': 40, 
    'Magic arrow': 10, 
    'Black Tentacles': 25, 
    'Contagion': 45
}

gandalf = ['Fireball', 'Lightning bolt', 'Lightning bolt', 'Magic arrow', 'Fireball', 
           'Magic arrow', 'Lightning bolt', 'Fireball', 'Fireball', 'Fireball']
saruman = ['Contagion', 'Contagion', 'Black Tentacles', 'Fireball', 'Black Tentacles', 
           'Lightning bolt', 'Magic arrow', 'Contagion', 'Magic arrow', 'Magic arrow']
spells=10

  1. 然后创建了两个变量,分别称为gandalf_wins和saruman_wins。将它们都设置为0。
gandalf_wins=0
saruman_wins=0
  1. 最后还有两个变量,分别称为gandalf_power和saruman_power,用于存储每个巫师的法术强度列表。
gandalf_power=[]
saruman_power=[]
  1. 战斗开始了!使用上面创建的变量,对拼写冲突的执行进行编码。请记住,如果一个巫师连续连续赢得3次法术冲突,他就会获胜。 如果冲突以平局结束,则连续获胜的计数器不会重新开始为0。记住打印谁是战斗的胜利者。

我被困在这里,因为我不知道如何为每个带有咒语和咒语威力的词典创建一个字典。那我该怎么比较呢?预先感谢!

5 个答案:

答案 0 :(得分:0)

我认为这些步骤的指示非常清楚,使用for循环足以解决第3部分。

对于第四部分,您可以使用zip来同时迭代两个列表。

for gandalf_pow, saruman_pow in zip(gandalf_power, saruman_power):
    # compare

答案 1 :(得分:0)

下面是使用zip遍历所有咒语并比较每回合的咒语威力的方法。

POWER = {
    'Fireball': 50, 
    'Lightning bolt': 40, 
    'Magic arrow': 10, 
    'Black Tentacles': 25, 
    'Contagion': 45
}

gandalf = ['Fireball', 'Lightning bolt', 'Lightning bolt', 'Magic arrow', 'Fireball', 'Magic arrow', 'Lightning bolt', 'Fireball', 'Fireball', 'Fireball']
saruman = ['Contagion', 'Contagion', 'Black Tentacles', 'Fireball', 'Black Tentacles', 'Lightning bolt', 'Magic arrow', 'Contagion', 'Magic arrow', 'Magic arrow']
spells=10

gandalf_wins=0
saruman_wins=0

for gandalf_spell, saruman_spell in zip(gandalf,saruman): 
    if POWER[gandalf_spell] > POWER[saruman_spell]: 
        gandalf_wins+=1 
    elif POWER[saruman_spell] > POWER[gandalf_spell]: 
        saruman_wins+=1 

print(f"Gandalf won {gandalf_wins} times, Saruman won {saruman_wins} times")

答案 2 :(得分:0)

您应该参考Python字典。它们就像列表和元组一样,唯一的区别是它们就像数据库的表,其中有用于存储不同值的行和列

https://www.w3schools.com/python/python_dictionaries.asp 寻求帮助

答案 3 :(得分:0)

我认为您不需要为此使用字典。您可以尝试:

for x in range(spells):
    gandalf_attack = POWER[gandalf[x]]
    saruman_attack = POWER[saruman[x]]
    if gandalf_attack>saruman_attack:
        # Do something
    elif gandalf_attack>saruman_attack:
        # Do something
    else:
        # Tie

答案 4 :(得分:0)

最后,我这样做并为我工作:

for spell in gandalf:
    gandalf_power.append(POWER[spell])

for spell in saruman:
    saruman_power.append(POWER[spell])

winner = ""

for g, s in zip(gandalf_power, saruman_power):    
    if g > s: 
        gandalf_wins+=1
        saruman_wins=0
    elif s > g: 
        saruman_wins+=1
        gandalf_wins=0

    if gandalf_wins==3:
        winner="Gandalf"
        break
    elif saruman_wins==3:
        winner="Saruman"
        break

if gandalf_wins < 3 and saruman_wins < 3:
    print("Tie.")
else:
    print(f"The winner is {winner}!")