我正在做一个练习,问我以下任务。我在第三个堆栈中:
创建两个名为gandalf和saruman的变量,并为其分配法术强度列表。创建一个名为spells的变量来存储巫师施放的咒语数量。
spells = 10
gandalf = [10, 11, 13, 30, 22, 11, 10, 33, 22, 22]
saruman = [23, 66, 12, 43, 12, 10, 44, 23, 12, 17]
创建两个名为gandalf_wins和saruman_wins的变量。将它们都设置为0。 您将使用这些变量来计算每个巫师获胜的冲突次数。
gandalf_wins=0
saruman_wins=0
我的解决方案是,但不比较列表中的所有元素,您能帮我吗?
for spells in saruman, gandalf:
if gandalf>saruman:
gandalf_wins += 1
elif saruman>gandalf:
saruman_wins += 1
print("Total gandalf wins:", gandalf_wins)
print("Total saruman wins:", saruman_wins)
答案 0 :(得分:0)
问题在于for循环的定义方式。您应该遍历列表中的元素,然后进行比较。
for s, g in zip(saruman, gandalf):
if g>s:
gandalf_wins += 1
elif s>g:
saruman_wins += 1
答案 1 :(得分:0)
您可以使用zip()来创建成对的咒语,因此可以轻松地比较它们:
gandalf_wins=0
saruman_wins=0
gandalf = [10, 11, 13, 30, 22, 11, 10, 33, 22, 22]
saruman = [23, 66, 12, 43, 12, 10, 44, 23, 12, 17]
for spells in zip(saruman, gandalf):
# iterations look like: [(10, 23), (11, 66), (13, 12)...]
gandalf_spell_power = spells[0]
saruman_spell_power = spells[1]
if gandalf_spell_power>saruman_spell_power:
gandalf_wins += 1
elif saruman_spell_power>gandalf_spell_power:
saruman_wins += 1
print("Total gandalf wins:", gandalf_wins)
print("Total saruman wins:", saruman_wins)
输出:
('Total gandalf wins:', 4)
('Total saruman wins:', 6)