小3の娘に、あまりのある割り算の問題を出してほしいとたのまれたので、
Windowsで動くアプリを作ってみました。
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
前提条件
・2けた ÷ 1けた
・答えは1けた
・小学生でも使えるように実行ファイルにしておく
・キーボードは使わない(マウス操作のみ)
ざっくりこんな感じで作って行きたいと思います。
コード
import tkinter as tk
from tkinter import messagebox
import numpy as np
import time
import random
root = tk.Tk()
root.attributes("-topmost", True)
messagebox.showinfo('', 'はじめ!')
root.destroy()
q1,n,hazure,q2=[],[],[],[2,3,4,5,6,7,8,9]
ran,seikai,c=10,0,0
for i in range(10,100):
q1.append(i)
for ii in q1:
for iii in q2:
if ii%iii!=0:
if ii//iii<10:
n.append([ii,iii])
random.shuffle(n)
def sub(nn,a,b):
global c
if c==0:
global k
k=nn
c+=1
global win
win.destroy()
but(a,b,st,nn)
else:
c=0
kaito(a,b,k,nn)
def kaito(a,b,k,nn):
if a//b==k:
if a%b==nn:
messagebox.showinfo('', 'せいかい!')
global seikai
seikai+=1
global win
win.destroy()
else:
msg(a,b)
else:
msg(a,b)
def msg(a,b):
messagebox.showinfo('', 'ざんねん せいかいは{}あまり{}です'.format(a//b,a%b))
global hazure
hazure.append(['{0}÷{1}'.format(a,b)])
global win
win.destroy()
def but(a,b,f,sq):
global win
win=tk.Tk()
win.attributes("-topmost", True)#常に画面の最前に表示
win.title('あまりのあるわりざんチャレンジ!')
win.geometry('800x350+100+200')
label=tk.Label(text='{0}÷{1} ={3}あまり☆ \n※{2}にはいる数字のボタンを押そう'.format(a,b,f,sq),font=("",30))
label.pack()
for i in range(1,10):
button=tk.Button(win,text='{}'.format(i),command=partial(sub,i,a,b),width=10)
button.pack(fill = 'none', padx=10,side = 'top')
win.mainloop()
sq,st='□','次に☆'
start = time.time()
for i in range(ran):
but(n[i][0],n[i][1],sq,sq)
stop =time.time()
result = stop -start
x=int(result)//60
y=int(result)%60
rp= tk.Tk()
rp.attributes("-topmost", True)
rp.geometry('400x600+100+50')
label0=tk.Label(text='{}ふん{}びょう'.format(x,y),font=("",30))
label0.pack()
label00=tk.Label(text='てんすう{}てん'.format(int(100*seikai/(seikai+len(hazure)))),font=("",30))
label00.pack()
if len(hazure)==0:
label1=tk.Label(text='ぜんもんせいかい!',font=("",30))
label1.pack()
else:
label2=tk.Label(text='にがてなものは',font=("",30))
label2.pack()
for h in hazure:
label3=tk.Label(text=h,font=("",20))
label3.pack()
label4=tk.Label(text='です、がんばりましょう!',font=("",20))
label4.pack()
messagebox.showinfo('', 'おわり')
rp.destroy()
動かしてみる
メッセージBOXの「OK」を押すと、時間のカウントと共に問題が出題されていく
まずは四角に入る数字を選択(ここで間違えても、あまりを入れないと答え合わせにはならない)
次にあまりの数を選択
正解なら
間違いなら
とこんな感じ
10問終わったら
かかった時間と、間違った問題が表示される。
実行ファイル化(exe化)
ダブルクリックだけで動くようにするため、実行ファイルにしておきます。
コマンドプロンプト上で、「pyinstaller ファイル名」
これだけで実行ファイルに変換できます。
出来上がった「dist」ファイルの中に
こんな実行ファイル(.exe)があるので、
これをダブルクリックすればファイルが実行されます。
場所を移すときは「dist」ファイルごと動かさないと、パスが崩れます。
使いずらいと娘には言われていますが、
宿題の自主勉にはつかってくれているので◎
一度答えを選択してしまうと修正できないなど、
改善点は多数ありますが、まぁすぐに使わなくなってしまうと思うので、
これ以上時間はかけません。
独学プログラマー Python言語の基本から仕事のやり方まで
以上終わり
また計算問題をたのまれたら作ろうと思います。
以前作った引き算アプリ
「子供がズルをするので計算カードをpython(Tkinter)で作った」
[…] あまりのある割り算アプリ「pythonのtkinterを使って、あまりのある割り算アプリを作ってみた」 […]