Deb*_*anB -4 python python-3.x
我正在尝试创建一个新列表,执行两个 python 列表的逐元素子结构,如下所示:
from operator import add
number_villains_players = 0
villain_strength = []
player_strength = []
resulten_strength = []
def get_villain_strength(size):
villain_strength = [int(x) for x in input("Enter {} numbers of space separated strength of Villains:".format(size)).split()]
print(villain_strength)
def get_player_strength(size):
player_strength = [int(x) for x in input("Enter {} numbers of space separated energy of Players:".format(size)).split()]
print(player_strength)
def compare_strength():
#resulten_strength = [m-n for (m,n) in zip(player_strength,villain_strength)] #doesn't work
#resulten_strength = [sum(x) for x in zip(player_strength, villain_strength)] #doesn't work
#resulten_strength = [list( map(add, player_strength, villain_strength) )] #doesn't work
resulten_strength = [a*b for a,b in zip(player_strength,villain_strength)] #doesn't work
print(resulten_strength)
def main():
number_villains_players = input("How many Players/Villains?:")
get_villain_strength(number_villains_players)
get_player_strength(number_villains_players)
compare_strength()
if (i > 0 for i in resulten_strength):
print("WIN")
else:
print("LOSE")
main()
Run Code Online (Sandbox Code Playgroud)
但print(resulten_strength)始终为空作为[]或[[]]
我遵循了以下所有可能的解决方案:
谁能指出我哪里出错了?
您在方法中分配本地列表,它们不是全局的。因此定义的顶行总是空的。这应该可以解决您的问题:
def get_villain_strength(size):
global villain_strength
villain_strength = [int(x) for x in input("Enter {} numbers of space separated strength of Villains:".format(size)).split()]
print(villain_strength)
Run Code Online (Sandbox Code Playgroud)
然而,在任何地方使用全局变量都是不好的。你可能想要一个有返回值的函数。
当您在函数内分配相同名称的变量时,它将覆盖全局变量的名称,直到您从函数返回。或者说如果你查找一个变量,它首先在 中查找名称locals(),如果没有找到,它会去globals()。如果仍然没有找到,则会引发异常。
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |