1

わかりましたので、特定の年の上位 20 人の赤ちゃんの名前を印刷する方法を見つけようとしています。与えられたすべての名前と、その名前の出現回数を含む 200 以上のテキスト ファイルがあります。それらは性別によって分けられています ここに例があります

year 1992:

Ashley,F,38451
Jessica,F,38349
Amanda,F,25027
Brittany,F,24974
Sarah,F,24632
Samantha,F,24402
Emily,F,21831
Stephanie,F,19670
Elizabeth,F,19020
Megan,F,17843
...

Michael,M,54373
Christopher,M,42459
Matthew,M,37729
Joshua,M,36207
Andrew,M,30530
Brandon,M,29618
Daniel,M,29138
Tyler,M,28792
James,M,28502

任意の年の性別に関係なく上位 20 位の名前を分割し、その年のプロンプトを表示しながらそれらを出力する方法を見つける必要があります。また、txtファイル名全体とそのディレクトリを入力せずに年を入力する方法がわかりません。ここで試したのは次のとおりです。

def main():
    year = input('Enter Year: ')
    for line in open('names/yob',str(year),'.txt'):
        print(line)

なぜこれが機能しないのかわかりません。また、次のようなクラスを作成し、エントリを作成する方法が必要だと思います。

class entry():
    __slots__ = ('gender', 'rank')

def mkEntry(...):
    ...

このような出力が必要です

Enter Year: 1992
1. Josh (M): 52013
2. Jessica (F): 51001
3. Michael (M): 48923

...


20. Sarah (F): 34013

性別に関係なくファイルを最高ランクに分割し、上位20を出力する方法がわかりません。リストを使用していると思いますが、どうすればこれを行うことができますか? すべての助けをいただければ幸いです。

編集:

申し分なくコードを開発しましたが、mlst.rank > flst.rank の場合、リストにランクの属性を含めることができないというエラーが表示されます。何が間違っているのか教えていただけますか?

https://gist.github.com/anonymous/fa367ff6955b10ae6e11

4

2 に答える 2