1

そのため、コンピューターにあるテキスト ファイルの母音 (具体的には eio) の数をカウントするプログラムを作成することができました。しかし、どれが最も多く発生するかを示す方法は、私の人生ではわかりません。私は次のようなことを言うと思いました

for ch in 'i':
    return numvowel?

ステップが何なのかよくわかりません。基本的には最後に「iという文字がテキストファイルの中で一番多く出てきました」と出力してもらいたい

def vowelCounter():
    inFile = open('file.txt', 'r')
    contents = inFile.read()

    # variable to store total number of vowels
    numVowel = 0

    # This counts the total number of occurrences of vowels o e i.
    for ch in contents:
        if ch in 'i':
            numVowel = numVowel + 1
        if ch in 'e':
            numVowel = numVowel + 1    
        if ch in 'o':
            numVowel = numVowel + 1

    print('file.txt has', numVowel, 'vowel occurences total')
    inFile.close()

vowelCounter()
4

5 に答える 5

3

どれが最も多く発生するかを示したい場合は、これまでのように1 つの合計カウントではなく、個々の母音のカウントを保持する必要があります

3 つの個別のカウンター (関心のある 3 つの母音ごとに 1 つ) を保持し、それらを合計して合計を取得できます。または、どの母音が最も多く発生するかを知りたい場合は、3 つのカウンターを比較して見つけることができます。

于 2016-02-14T19:42:30.187 に答える
1

正規表現を使用してみてください。 https://docs.python.org/3.5/library/re.html#regular-expression-objects

import re

def vowelCounter():

    with open('file.txt', 'r') as inFile:

        content = inFile.read()

        o_count = len(re.findall('o',content))
        e_count = len(re.findall('e',content))
        i_count = len(re.findall('i',content))

        # Note, if you want this to be case-insensitive,
        # then add the addition argument re.I to each findall function

        print("O's: {0}, E's:{1}, I's:{2}".format(o_count,e_count,i_count))

vowelCounter()
于 2016-02-14T19:53:01.927 に答える
1

あなたはこれを行うことができます:

vowels = {} # dictionary of counters, indexed by vowels

for ch in contents:
    if ch in ['i', 'e', 'o']:
        # If 'ch' is a new vowel, create a new mapping for it with the value 1
        # otherwise increment its counter by 1
        vowels[ch] = vowels.get(ch, 0) + 1

print("'{}' occured the most."
    .format(*[k for k, v in vowels.items() if v == max(vowels.values())]))
于 2016-02-14T19:53:18.450 に答える
1

Python は「バッテリーが含まれている」と主張していますが、これは古典的なケースです。クラスcollections.Counterはほとんどこれを行います。

from collections import Counter

with open('file.txt') as file_
    counter = Counter(file_.read())

print 'Count of e: %s' % counter['e']
print 'Count of i: %s' % counter['i']
print 'Count of o: %s' % counter['o']
于 2016-02-14T20:09:19.863 に答える
0

vowels = 'eio'してみましょう

{ i: contents.count(i) for i in vowels }

内の各項目についてvowels、出現回数をカウントしcontents、結果の辞書の一部として追加します (内包表記を中括弧で囲んでいることに注意してください)。

于 2016-02-14T20:13:38.137 に答える