2017-03-18 14 views
1

ユーザーが名前を入力すると、その名前の人の数が返されるプログラムを構築しようとしています。 「most」と入力すると、最も使用された名前が返されます。私は何とか個々の単語を数えていますが、プログラムを定義して最も頻繁に出現する単語を数えさせる方法がわかりません。リスト内で最も頻繁に使用される単語を数える

import re 
from collections import Counter 

data = ('Billy Bob', 'Misty', 'Leroy', 'Leroy', 'Leroy', 'Billy Bob', 'Betty Sue', 
     'Billy Bob', 'Betty Sue', 'Misty', 'Betty Sue', 'Betty Sue', 
     'Misty', 'Betty Sue', 'Horace', 'Misty', 'Betty Sue', 'Misty', 
     'Leroy', 'Betty Sue', 'Misty', 'Doug', 'Misty', 'Wilma', 'Jesse', 
     'Misty', 'Billy Bob', 'Betty Sue', 'Betty Sue', 'Leroy', 'Misty', 
     'Leroy', 'Jesse Jr', 'Betty Sue', 'Betty Sue', 'Misty', 'Misty', 
     'Misty', 'Betty Sue', 'Misty', 'Misty', 'Misty', 'Leroy', 'Leroy', 
     'Bailey', 'Peggy', 'Leroy', 'Billy Bob', 'Leroy', 'Leroy', 'Misty', 
     'Paris', 'Leroy', 'Leroy', 'Misty Mae', 'Leroy', 'Misty', 'Leroy', 
     'Bart', 'Big Daddy', 'Betty Sue', 'Billy Bob', 'Betty Sue', 
     'LeeAnne', 'Billy Bob', 'Leroy', 'Betty Sue', 'Leroy', 'Betty Sue', 
     'Misty', 'Rowdy', 'Billy Bob', 'Ricky', 'Misty', 'Billy Bob', 'Billy 
     Bob', 'Billy Bob', 'EvaSue', 'Mark', 'Betty Sue', 'Leroy', 'Betty 
     Sue', 'Billy Bob', 'Leroy', 'Leroy', 'Billy Bob', 'Billy Bob', 
     'Billy Bob', 'Billy Bob', 'Billy Bob', 'Misty', 'Rob', 'Betty Sue', 
     'SuelySue', 'Billy Bob', 'Misty', 'Betty Sue', 'Misty', 'Billy Bob', 
     'Betty Sue', 'Leroy', 'Misty', 'Billy Bob', 'Misty', 'Misty', 'Billy 
     Bob', 'Billy Bob', 'Billy Bob', 'Billy Bob', 'Leroy', 'Jesse Jr Jr', 
     'Billy Bob', 'Grady', 'Leroy', 'Billy Bob', 'Leroy', 'Billy Bob', 
     'Betty Sue', 'Billy Bob', 'Misty', 'Louise', 'Leroy', 'Betty Sue', 
     'Leroy', 'Betty Sue', 'Leroy', 'Betty Sue', 'Betty Sue', 'Billy 
     Bob', 'Leroy', 'Jenny Jae', 'Misty', 'Betty Sue', 'Billy Bob', 
     'Leroy', 'Billy Bob', 'Jesse', 'Misty', 'Misty', 'Leroy', 'Betty 
     Sue', 'BJ', 'Misty', 'Leroy', 'Boris', 'Misty', 'Billy Bob', 'Pegs', 
     'Misty', 'Leslie', 'James', 'Melvin', 'Misty', 'Betty Sue', 'Mary 
     Beth', 'Billy Bob', 'Betty Sue', 'Billy Bob', 'Misty', 'Betty Sue', 
     'Leroy', 'Billy Bob', 'Billy Bob', 'BethAnne', 'Leroy', 'Betty Sue', 
     'Bett', 'Billy Bob', 'Misty', 'Misty', 'Billy Bob', 'Leroy', 'Billy 
     Bob', 'Billy Bob', 'Misty', 'Billy Bob', 'Raina', 'Betty Sue', 
     'Misty', 'Misty', 'Misty', 'Betty Sue', 'Mikey', 'Betty Sue', 'Billy 
     Bob', 'Misty', 'Betty Sue', 'Leroy', 'Betty Sue', 'Billy Bob', 
     'Betty Sue', 'Billy Bob', 'Betty Sue', 'Louise Jr', 'Billy Bob', 
     'Misty', 'Leroy', 'Leroy', 'Billy Bob', 'Billy Bob', 'Misty', 
     'Leroy', 'Leroy', 'Leroy', 'Billy Bob', 'Betty Sue', 'Billy Bob', 
     'Betty Sue', 'Misty', 'Betty Sue', 'Betty Sue', 'Misty', 'Betty 
     Sue', 'Horace', 'Misty', 'Betty Sue', 'Misty', 'Leroy', 'Betty Sue', 
     'Misty', 'Doug', 'Misty', 'Wilma', 'Jesse', 'Misty', 'Billy Bob', 
     'Betty Sue', 'Betty Sue', 'Leroy', 'Misty', 'Leroy', 'Jesse Jr', 
     'Betty Sue', 'Betty Sue', 'Misty', 'Misty', 'Misty', 'Betty Sue', 
     'Misty', 'Misty', 'Misty', 'Leroy', 'Leroy', 'Bailey', 'Peggy', 
     'Leroy', 'Billy Bob', 'Leroy', 'Leroy', 'Misty', 'Paris', 'Leroy', 
     'Leroy', 'Misty Mae', 'Leroy', 'Misty', 'Leroy', 'Bart', 'Big 
     Daddy', 'Betty Sue', 'Billy Bob', 'Betty Sue', 'LeeAnne', 'Billy 
     Bob', 'Leroy', 'Betty Sue', 'Leroy', 'Betty Sue', 'Misty', 'Rowdy', 
     'Billy Bob', 'Ricky', 'Misty', 'Billy Bob', 'Billy Bob', 'Billy 
     Bob', 'EvaSue', 'Mark', 'Betty Sue', 'Leroy', 'Betty Sue', 'Billy 
     Bob', 'Leroy', 'Leroy', 'Billy Bob', 'Billy Bob', 'Billy Bob', 
     'Billy Bob', 'Billy Bob', 'Misty', 'Rob', 'Betty Sue', 'SuelySue', 
     'Billy Bob', 'Misty', 'Betty Sue', 'Misty', 'Billy Bob', 'Betty 
     Sue', 'Leroy', 'Misty', 'Billy Bob', 'Misty', 'Misty', 'Billy Bob', 
     'Billy Bob', 'Billy Bob', 'Billy Bob', 'Leroy', 'Jesse Jr Jr', 
     'Billy Bob', 'Grady', 'Leroy', 'Billy Bob', 'Leroy', 'Billy Bob', 
     'Betty Sue', 'Billy Bob', 'Misty', 'Louise', 'Leroy', 'Betty Sue', 
     'Leroy', 'Betty Sue', 'Leroy', 'Betty Sue', 'Betty Sue', 'Billy 
     Bob', 'Leroy', 'Jenny Jae', 'Misty', 'Betty Sue', 'Billy Bob', 
     'Leroy', 'Billy Bob', 'Jesse', 'Misty', 'Misty', 'Leroy', 'Betty 
     Sue', 'BJ', 'Misty', 'Leroy', 'Boris', 'Misty', 'Billy Bob', 'Pegs', 
     'Misty', 'Leslie', 'James', 'Melvin', 'Misty', 'Betty Sue', 'Mary 
     Beth', 'Billy Bob', 'Betty Sue', 'Billy Bob', 'Misty', 'Betty Sue', 
     'Leroy', 'Billy Bob', 'Billy Bob', 'BethAnne', 'Leroy', 'Betty Sue', 
     'Bett', 'Billy Bob', 'Misty', 'Misty', 'Billy Bob', 'Leroy', 'Billy 
     Bob', 'Billy Bob', 'Misty', 'Billy Bob', 'Raina', 'Betty Sue', 
     'Misty', 'Misty', 'Misty', 'Betty Sue', 'Mikey', 'Betty Sue', 'Billy 
     Bob', 'Misty', 'Betty Sue', 'Leroy', 'Betty Sue', 'Billy Bob', 
     'Betty Sue', 'Billy Bob', 'Betty Sue', 'Louise Jr', 'Billy Bob', 
     'Misty', 'Leroy', 'Leroy', 'Billy Bob', 'Billy Bob', 'Betty Sue') 

