2

私は HTTLCS に取り組んできましたが、問題を解決するのに苦労しています。

問題を解決することは大した問題ではありませんでしたが、結果をタプル データ型ではなく文字列として返すのに苦労しました。

これが私のコードです:

def wordCount(paragraph):
    splited = paragraph.split()
    wordnum = len(splited)
    eWord = []
    for aWord in splited:
        if "e" in aWord:
            eWord.append(aWord)
    eWordnum = len(eWord)
    percent = round(eWordnum / wordnum * 100,2)
    return "Your text contains", wordnum, "words, of which" , eWordnum , "(" , percent , "%)" , "contains an 'e'." 



print(wordCount(p))

Python('Your text contains', 108, 'words, of which', 50, '(', 46.3, '%)', "contains an 'e'.")は文字列ではなくタプルを出力します。

関数の最後に print を置き、print() ステートメントなしで関数を呼び出すことができることはわかっていますが、return ステートメントを使用してこれを解決するにはどうすればよいでしょうか?

4

8 に答える 8

8

これは、Python がタプルとして解釈している return ステートメントでコンマを使用しているためです。format()代わりに使用してみてください:

def wordCount(paragraph):
    splited = paragraph.split()
    wordnum = len(splited)
    eWord = []
    for aWord in splited:
        if "e" in aWord:
            eWord.append(aWord)
    eWordnum = len(eWord)
    percent = round(eWordnum / wordnum * 100,2)
    return "Your text contains {0} words, of which {1} ({2}%) contains an 'e'".format(wordnum, eWordnum, percent)

>>> wordCount("doodle bugs")

"Your text contains 2 words, of which 1 (0.0%) contains an 'e'"
于 2012-06-07T15:10:51.623 に答える
1
return "Your text contains %s words, of which %s (%s%%) contains an 'e'." % (wordnum, eWordnum, percent)
于 2012-06-07T15:09:35.033 に答える
1
return "Your text contains " + str(wordnum) + 
       " words, of which " + str(eWordnum) + 
       " (" + str(percent) +  "%)" + " contains an 'e'."

また

return "Your text contains %s words, of which %s (%s%%) contains an 'e'." 
        % (wordnum, eWordnum, percent)

最初のケースでは、文字列の連結wordnumを行い、連結を許可するために、eWordnumおよび数値変数であるその他の変数をstr(実行して)に変換する必要がありますstr(variableName)(および実行時エラーがないため)。

2 番目のケースでは、文字列置換を行います。つまり、ある種の「プレースホルダー」 (文字列を意味します) を指定し、それらをシンボル%sに続くタプル引数に置き換えます。%

別のものを返す場合,は、タプルを返します(ご覧のとおり)

于 2012-06-07T15:10:09.793 に答える
1
return "Your text contains {0} words, of which {1} ({2}%) contains an 'e'.".format(wordnum,eWordnum,percent) 
于 2012-06-07T15:12:12.277 に答える
0

forループは機能する可能性がありますが、文字列にスペースを追加するには文字列をフォーマットする必要があります。

for item in tuplename: print item,

アイテムの後にコンマを付けるようにしてください。同じ行にコンマが印刷されるためです。

于 2012-06-07T15:11:44.703 に答える
0

これはどう

return "Your text contains " + wordnum + " words, of which " + eWordnum + " (" + percent + "%) " + " contains an 'e'."

カンマを「+」に置き換えると、これで機能するはずです。

于 2012-06-07T15:13:28.303 に答える
0
def wordCount(paragraph):
    splited = paragraph.split()
    wordnum = len(splited)
    eWord = []
    for aWord in splited:
        if "e" in aWord:
            eWord.append(aWord)
    eWordnum = len(eWord)
    percent = round(eWordnum / wordnum * 100,2)
    dummy =  "Your text contains {0} words, of which {1} {2} contains an 'e'.".format(wordnum,eWordnum, percent) 
    return dummy


print(wordCount(p))
于 2012-06-07T15:12:18.910 に答える
0

これを試して :

return "Your text contains %(wordnum)s words, of which %(ewordnum)s (%(percent)s %%), contains an 'e'."%locals()

多くの場合、文字列の書式設定%(variable_name)sとして使用する方が保守が簡単です。

于 2012-06-07T15:12:21.000 に答える