テストの採点

ある数学のテスト(合計3問,解答方法はいずれもa,b,cの3択)を受験した22人の解答結果がある。 問題1から3の正答は,それぞれb,b,aである。

22人の解答ファイルを用いて, 受験生がそれぞれ何問正解したかを出力するプログラムを作成しなさい。 なお,このファイルは,1行に1人,タブ区切りで受験生の受験番号と解答を示したテキストファイルである。 1番目の数字は受験番号,2〜4番目の数字はそれぞれ問題1〜3の解答を表している。

test_check.py

# coding: shift_jis
k = 3   #問題数
ans = ['b', 'b', 'a']
f = open("answer22.txt", "r")
for line in f:
	ls = line.split()
	c = 0
	for i in range(k):
		if ls[i+1] == ans[i]:
			c += 1
	print("受験番号", ls[0], "の正解数は、", c, "問です。")
f.close()
H:\Documents\prg1\10> python test_check.py↵
受験番号 101 の正解数は、 2 問です。
受験番号 102 の正解数は、 2 問です。
受験番号 103 の正解数は、 2 問です。
受験番号 104 の正解数は、 3 問です。
受験番号 105 の正解数は、 3 問です。
受験番号 106 の正解数は、 3 問です。
受験番号 107 の正解数は、 3 問です。
受験番号 108 の正解数は、 2 問です。
受験番号 109 の正解数は、 3 問です。
受験番号 110 の正解数は、 2 問です。
受験番号 111 の正解数は、 2 問です。
受験番号 112 の正解数は、 2 問です。
受験番号 113 の正解数は、 2 問です。
受験番号 114 の正解数は、 2 問です。
受験番号 115 の正解数は、 3 問です。
受験番号 116 の正解数は、 2 問です。
受験番号 117 の正解数は、 2 問です。
受験番号 118 の正解数は、 2 問です。
受験番号 119 の正解数は、 2 問です。
受験番号 120 の正解数は、 2 問です。
受験番号 121 の正解数は、 2 問です。
受験番号 122 の正解数は、 2 問です。


プログラムの書き換え問題

test_check.py(改良版)

# coding: shift_jis
k = 3   #問題数
ans = ['b', 'b', 'a']
f = open("answer22.txt", "r")
fw = open("results.txt", "w")
for line in f:
	ls = line.split()
	c = 0
	for i in range(k):
		if ls[i+1] == ans[i]:
			c = c + 1
	msg = "受験番号" + str(ls[0]) +  "の正解数は、" + str(c) +  "問です。" + "\n"
	fw.write(msg)
f.close()
fw.close()