1月26日の業務報告

こんばんは,M1の安永です。
春日講義棟の南東側はまだまだ雪が残っていますね。お昼に側を通ったら,講義棟の影と雪の輪郭が同じで,太陽の力ってすごいんだなあ,と実感しました。
本日の質問と回答です。
==================================================================================
【プログラミング演習II】
Q1.(課題に関して)計算したチェックデジットに置換することができない。
A1.後方参照の部分をもう一度見直してみるよう答えました。
Q2.(課題に関して)チェックデジットの計算結果がうまく表示されない。
A2.sortメソッド内でprintメソッドを使用していたため、余計な数字が出力されていることを指摘しました。
Q3.(課題に関して)グループ記号が全て「英語圏」になってしまう
A3.比較元の変数が文字列であるのに対し、変数名 == 0 のようにしていたので、文字か数字に統一しないと正しく条件分岐できないと指摘しました。
また、if 変数 == “0” || “1” と記述していたため、正しくは、if 変数 == “0” || 変数 == “1” と記述する必要があります。
Q4.(課題に関して)チェックデジットの表示が必要以上に何度も繰り返されてしまう。
A4.繰り返し文中のeachの中で表示させていたが原因でしたが、質問者が途中で気付き解決しました。
Q5.(課題に関して)チェックデジットを新しく計算したものと入れ替えたいが、gsubメソッドを使っても上手く行かない
A5.gsubメソッドでは指定した部分全てを入れ替えるので、最後の13桁目だけ入れ替えたい時は「文字列の最後だけ」のような正規表現での指定が必要になります。
Q6.(課題に関して)チェックデジットを新しく計算したものと入れ替えたいが、$13=新しいチェックデジット としても動かない。
A6.後方参照の変数に代入しても元の文字列は変わらないので、元の文字列を置換する必要があると伝えました。
Q7.文字列を分割する方法がわからない
A7.教科書の索引や目次から適したメソッドがないか探してもらいました。
Q8.(課題に関して)ISBNのコードの行末を旧チェックデジットから新チェックデジットに変更したくて,isbn.sub!(/\z/, new_check) としたら,can’ convert Fixnum into String というエラーが出てしまう。
A8.エラーの意味を調べてもよく分からなかったということなので,convert into という英語の意味,Fixnum の意味,String の意味を確認しました。そして,コード中の変数が数値なのか,文字列なのか,を確認しました。
Q9.数値を文字列に変換する方法はありますか
A9.「ruby 数値 文字列 変換」などの単語で検索してみて下さい,と回答しました。
Q10.ソートしたハッシュが1つづつ増えながら表示される(回答者補足:期待する出力はABC, 実際の出力はAABABC)
A10.プログラムを順に説明してもらい,ハッシュに要素を追加するwhile内でハッシュを表示していることに気づいてもらいました。
Q11.ハッシュをソートしてプリントしたら,ソートされてない。
A11.プログラムを順に説明してもらい,ハッシュに値を追加する直前にハッシュを初期化していることが分かったので,どう変更するか考えてもらいました。
回答者 Q1-Q2:森川 Q3-Q7:鈴木 Q8-Q11:安永
==================================================================================
似た質問いくつか出てくるようになりましたね。皆が課題に取り組んでいるんだなーと実感がわきます。質問前にこのブログを見ると,自分で解決できることもあるかもしれませんね。
(文責:安永)