print('''Welcome to the White Valley Name Counter. Enter a name, or "most" to see what name is the most used in this great city!''') 

print() 
keepgoing = 'y' 

while keepgoing == 'y': 
    count = 0 
    search = input("What name do you want to search for in White Valley database? ") 
    print() 
    data_list = list(data) 
    if search != "most": 
     print("There are {} people named {}".format(data_list.count(search),search)) 
     print() 
    elif search == "most": 
     print("{} is the most common. There are {} of them".format(
       data_list.count.most_common(data_list), search)) 
    keepgoing = input('''Want to search another name ("y" for yes)? ''') 
    print() 

私はこのような出力に見えるようにしようとしています:名前が発生した回数をカウントする

import collections 

data = ('Billy Bob', 'Misty', …) 
counts = collections.Counter(data) 

# add an additional 'Misty' 
counts.update(['Misty']) 

# most seen name 
if counts: 
    name, count = counts.most_common(1)[0] 
    print("most common name is {} with a count of {}".format(name, count)) 
else: 
    print("no names available") 

name = "Billy Bob" 
count = counts.get(name) 
if count is not None: 
    print("There are {} people named {}".format(count, name)) 
else: 
    print("There is no {}".format(name)) 
+0

「most」という名前の人物を検索するにはどうすればよいですか? –

