格式化函数的返回值

时间:2015-11-06 07:39:53

标签: python function return-value

我有这个功能包含两个列表。其中一个字符串中有一串字符串,但另一个字符串中填充了随机数生成的整数。完成后,我有一个for语句,以我想要的格式打印出信息。但问题是,我可以在函数本身内格式化信息。但是我需要将数据传递给另一个函数并以相同的方式显示它

def charAbility():
    pAbility = ['Str', 'Dex', 'Con', 'Int', 'Wis', 'Cha']
    pScore = []
    i = 0
    while i < 6:
        randomNumber = random.randint(7, 18)
        pScore.append(randomNumber)
        i = i + 1
return pAbility, pScore

为了得到我想要在函数中打印的东西,我有这段代码:

for score, ability in zip(pAbility, pScore):
    print str(score) + ":\t\t " + str(ability)

有没有办法可以获取返回的值并在另一个函数中以相同的方式打印它?

3 个答案:

答案 0 :(得分:0)

我相信你只是在寻找这个:

param1, param2 = charAbility()

解释

您的方法返回两个值pAbility, pScore。如果你这样做只是:

param = charAbility()

您仍然可以访问两个回复,但是,它们会以tuple的形式返回:

正在发生的事情的简化示例:

def charAbility():
    return 1, 2
param = charAbility()
print(param)
(1, 2)

因此,要处理返回自己的变量,所以你可以将它传递给一个新方法,你应该使用我上面提供的例子。重新迭代:

param1, param2 = charAbility()

现在,您可以将param1(将保留pAbility)和param2(将持有pScore)传递给您需要将其发送到的任何其他方法:

some_other_method(param1, param2)

答案 1 :(得分:0)

我认为你正在寻找: -

def charAbility():
    pAbility = ['Str', 'Dex', 'Con', 'Int', 'Wis', 'Cha']
    pScore = []
    i = 0
    while i < 6:
        randomNumber = random.randint(7, 18)
        pScore.append(randomNumber)
        i = i + 1
    return pAbility, pScore

def otherFunc():
    score, ability = charAbility()

    for iscore, strability in zip(ability, pScore):
        print str(iscore) + ":\t\t " + str(strability)

otherFunc() # function in module scope

答案 2 :(得分:0)

您应该调用现有函数并将两个列表分配给两个不同的变量,或者将它们一起作为元组返回。然后使用字符串格式来打印结果是最干净的:

scorelist, abilitylist = charAbility()

for score,ability in zip(scorelist,abilitylist):
    print "{}:\t\t{}".format(score,ability)

或者,使用一个变量:

combinedlists = charAbility()

for pair in zip(*combinedlists):
    print "%s:\t\t%s" % pair