0

文字列内で最も頻繁に出現する char を見つけるために、次の関数を作成しました。次の場合にうまく機能します。

  1. "こんにちは世界!"
  2. "ごきげんよう?"
  3. "One" (文字列に一意の文字のみが含まれる場合、最初のアルファベット文字を返します)

次の文字列「Lorem ipsum dolor sit amet」で失敗します。最も頻繁に使用される文字はすべて 3 回出現し、そのうちの 1 つではなく空白の文字列になります (アルファベット順で最初の文字が表示されるはずです)。

def frequent_char(text):

    charset = ''.join(sorted(text))

    maxcount = 0
    maxchar = None

    for item in charset.lower():
        charcount = text.count(item)

        if charcount > maxcount :
            maxcount = charcount
            maxchar = item

    return maxchar

コード内でどのような間違いを犯しているのかわかりません。誰でも助けることができますか?

4

3 に答える 3

5

スペースには に4 つのオカレンスがありLorem ipsum dolor sit ametます。

あなたの問題が

文字列内で最も頻繁に出現する char を見つける

あなたの機能は魅力のように機能します。

編集:

質問で「char」と「letter」の両方を使用しているため、何を求めているのかが完全には明確ではありません。「文字」は Python の「文字」よりもはるかに簡単な概念であるため、私はあなたの質問を文字に関する質問として解釈することにしました。

于 2013-10-29T20:41:47.667 に答える
0

機能させるには、文字列からすべての空白を削除します。

def frequent_char(text):

    charset = ''.join(sorted(text))
    textTmp = text.replace(" ", "")  # add this to remove spaces
    maxcount = 0
    maxchar = None
    for item in charset.lower():
        charcount = textTmp.count(item)

        if charcount > maxcount:
            maxcount = charcount
            maxchar = item

return maxchar
于 2013-10-29T20:48:11.380 に答える