2017-08-12 76 views
0

對Python很新穎。我有一個定義,我可以使用print()打印所需的所有內容,但無法找到返回所有這些信息的方法。以正確格式從python函數返回結果?

例如,計數的字母數,(下限和上限),我想返回到由測試打印以下ES的數量和百分比時:

"The text contains ", alpha_count, " alphabetic characters, of which ", ecount," (", letter_percent(ecount, alpha_count),"%) are 'e'." 

import math 

def analyze_text(text): 

    ecount = text.count("E") + text.count("e") 

    alpha_count = 0 

    def letter_percent(ecount, alpha_count): 
     return 100 * float(ecount)/float(alpha_count)  
    for letter in text: 
     if letter.isalpha() ==True: 
      alpha_count += 1 

測試的一個例子:

from test import testEqual 


text2 = "Blueberries are tasteee!" 
answer2 = "The text contains 21 alphabetic characters, of which 7 (33.3333333333%) are 'e'." 
testEqual(analyze_text(text2), answer2) 
+0

今後,請多加註意自己的格式。在提出您想要得到好評的問題時,演示很重要。 –

+0

這是我第一次在這個網站上。我只有3周的時間參加編程課程。我將努力在這樣的利基社區學習適當的禮儀。請耐心等待。如果您要將我的問題標記爲多餘/已經回答,或者說我的格式不正確,請同時告訴我關於何處以及如何在未來更好地格式化,因爲我沒有CLUE BECAUS I'M全新品牌。請參閱「對Python很新穎」。上面,謝謝。 –

+0

我用google搜索了一下,並且無法弄清楚如何正確地返回我的字符串格式。 –

回答

0

既然這樣,Y OU有一個返回這樣的功能:

('The text contains ', 
21, 
' alphabetic characters, of which ', 
7, 
' (', 
33.333333333333336, 
"%) are 'e'.") 

你誤會這個值的一個方面,它是不是一個字符串,而是一組對象。你想要的數據是這樣的:

The text contains 21 alphabetic characters, of which 7 (33.333333333333336%) are 'e'. 

這是一個字符串,而不是一個元組。


修復很簡單。在你的函數中,你必須返回一個字符串而不是元組。這是你會怎麼做:

def analyze_text(text): 
    ... 
    result = "The text contains ", alpha_count, " alphabetic characters, of which ", ecount," (", letter_percent(ecount, alpha_count),"%) are 'e'." # what you're currently returning 
    return ''.join(map(str, result)) # what you actually want to return 

現在,嘗試調用你的函數:

In [190]: analyze_text("Blueberries are tasteee!") 
Out[190]: "The text contains 21 alphabetic characters, of which 7 (33.333333333333336%) are 'e'." 

您還可以使用str.format,或舊式字符串格式化爲將數據插入到一個字符串的手段佔位符。

+0

我能夠得到它的工作。 –

+0

進口數學 高清analyze_text(文本): ecount = text.count( 「E」)+ text.count( 「E」) alpha_count = 0 高清letter_percent(ecount,alpha_count): 回報(ecount/alpha_count)* 100 在文本信: 如果letter.isalpha()== TRUE: alpha_count + = 1 返回(「文本包含{}字母字符,其中{}(的{}%)是'e'。「格式(alpha_count,ecount,letter_percent(ecount,alpha_count))) –

+0

我不知道如何格式化這個網站,對不起 –

0
return "The text contains %d alphabetic characters, of which %d (%f%%) are 'e'." % (alpha_count, ecount, letter_percent(ecount, alpha_count) 
0

這應該足夠了:

def ecounter(text): 
    text = text.lower() 
    ecount = 0 
    alpha_count = 0 
    for i in text: 
     if i == "e": 
      ecount += 1 
     if i.isalpha() == True: 
      alpha_count += 1 
    percent = (ecount/alpha_count) * 100 
    print("The text contains", alpha_count, "alphabetic characters, of which", ecount, "(", percent, "%) are 'e'.")