两个python元素的子结构如何执行?

2024-06-03 02:35:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个新的列表,执行两个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()

但是^{cd1>}始终为空,例如^{{cd2>}或^{{cd3>}

我遵循了以下所有可能的解决方案:

有人能指出我出了什么问题吗?


Tags: ofinnumberforsizegetdefstrength
2条回答

您正在方法中分配本地列表,但它们不是全局的。因此,定义的顶行始终为空。您应该解决此问题:

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)

然而,在任何地方使用全局变量是不好的。你可能需要一个有返回值的函数。在


当您在一个函数中指定相同名称的变量时,它将覆盖全局变量的名称,直到您从函数返回为止。或者说,如果你查找一个变量,它首先在locals()中查找名称,如果没有找到,它将转到globals()。如果仍然找不到任何内容,将引发异常。在

我不确定这就是你要找的。我对你的代码做了一个小小的修改。我删除变量声明并修改函数。在

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)
    return(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)
    return(player_strength)

def compare_strength(x,y):        
    resulten_strength = [a*b for a,b in zip(x,y)]     
    return(resulten_strength)

def main():
    number_villains_players = input("How many Players/Villains?:")
    x = get_villain_strength(number_villains_players)
    y = get_player_strength(number_villains_players)
    print (compare_strength(x,y))

相关问题 更多 >