ファイルの形式は何もわかりません。あなたの試みに基づいて、私はあなたのファイルが各行にただ一つの整数を含んでいると仮定しています。
はここにあなたの機能に問題の一部です:
- あなたは
l
呼び出される関数に引数を渡すが、それを使用していません。 'even.txt'
をハードコーディングするのではなく、開くファイルの名前として使用する必要があります。
- ファイル全体を
num
という変数に読み込み、その変数を使用していません。ファイル全体を読み込んだら、forループで繰り返し処理する余地はありません。
for
ループはファイルの行を文字列として反復処理します。 2で割り切れるかどうかをテストする前に、行を整数に変換する必要があります。
- ループの内部では、すべての偶数を数えるのではなく、最初に見つかった偶数を返します。ループの前にcount変数を作成し、偶数が見つかるたびにループをインクリメントし、ループが完了した後にカウントを戻す必要があります。
あなたはこれらの問題を解決する場合は、あなたの関数は次のようなものになります。
def counteven(filename):
countOfEvenNumbers = 0
infile = open(filename, 'r')
for line in infile:
number = int(line)
if (number %2 == 0):
countOfEvenNumbers+= 1
infile.close()
return countOfEvenNumbers
を...
UPDATE(あなたのコメントに対処するために):
assertEqual
されますモジュール、unittest
モジュールによって提供されるクラスの方法。 単体テストを書く場合は、TestCase
から派生したクラスのテストケースでassertEqual
を呼び出す必要があります。
あなたは単にあなたが書くことができますユニットテストのouside主張したい場合は、次のコード内の
assert counteven('even.txt') == 2, ' Number of even numbers must be 2'
助けてくれてありがとう。 – user493989
こんにちは私はErgwunの提案する前にそれをしようとしてassertEqualsが正常に動作していないと私はjstコピーし、Ergwunのソリューションを貼り付けassertEqualは私が最初に鉱山のようにjstを動作していません。 – user493989
私の更新アドレスassertEqualを参照してください。 – Ergwun