不定期戯言2

戻る

検索条件:38ページ

2019/03/07(Thu)

学年末テスト

「そうだ,教員免許更新講習でやった『ガチャ』のシミュレーションを出題しよう」 と思ったが,実は去年それに似た問題を出題していたのでボツ。

整数 a[9],b,c,d a←{0,0,0,0,0,0,0,0,0,0} b←0 繰り返し, |b←b+1 |c←random(9) |a[c]←a[c]+1 |aを表示する |d←1 |cを0から9まで1ずつ増やしながら, ||もしa[c]=0ならば |||d←0 ||を実行する |を繰り返す をd=1になるまで繰り返す bを表示する といった感じで,今年はレアアイテムを作るところを問題にしようと思っていたのだった。 cが0だったらもう1回引き直すとか,c←(random(99)+10)/11にするとか, そんな風に。

レアアイテムを作ると,コンプリートにかかる回数にすごく幅が出る。 上の例だとアイテム0が1%で他が11%になるわけだが, 200回くらいかかることもあれば20回くらいで揃うこともある。 これはなかなか射幸心を煽るものだと実感した。

2019/02/28(Thu)

過去の発表資料の整理

過去の発表資料 のページを一新。 ファイルを追加するときに手作業でHTMLファイルを更新していたのを, Pythonのスクリプトで更新するように変更した。 文書情報は別途用意することになるのだが, 自動出力することでフォーマットが確実に統一される。 ついでに表示順を新しいものが上にくるように変更した。

情報処理学会関係の論文は著作者のサイトでなら公開できるという規定があるからいいのだが, 日本情報科教育学会についてはどうなんだろう。 著作権譲渡の手続きもしていないので, 公開してもよさそうな気がするんだけど, いまいち自信がないのでとりあえず現状のままにしておく。

2019/02/15(Fri)

愛高情研第2回研究会

研究会を本校でやり,私が研究授業をやるということで緊張しまくり。 私の場合,緊張すると話し方とかが緩くなるのだが, 今回もその例にもれず。

内容は「数学の問題をプログラミングで解いてみよう」というもの。 普通だったら素因数分解とかユークリッドの互除法とか使うところを, ループをぶん回して答えを出す活動を通じて, ループを使うことになれていってほしいというのが狙い。 生徒の感想をみると,難しかったというのと簡単だったというのが分かれている。 思うに,数学の問題を読み取ること自体ができていない者がいるんじゃないかな。 それができていれば,何をすればいいかは示された例にならえばいいので, それほど難しいことではないと思う。 参加いただいた先生方には,WaPENが好評であったように思われる。

2019/02/09(Sat)

スクレイピング

最近『Pythonによるスクレイピング&機械学習』(クジラ飛行机著,ソシム)を 読んでいる。題材として自分のサイトを使ってみたりする。 たとえば 過去の発表資料のページ からタイトルを取得してみたり,このページのコンテンツをまとめてダウンロードしてみたり。 今まで無駄にタイトルや日付をSPAN要素にしてCLASS名をつけていたのだけど, それが功を奏した感じだ。 そうしてみると,このあたりも自動生成するようにしたいなあ。

最近のサイトは自動生成される部分が多いから, 要素を指定して値を取得するのはやりやすいような気がする。 少なくとも手書きのサイトよりは。

2019/01/29(Tue)

橋本治死去

久しぶりにマストドンに繋いでみたら, 橋本治がなくなったという投稿が流れてきた。 「桃尻娘」からはじまって, 主にエッセイ的なものを十数冊読んだが (有吉佐和子の本を何冊か読んだのも彼の影響), そもそも彼を知ったのは編み物からなんだな。 学生時代,編み物に手を出そうと(かぎ針は子供の頃にやっていたので, 棒針がやりたかった)適当に買った本の最初のページで, 彼のインタビュー記事が紹介されていた。 途方もなく細かい編み込みをしたセーターの写真があって, なんとなく憧れたものだった。 編み込みってドット絵というかデジタルに通じるものがあるから気に入ったのかな。