答えて

0

あなたは、このためのカウンタを使用することができますがユーザーが指定したものはかなり簡単です!

これを処理して結果を返す小さな関数を作成しましょう。

names = ("billy","bob","pete","bob",'pete','bob'); 


def count_my_name(name): 
    return ("The name %s occurs %s times." % (name,str(names.count(name)))); 

我々は名前ピートで、この結果を印刷する場合、我々は次のような結果になるだろう。今、リストの中で最も一般的な名前をカウントするため、私たちは別の小ぎれいな関数を書くことができます

The name pete occurs 2 times.

をそれを処理し、私たちのために結果を返します。私たちの結果得られます

names = ("billy","bob","pete","bob",'pete','bob'); 
def get_most_common_name(): 
    all_names = set(names); 
    most_common = max([names.count(i) for i in all_names]); 
    for name in all_names: 
     if names.count(name) == most_common: 
      return ("The most common name is %s occuring a total of %s times." % (name,str(most_common))); 

The most common name is bob occuring a total of 3 times.

わかりましたので、私たちの第二の機能のために、今、いくつかの説明を、私たちは、実際にここで何してるの?

最初に私たちはタプルという名前をつけていますが、その中に名前がありますが、その中には重複しているので、同じ名前を何度も繰り返したくないのです。 all_namesという新しい変数を作り、そのリストからセットを作ります。

セットは、私たちのために複製を削除するので便利です。

今は使用して名前で名前が発生した回数をカウントすることができます

most_common = max([names.count(i) for i in all_names]);

これが私たちのタプル内の最も発生する名前の数を示します。 3となるでしょう。

ここで、私たちのセットall_namesを繰り返して、その名前が何回出現するかを数えるだけです。

名前がmost_common変数と同じ名前で何度も出現する場合は、最も多く発生する名前があります。

希望すると便利です。

0

まあ:

Welcome to the White Valley Name Counter. Enter a name, or "most" to see what name is the most used in this great city! 

What name do you want to search for in White Valley database? john 

There are 0 people named john 

Want to search another name ("y" for yes)? y 

What name do you want to search for in White Valley database? Betty Sue 

There are 79 people named Betty Sue 

Want to search another name ("y" for yes)? y 

What name do you want to search for in White Valley database? most 

Billy Bob is most common. There are 93 of them 

Want to search another name ("y" for yes)? n 
関連する問題