メディア

テストでバグ発見!(3)単位取得判定プログラムに潜むファイル入力のバグ山浦恒央の“くみこみ”な話(145)(4/4 ページ)

» 2021年09月16日 10時00分 公開
前のページへ 1|2|3|4       
※本記事はアフィリエイトプログラムによる収益を得ています

付録

 ScoreEvaluation.pyをダウンロードする際にファイルが開けない、またはセキュリティの観点からWebサイトからファイルをダウンロードして開きたくない場合、下記のソースコードのテキストをコピーして使用してください。なお、プログラミング言語は、Python 3.9.5で動作します(Windows 10環境上で、動作確認済み)。

#
# プログラム:単位取得判定プログラム(ScoreEvaluation.py)
# 作成者:T.Yamaura, Y.Ohmori
#
import csv
import sys
from os import write
studentNum = []   #学籍番号
midScore = []     #中間テストの点数
finalScore = []   #期末試験の点数
count = 0         #カウンタ用変数
#Score.csvを開き、データを代入する
try:
  with open('score.csv') as f:
    reader = csv.reader(f)
    for row in reader:
      if int(row[0].isdigit()) == True and int(row[1].isdigit()) == True and int(row[2].isdigit()) == True:
        if len(row[0]) == 8 and int(row[0]) >= 0 and int(row[0]) <= 99999999:
          studentNum.append(int(row[0]))
        else:
          print('入力エラー')
          sys.exit()
        if int(row[1]) >= 0 and int(row[1]) <= 100:
          midScore.append(int(row[1]))
        else:
          print('入力エラー')
          sys.exit()
        if int(row[2]) >= 0 and int(row[2]) <= 100:
          finalScore.append(int(row[2]))
        else:
          print('入力エラー')
          sys.exit()
      else:
        print('入力エラー')
        sys.exit()
      count = count + 1
except Exception as e:
  print('例外が発生したので、プログラムを終了します')
#評価結果をResult.csvに出力する
try:
  with open('Result.csv','w', newline="") as f:
    writer = csv.writer(f)  
    for i in range(count):
      #中間テストと期末テストを加算し、成績評価をする
      Score = int(midScore[i]) + int(finalScore[i])
      if Score >= 180:
        Grade = 'S'
      elif Score >= 160 and Score <= 179:
        Grade = 'A'
      elif Score >= 140 and Score <= 159:
        Grade = 'B'
      elif Score > 120 and Score <= 139:
        Grade = 'C'
      else:
        Grade = '/'    
      #評価結果を入力データの末尾に追加する
      writer.writerow([studentNum[i], midScore[i], finalScore[i], Grade])
except Exception as e:
  print('例外が発生したので、プログラムを終了します')
ScoreEvaluation.pyのソースコード

山浦先生の書籍が発売中です!

 前シリーズ「ソフトウェア技術者のためのバグ百科事典」を大幅に加筆、修正した山浦恒央先生の書籍「ソフトウェア技術者のためのバグ検出テキスト」が日科技連出版から好評発売中です。連載でも取り上げた、「要求仕様書のバグ」「実装抜けのバグ」「テスト業務のバグ」など、バグを36種類に分類して解説しています。囲碁や将棋であれば、「相掛かり」「矢倉」「四間飛車」「藤井システム」のような戦法を網羅した内容になっています。

 前著「ソフトウェア技術者のためのバグ検出ドリル」(2019年11月刊行)も好評発売中です。実際にバグを含む要求仕様書、設計書、コーディング、デバッグ、保守を具体的に取り上げ、練習問題として31問を出題しました。同書は、囲碁や将棋における「次の一手」的な問題であり、ピンポイントの場面を取り上げ、実践力を鍛えることを目的としています。

 両書とも興味のある方は、Amazon.comや書店でチェックしてください!

