3

ここでPythonは初めてです。文中の平均語長を計算するプログラムを作成しようとしていますが、.splitコマンドを使用して計算する必要があります。ところで、Python3.2を使用しています。

これは私がこれまでに書いたものです

sentence = input("Please enter a sentence: ")
print(sentence.split())

これまでのところ、ユーザーに文を入力してもらうと、入力した個々の単語が正常に分割されます。たとえば、次のようになります。こんにちは。私の名前はBobです。これは、['hi'、'my'、'name'、'is'、 'ボブ']

しかし今、私は迷子になっています。各単語を計算して文の平均の長さを見つける方法がわかりません。

4

9 に答える 9

22

Python 3(使用しているように見える)の場合:

>>> sentence = "Hi my name is Bob"
>>> words = sentence.split()
>>> average = sum(len(word) for word in words) / len(words)
>>> average
2.6
于 2012-10-06T16:30:05.573 に答える
8

長さゼロの単語だけでなく、句読点も除外することをお勧めします。

>>> sentence = input("Please enter a sentence: ")

カウントされない句読点を除外します。必要に応じて、句読点の文字列にさらに追加できます。

>>> filtered = ''.join(filter(lambda x: x not in '".,;!-', sentence))

単語に分割し、長さがゼロの単語を削除します。

>>> words = [word for word in filtered.split() if word]

そして計算します:

>>> avg = sum(map(len, words))/len(words)
>>> print(avg) 
3.923076923076923
于 2012-10-06T16:54:47.687 に答える
4
>>> sentence = "Hi my name is Bob"
>>> words = sentence.split()
>>> sum(map(len, words))/len(words)
2.6
于 2012-10-06T16:40:13.067 に答える
1

簡潔なバージョン:

average = lambda lst: sum(lst)/len(lst) #average = sum of numbers in list / count of numbers in list
avg = average([len(word) for word in sentence.split()]) #generate a list of lengths of words, and calculate average

ステップバイステップバージョン:

def average(numbers):
    return sum(numbers)/len(numbers)
sentence = input("Please enter a sentence: ")
words = sentence.split()
lengths = [len(word) for word in words]
print 'Average length:', average(lengths)

出力:

>>> 
Please enter a sentence: Hey, what's up?
Average length: 4
于 2012-10-06T16:31:18.347 に答える
0
def main():

    sentence = input('Enter the sentence:  ')
    SumAccum = 0
    for ch in sentence.split():
        character = len(ch)
        SumAccum = SumAccum + character

    average = (SumAccum) / (len(sentence.split()))
    print(average)
于 2014-07-21T22:33:38.460 に答える
0
  def averageWordLength(mystring):
tempcount = 0
count = 1

wordcount = 0
try:
    for character in mystring:
        if character == " ":
            tempcount +=1
            if tempcount ==1:
                count +=1

        else:
            tempcount = 0
            try:
                if character.isalpha(): #sorry for using the .isalpha
                    wordcount += 1
            except:
                wordcount = wordcount + 0
    if mystring[0] == " " or mystring.endswith(" "): #i'm sorry for using the .endswith
            count -=1

    try:
        result = wordcount/count
        if result == 0:
            result = "No words"
            return result
        else:
            return result

    except ZeroDivisionError:
        error = "No words"
        return error

except Exception:
    error = "Not a string"
    return error

mystring = "なんて大きなスペースがありますか!" 出力は3.0で、分割は使用しませんでした

于 2017-05-31T17:50:46.323 に答える
0

モジュラーとして:

import re

def avg_word_len(s):
    words = s.split(' ') # presuming words split by ' '. be watchful about '.' and '?' below
    words = [re.sub(r'[^\w\s]','',w) for w in words] # re sub '[^\w\s]' to remove punctuations first
    return sum(len(w) for w in words)/float(len(words)) # then calculate the avg, dont forget to render answer as a float

if __name__ == "__main__":
    s = raw_input("Enter a sentence")
    print avg_word_len(s)
于 2019-10-08T06:42:48.063 に答える
0
s = input("Please enter a sentence: ")
avg_word_len = len(s.replace(' ',''))/len(s.split())
print('Word average =', avg_word_len)

出力:

Please enter a sentence: this is a testing string
Word average = 4.0

注:これは単純なバニラのユースケースであり、必要に応じて追加の境界条件を適用できます。

于 2020-10-09T05:24:46.127 に答える
-1
def average():
    value = input("Enter the sentence:")
    sum = 0
    storage = 0
    average = 0

    for i in range (len(value)):
        sum = sum + 1
        storage = sum
        average = average+storage

    print (f"the average is :{average/len(value)}")

    return average/len(value)

average()
于 2020-04-28T20:59:12.513 に答える