文芸的な方面でのコメントはたくさんあると思うので, 全然違う話で書いてみた。 彼が有吉佐和子に書いた追悼文にならって, 「いつまでもお元気で」と見送りたい。

2019/01/23(Wed)

出席番号の変わり目で改ページ

マージした表で明らかにおかしいところを直して, 出席番号順にソートして印刷…したいのだけど, 改ページを入れまくらなければいけない。 Excelだったらわかるんだけど, LibreOffice Calcだとどうしていいのかわからない。 あちこち検索して,改ページがあるかどうかが調べられることはわかったけど, それを設定する方法がわからない。 結局 Option VBASupport 1を指定してExcelと同じ書き方をすることでなんとかなった。 なんとなく負けた気持ち。

(追記)「IsStartOfNewPageプロパティでいける」とのコメントをいただいた。 確かにプロパティだから,値をセットしてもいいんだよな。 そんなわけでこんなコードでうまくいった。 Col=3は,キーになる列がD列だからということ。

Sub Main Col= 3 Doc =ThisComponent Sheet = Doc.Sheets(0) pre = Sheet.GetCellByPosition(Col, 1).Value r = 2 Do Row = Sheet.Rows(r) Cell = Sheet.GetCellByPosition(Col,r) if Cell.Value <> pre then pre = Cell.Value Row.IsStartOfNewPage = True Else Row.IsStartOfNewPage = False End if r = r + 1 Loop While pre<>0 End Sub

2019/01/19(Sat)

表の結合

生徒のLT大会が終わったので,評価シートをマージしなくてはいけない。 LibreOffice calcの表をそのまま全員分貼り合わせればいいのだが, こんなの手作業でやりたくない。 最近Pythonを勉強中なので, それを使ってざくっとコードを書いてみた。 odfpyモジュールを使ってみたが, 肝心の表読み出しのところが少し面倒だった。

import pathlib from odf import number,text,table,opendocument `doc = opendocument.OpenDocumentSpreadsheet()` `tbl = table.Table(name="評価シート")` p = pathlib.Path(".") `for f in p.glob(“2018*.ods”): d = opendocument.load(str(f)) tables = d.spreadsheet.getElementsByType(table.Table) for t in tables: for r in t.getElementsByType(table.TableRow): row = table.TableRow() tbl.addElement(row) for c in r.getElementsByType(table.TableCell): cells = 1 repeat = c.getAttribute(“numbercolumnsrepeated”) vt = c.getAttribute(“valuetype”) if repeat: cells = int(repeat) while cells > 0: cell = table.TableCell(value=c, valuetype=vt) cell.addElement(text.P(text=c)) row.addElement(cell)`

`doc.spreadsheet.addElement(tbl)doc.save(“merge”,True)` (こっそり修正)

2019/01/14(Mon)

WaPENの関数呼び出し

関数呼び出しが今ひとつうまくいかない。 とりあえず add_functionブランチの方では関数呼び出しができるようにはなったけど, ステップ実行や関数内での入力ができないまま。 このあたりはうまく整理すればなんとかなるような気はするのだが…。 setZeroTimeoutを使わずに別な方法を使えばいいんだろうか。

2019/01/13(Sun)

丁提督

艦これの冬イベントは丙で行こうと思っていたが,

報酬艦である峯雲と日進の他は浜波と占守が来てくれたから, 掘りはもういいや。

2019/01/07(Mon)

なんとか回復

年が明けて,1日か2日あたりから腹具合が良くなかった。 ときどき熱っぽかったりもして。 そんなわけでごちそうにあまり手を伸ばせず… 昨日1日たっぷり寝てたおかげでだいぶ回復した。 体重もちょっと減ったけど,すぐ戻るんだろうなあ。