鬯ッ�ゥ陝キ�「�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ッ鬯ッ�ゥ陝キ�「�ス�ス�ス�「鬮ォ�エ髮懶ス」�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ェ鬯ッ�ゥ陝キ�「�ス�ス�ス�「鬮ォ�エ髮懶ス」�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ス鬯ゥ謳セ�ス�オ�ス�ス�ス�コ鬯ッ�ゥ�ス�「髫ー�ウ�ス�セ�ス�ス�ス�ス�ス�ス�ス�ク�ス�ス�ス�ス�ス�ス�ス�コ鬯ョ�ッ�ス�キ髣費スィ陞滂スイ�ス�ス�ス�ス�ス�ス�ス�ア鬯ゥ蛹�スス�ッ�ス�ス�ス�カ�ス�ス�ス�ス�ス�ス�ス�サ鬯ッ�ョ�ス�」鬩募争豎夲ソス�ソ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ォ鬯ョ�ォ�ス�ィ髯句ケ「�ソ�ス�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ク�ス�ス�ス�ス�ス�ス�ス�コ鬯ッ�ョ�ス�」鬯ョ�ョ�ス�ス�ス�ス�ス�セ髮狗甥�、諛カ�ス�ヲ�ス�エ�ス謇具スイ�サ�ス�ソ�ス�ス�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ァ鬯ッ�ゥ陝キ�「�ス�ス�ス�「鬮ォ�エ髮懶ス」�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ス鬯ゥ謳セ�ス�オ�ス�ス�ス�コ�ス�ス�ス�ス�ス�ス�ス�ス
鬯ッ�ゥ陝キ�「�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ッ鬯ッ�ゥ陝キ�「�ス�ス�ス�「鬮ォ�エ髮懶ス」�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ェ鬯ッ�ゥ陝キ�「�ス�ス�ス�「鬮ォ�エ髮懶ス」�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ス鬯ゥ謳セ�ス�オ�ス�ス�ス�コ鬯ッ�ゥ�ス�「髫ー�ウ�ス�セ�ス�ス�ス�ス�ス�ス�ス�ク�ス�ス�ス�ス�ス�ス�ス�コ鬯ョ�ッ�ス�キ髣費スィ陞滂スイ�ス�ス�ス�ス�ス�ス�ス�ア鬯ゥ蛹�スス�ッ�ス�ス�ス�カ�ス�ス�ス�ス�ス�ス�ス�サ鬯ッ�ョ�ス�」鬩募争豎夲ソス�ソ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ォ鬯ョ�ォ�ス�ィ髯句ケ「�ソ�ス�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ク�ス�ス�ス�ス�ス�ス�ス�コ鬯ッ�ョ�ス�」鬯ョ�ョ�ス�ス�ス�ス�ス�セ髮狗甥�、諛カ�ス�ヲ�ス�エ�ス謇具スイ�サ�ス�ソ�ス�ス�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ァ鬯ッ�ゥ陝キ�「�ス�ス�ス�「鬮ォ�エ髮懶ス」�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ス鬯ゥ謳セ�ス�オ�ス�ス�ス�コ�ス�ス�ス�ス�ス�ス�ス�ス
【 筆者紹介 】
山浦 恒央(やまうら つねお)

東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)


1977年、日立ソフトウェアエンジニアリングに入社、2006年より、東海大学情報理工学部ソフトウェア開発工学科助教授、2007年より、同大学大学院組込み技術研究科准教授、2016年より非常勤講師。

主な著書・訳書は、「Advances in Computers」 (Academic Press社、共著)、「ピープルウエア 第2版」「ソフトウェアテスト技法」「実践的プログラムテスト入門」「デスマーチ 第2版」「ソフトウエア開発プロフェッショナル」(以上、日経BP社、共訳)、「ソフトウエア開発 55の真実と10のウソ」「初めて学ぶソフトウエアメトリクス」(以上、日経BP社、翻訳)。

鬯ッ�ゥ隰ウ�セ�ス�ス�ス�オ�ス�ス�ス�ス�ス�ス�ス�コ鬯ッ�ョ�ス�ヲ�ス�ス�ス�ョ鬮ッ�キ�ス�サ�ス�ス�ス�サ�ス�ス�ス�ス�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ス鬯ッ�ッ�ス�ッ�ス�ス�ス�ィ�ス�ス�ス�ス�ス�ス�ス�セ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�」鬯ッ�ッ�ス�ョ�ス�ス�ス�エ鬮」雋サ�ソ�ス�ス�ス�ス�・�ス�ス�ス�ス�ス�ス�ス�ウ�ス�ス�ス�ス�ス�ス�ス�ィ�ス�ス�ス�ス�ス�ス�ス�ス鬮ッ諛カ�ス�」�ス�ス�ス�、�ス�ス�ス�ス�ス�ス�ス�ク�ス�ス�ス�ス�ス�ス�ス�イ鬯ッ�ゥ陟�瑳�ス�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス邵コ�、�つ€�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�」鬯ッ�ッ�ス�ョ�ス�ス�ス�エ鬯ッ�ゥ陝カ螢ス譯カ�ス�ス�ス�ュ鬯ョ�ョ�ス�」�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ィ鬯ョ�ッ陋ケ�コ�ス�サ郢ァ謇假スス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�コ鬯ョ�」陋ケ�ス�ス�ス�ス�オ鬮ォ�エ隰ォ�セ�ス�ス�ス�エ�ス�ス�ス�ス髫カ髮」�ス�」�ス螳茨ス「謇假スス�ュ髮懶ス」�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ゥ鬯ッ�ゥ陝キ�「�ス�ス�ス�「鬮ォ�エ髮懶ス」�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�シ鬯ッ�ゥ陝キ�「�ス�ス�ス�「鬮ォ�エ闕ウ�サ�ス�ス髫カ謐コ�サ繧托スス�ソ�ス�ス驍オ�コ�ス�、�ス縺、ツ€鬯ッ�ッ�ス�ョ�ス�ス�ス�ヲ�ス�ス�ス�ス�ス�ス�ス�ェ鬯ゥ蛹�スス�カ髣費スィ�ス�ス�ス�ス�ス�ヲ�ス�ス�ス�エ�ス�ス邵コ�、�つ€鬮ッ�キ髣鯉スィ�ス�ス�ス�キ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�サ鬯ッ�ッ�ス�ッ�ス�ス�ス�ェ�ス�ス�ス�ス�ス�ス�ス�ュ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�イ鬯ッ�ゥ隰ウ�セ�ス�ス�ス�オ�ス�ス�ス�ス�ス�ス�ス�コ鬯ョ�ッ�ス�キ�ス�ス�ス�キ�ス�ス�ス�ス�ス�ス�ス�カ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス New
前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.