2017-09-05 158 views
0

預期輸出: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) 
+0

'X = '你的平均得分:' + STR(平均)' – Julien

+0

X ='你的平均分數:%s',意思是;打印(平均分數) –

回答

1

在這種情況下,您返回x作爲元組。所以這就是爲什麼當你簡單地打印x時,你會得到一個元組作爲輸出。您應該使用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

我建議改變使用逗號來加。這會改變你設置變量x:

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

這將妥善處理字符串連接,而逗號將產生一個元組。

此外,如果您使用python 3.6,您可以使用fstrings,一個非常方便的字符串插值工具。這將改變線看起來像這樣:

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

然後,你可以返回字符串形式的x。

0

Python支持在函數中返回多個值,只需使用,分隔它們即可。在你的情況下,Python認爲你是這樣做的,因此返回一個元組。

返回一個字符串,只需CONCAT字符串+

x = 'Your average score: ' + str(mean) 
return x 

或者,使用字符串格式

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