電卓プログラムを作ろう3~GUIプログラムへの挑戦~
2024年11月29日(金)は、7割ほどの出席でした。体験希望者が一人参加しました。
- 18時00分~18時30分 タイピング練習
- 18時30分~19時00分 Pythonドリル
- 19時00分~19時50分 電卓を例にプログラムの要素を学習
- 19時50分~20時00分 あとかたづけ
Contents
タイピング練習
タイピングの練習は、「寿司打」です。
さて、ぼちぼち2人目のスコア10,000を超えそうなメンバーが出てきました。字数にして、130~150字/分です。
事務職として日常的にタイピングをする仕事をしても、十分に通用するタイピングスピードです。彼は、小学校5年生にして一生使えるスキルを手に入れました。
思考するスピードでタイピングできれば、手書きするよりも圧倒的なアウトプットができます。このまま上位の学校に進むにつれ、タイピングで苦労することなく、本質的な学問に集中できます。
Pythonドリル~コーディングの基礎力をつける~
今回からの新しい試みは「Pythonドリル」です。
ごくかんたんなコーディングの数をこなすことで、コーディングの基礎力を鍛えます。
この日は、計算結果をprintで表示するところを何問か出題しました。テストではないので、Web検索しようが、生成AIに聞こうが問題ありません。このような要素を調べるのも大切なことです。
ただ、「4割る0の結果を表示してください」との問題に、「プログラムしなくてもわかる。0じゃん」というメンバーが多かったのはいただけません。なるほど、どうやら小学校では教えない内容ですか。
基本的に数学の世界では、0除算は不能です。プログラムの世界では、0除算をするとエラーになります。
ZeroDivisionError: division by zero
リストを繰り返し文の中で計算するようなプログラムだと、リストの要素の中に「0」が入っているとこのエラーが出ます。エラーの意味を知らないと、いつまで経っても解決することができません。
重要な要素なので、しっかり覚えておきましょう。
電卓らしくプログラムを作ろう~GUI編~
電卓プログラムは3回目です。GUIプログラムの基礎編です。GUIとはGraphical User Interfaceの頭文字をつなげたもので、マウスでクリックしながら操作するプログラムをイメージしてもらえばOKです。
2回目までで作ってきたプログラムは、CUI(Character User Interface)またはCLI(Command Line Interface)と呼ばれるプログラムです。黒い画面で、マシンとの対話をキーボードで文字を入力しながら行うプログラムです。
容易に想像できると思いますが、GUIプログラムのほうが使い手にとって直感的に操作しやすいプログラムです。
まずは何もしないGUIプログラム
まずは、tkinter(ツールキットインター・ティーケーインター)を使ったGUIプログラムの基本形からです。root.titleの行は、指示していないので不要です。
import tkinter
# メインウィンドウを生成する
root = tkinter.Tk()
# ウィンドウのタイトルを設定する
#root.title("Tkinter サンプルプログラム)
# ウィンドウのサイズを設定する
root.geometry("600x800")
# tkinterのイベントを処理する
root.mainloop()
こちらから指示したのは「tkinterモジュールを使って、横600px、縦800pxのウィンドウを表示してください」というものです。Web検索で答えを探したり、生成AIに聞いてみたり、それぞれのやりかたで答えにたどりついたのはえらいと思います。
ただ、明確な意図なくroot.titleの行を表示したのは、ダメです。明確な意図がないとは、単にコピペしただけということです。
あと、よくある間違いは、「600x800」を「600×800」と書く間違いです。真ん中のバッテンは、アルファベット小文字の「x」です。この辺コピペで間違っていたメンバーがちらほらいました。
GUIプログラムの基本は、表示するWindowの設定を全部書いてから、最後に表示します。単にコピペするだけではなくて、理解してください。
次はボタンを表示するプログラム
何もしないGUIプログラムが完成したら、次はボタンを配置します。これも、各々が好きなやり方で答えを出していました。わたしの一例はこちら。
import tkinter
# メインウィンドウを生成する
root = tkinter.Tk()
# ウィンドウのタイトルを設定する
#root.title("Tkinter サンプルプログラム)
# ウィンドウのサイズを設定する
root.geometry("600x800")
# ボタンを設定する
button = tkinter.Button(root, text="ボタンのサンプル")
button.pack()
# tkinterのイベントを処理する
root.mainloop()
これもWeb検索や生成AIを使って、それっぽい答えにたどり着いたメンバーはいました。しかしながら、余計なコードがあったり、挿入する位置を間違ったり、なかなか正解にたどり着けません。
他人から教えてもらった答えに価値はない
「電卓を作る」と目標を言ったら、生成AIでコピペして動かそうとしているメンバーが多数いたのが気になりました。生成AIを活用しようというのは問題ないのだけれど、使い方が良くないと感じます。
生成AIが示すコードを参考にするのは問題ありません。ただ、それをコピペして動かないときに、自分で解決できないということは、理解していないということです。
ノンプログラマーなら、それでも構わないでしょう。しかし、ICTクラブでプログラムを勉強するからには、それではダメなのです。
自分でコードを考えて、みずから答えを導き出さなくてはなりません。その補助で生成AIを使うのは、いくら使っても構いません。この状況があまり続くようなら、進め方を変えなくてはなりません。