返回没有元组的平均值?

时间:2017-09-05 02:30:23

标签: python

预期输出:report_exam_avg(100,95,80)=='您的平均分数:91.7'

def report_exam_avg(a, b, c):
    assert is_number(a) and is_number(b) and is_number(c)

    a = float(a)
    b = float(b)
    c = float(c)
    mean = (a + b + c) / 3.0    
    mean = round(mean,1)    
    x = 'Your average score: ', mean
    return x 

实际输出:('你的平均分:',91.7)

注意:无法解压缩下面的元组,因为我需要返回未打印的句子

avg, score = report_exam_avg(100, 95, 80)
print(avg, score)

3 个答案:

答案 0 :(得分:1)

在这种情况下,您将x作为元组返回。所以这就是为什么当你只是打印x时你会得到一个元组作为输出。您应该使用Function中的print语句或修改函数,如下所示:

def report_exam_avg(a, b, c):
assert is_number(a) and is_number(b) and is_number(c)

a = float(a)
b = float(b)
c = float(c)
mean = (a + b + c) / 3.0    
mean = round(mean,1)    
x =  mean
return x

所以你对函数的调用将是:

print ("Your Avg. Score:", report_exam_avg(100, 95, 80))

答案 1 :(得分:1)

我建议将逗号的使用更改为加号。这会改变您设置变量x:

的位置
x = 'Your average score: ' + str(mean)

这将正确处理字符串连接,而逗号将生成一个元组。

此外,如果你使用python 3.6,你可以使用fstrings,一个非常方便的字符串插值工具。这会将行更改为如下所示:

x = f'Your average score: {mean}'

然后您可以以字符串形式返回x。

答案 2 :(得分:0)

Python支持在函数中返回多个值,只需用,分隔它们。在你的情况下,Python认为你这样做,因此返回一个元组。

要返回字符串,只需使用+

连接字符串
x = 'Your average score: ' + str(mean)
return x

或者,使用字符串格式

x = 'Your average score: {}'.format(mean)
return x