你不說什麼格式的文件。根據你的嘗試,我假設你的文件在每一行只包含一個整數。
下面是一些與你的函數的問題:
- 你傳入的參數叫做
l
的功能,但不使用它。您應該使用它作爲要打開的文件的名稱,而不是硬編碼'even.txt'
。
- 您正在將整個文件讀入名爲
num
的變量,然後甚至不使用該變量。讀完整個文件後,在for循環中沒有什麼可以迭代的了。
- 您的
for
循環以字符串形式遍歷文件的行。在測試之前,您需要將行轉換爲整數,如果它可以被二整除。
- 在
for
循環中,您將返回找到的第一個偶數,而不是計算所有偶數。您需要在循環之前創建一個計數變量,並在每次找到偶數時在循環中遞增,然後在循環完成後返回計數。
如果你解決這些問題,你的函數應該是這個樣子:
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
類的方法。 如果您正在編寫單元測試,則應在TestCase
派生類中的測試用例中調用assertEqual
。
如果你只是想使ouside單元測試的斷言,你可以寫:
assert counteven('even.txt') == 2, ' Number of even numbers must be 2'
感謝傢伙的幫助。 – user493989 2011-04-16 19:14:27
您好我曾嘗試之前的方式Ergwun建議和assertEquals工作不正常,我jst複製和粘貼Ergwun的解決方案assertEqual仍然不工作jst像我最初做我的。 – user493989 2011-04-16 19:58:50
請參閱我的更新尋址assertEqual。 – Ergwun 2011-04-18 02:48:03