1. 1番 2. #!/usr/koeki/bin/ruby # -*- coding: utf-8 -*- number = [] shusseki = [] score =[] sum = 0 n = 0 i = 0 while line = gets if /(\S+)\s+(\S+)\s+(\S+)/ =~ line number[n] = $1 shusseki[n] = $2.to_f score[n] = $3.to_f sum += $2.to_f + $3.to_f n += 1 end end print"- 授業回数 ------ 出席点 ---- 得点 - \n" while i < number.length printf(" %-5s \t %2d \t %6.1f\n", number[i],shusseki[i],score[i]) i += 1 end printf("合計得点:%4.1f点\n",sum) if sum >=90 print"評価:秀\n" elsif sum >=80 && sum < 90 print"評価:優\n" elsif sum >=70 && sum < 80 print"評価:良\n" elsif sum >=60 && sum < 70 print"評価:可\n" else sum < 60 print"評価:不可\n" end 3. sime{c11xxxx}% ./report5.rb result1.txt [~/program] - 授業回数 ------ 出席点 ---- 得点 - 回数 0 0.0 第1回 2 0.0 第2回 2 0.0 第3回 0 6.5 第4回 2 7.0 第5回 2 8.0 第6回 2 6.0 第7回 1 7.5 第8回 0 0.0 第9回 2 7.0 第10回 1 6.0 第11回 1 0.0 第12回 2 0.0 第13回 0 0.0 第14回 2 0.0 第15回 2 0.0 合計得点:69.0点 評価:可 4. データをこれから入力するので[]を空欄にし合計(sum)や何番目の数(n.i)の初期 値を0に設定する。 データの行がそれぞれ「数値、空欄、数値、空欄、数値」と並んでるので「S、s、 S、s、S」で認識させるようにし、それぞれを$で変数にし、計算させるようにし た。 最後にデータと結果と評価を列ずつで出すようにprintfを使って書いた。 5. 最初は2番のプログラムを組んでいたが、直し続けていくたびにどのように書き直 せば良いのか分からなくなり、基本的な1番と比べ続けたが分からなかったので 悔しいが1番で提出することにした。 早く正解例を見てどこがいけなかったのか知りたい。 6. 「8. エラーと例外 ― Python 3.7.3 ドキュメント」 (https://docs.python.org/ja/3/tutorial/errors.html) 7.