2

という関数を書いていますaverage_by_section: (file, str) -> float

最初のパラメータは、開いているマークのファイルです。各行は 1 人の学生を表し、空白で区切られた学生番号、名前、セクション コード、および成績で構成されます。

たとえば、次のようになります。

987654322    Xu             Carolyn         L0101   19.5
233432555    Jones          Billy Andrew    L5101   16.0
555432345    Patel          Amrit           L0101   13.5

そのセクションのすべての学生の平均点を返すNoneか、セクション コードがどの学生の点数ファイルにも表示されない場合に返します。

私が得たヒントは次のとおりです。

  • ヒント: 生徒ごとの名前の数が異なることに注意してください。
  • ヒント:rstrip()行末の不要な空白を取り除くために使用します。
  • ヒント: この関数をテストするには、マーク ファイルを開いたり閉じたりaverage_by_sectionし、その間に呼び出しを行うヘルパー関数を記述します。

私は今、ファイルの行にある要素を吐き出す準備ができています:

def average_by_section(marks, section):
    dic = {}
    for line in marks:
        wordlist = line.split()

そして、私は次に何をすべきかわかりません...

この機能を完了するには、指示/ガイドが必要です。

この関数をどのように記述しますか?

4

1 に答える 1

2

次の行としてこれを試してください:

(studentNumber, *names, sectionCode, grade) = wordlist

それは、その割り当てにある素晴らしい新しいPython3機能です*:)

そして、ファイルのオープン/クローズに関して: この部分を劇的に緩和する高級言語を使用しています:

with open('/path/to/marks/file.txt') as marks:
    print average_by_section(marks, section)

それでおしまい。がすべてのwith開閉を行います。

于 2012-11-16T12:36:47.553 に答える