1

入力を受け取らず、代わりに名前を要求する関数を作成しようとしています。空の文字列を入力すると、関数は名前ごとに同じ名前を持つ人の数を出力する必要があります。

例えば:

>>>name()
Enter a name: Paul
Enter a name: Bill
Enter a name: John
Enter a name: Paul
Enter a name: Nick
Enter a name: Bill
Enter a name: Bill
Enter a name:    
There is 1 person named John
There is 1 person named Nick
There are 2 people named Paul
There are 3 people named Bill

これまでのところ、私は持っています:

def name():
    name = input ('Enter a name: ')
    count = 0

    while name:
        if name == input ('Enter a name: '):
            count = count + 1
        else:
            print (count)

正しく数えていないことは確かです。この関数を適切に実行するにはどうすればよいでしょうか? また、異なる名前がいくつあるかわからない場合に、どのようにして異なる入力を区別し、それらを数えるのでしょうか?

また、できれば効率的でなくても勉強しているうちに基本的なコードをお願いしたいです。

4

4 に答える 4

1

シンプルな python マップを使用できます。これは次のように機能します。

names = {}

while True:
    name = raw_input('Enter a name: ')
    if not name:
        break
    if name not in names:
        names[name] = 0
    names[name] = names[name] + 1

for name in sorted(names, key=names.get):
    if names[name] < 2:
        print 'There is %d person named %s' % (names[name], name)
    else:
        print 'There are %d people named %s' % (names[name], name)
于 2013-06-09T16:06:55.323 に答える