メインコンテンツまでスキップ

case2. 特定の条件確認

学生が作成したコードファイルを読み込んだ後、特定の条件が成り立つかを基準に採点を行うことができます。
以下の例は、print() 関数を 3 回使用して三行詩を作る実習に対する正解採点コードです。

学生が作成したファイル (main.py) を読み込んだ後、print() 関数が合計 3 回書かれているかどうかを基準に実習を採点します。

import os
import subprocess
import sys
sys.path.append(os.getcwd())
from grader_elice_utils import EliceUtils # isort:skip

elice_utils = EliceUtils()
elice_utils.secure_init()

try:
total_score = 0

# print() 関数が 3 回以上使用されているか確認するコード
count = 0
with open("main.py") as ans:
datafile = ans.readlines()
for line in datafile:
if 'print' in line:
count += 1

if count >= 3:
total_score += 100
elice_utils.secure_send_grader('✅ 正解です! print()を使用して素晴らしい三行詩を作りましたね! \n')
else:
elice_utils.secure_send_grader('❌ 不正解です! print()を 3 回使用して三行詩を作ってみてください。\n')

# 実習最終点数送信
total_score = int(total_score)
elice_utils.secure_send_score(total_score)

except Exception as err:
elice_utils.secure_send_grader('採点中にエラーが発生しました。コードが正常に実行されるか確認してください。\n')
elice_utils.secure_send_score(0)
sys.exit(1)