kakashi-blog・カカシブログ・

Python備忘録を書きドローンやバイクなど好きな事で生きて行こうとしているブログ

python プログラミング 未分類

子供がズルをするので計算カードをpython(Tkinter)で作った

投稿日:2020年10月6日 更新日:

うちの小学1年生の子の宿題に「計算カード」があります。

学校からは、「時間を計ってやりなさい」と言われているようです。

もちろん計算なんかせず、めくる事が目的になって、

どれだけ早くめくれるか。みたいな事になってしまっています。

まあそうなるよね。

妻は我慢できないようなので作ってみました。

 

今回作ったのは、

くり下がりのない一けたの引き算

マイナスにはならない物だけの組み合わせ(55通りかな)

それをランダムに出題

最後に、
かかった時間
点数(正解率)
間違った問題
を表示するようになっています。

 

コード


import tkinter as tk
from tkinter import messagebox
from functools import partial
import numpy as np
import time

root = tk.Tk()
root.attributes("-topmost", True)
messagebox.showinfo('', 'はじめ!')
root.destroy()

q1=[0,1,2,3,4,5,6,7,8,9]
q2=[0,1,2,3,4,5,6,7,8,9]
q1=np.array(q1)
q2=np.array(q2)
ran=[]
for i in q1:
    for ii in q2:
        if i-ii>=0:
            ran.append([i,ii])
ran=np.array(ran)
p=np.random.permutation(int(len(ran)))#シャッフル
ran=ran[p]
seikai=0
hazure=[]


def ans(a,i,ii):
    b=i-ii
    if a==b:
        messagebox.showinfo('', 'せいかい!')
        global seikai
        seikai+=1
        win.destroy()
        
    else:
        messagebox.showinfo('', 'ざんねん せいかいは{}です'.format(b))
        global hazure
        hazure.append(['{0}-{1}'.format(i,ii)])
        win.destroy()
    
def but(i,ii):
    global win
    win=tk.Tk()
    win.attributes("-topmost", True)#常に画面の最前に表示
    win.title('ひきざんチャレンジ!')
    win.geometry('500x350+100+200')
    label=tk.Label(text='{0}-{1} ='.format(i,ii),font=("",30))
    label.pack()
    button=tk.Button(win,text='0',command=partial(ans,0,i,ii),width=10)
    button.pack(fill = 'none', padx=10,side = 'top')
    button=tk.Button(win,text='1',command=partial(ans,1,i,ii),width=10)
    button.pack(fill = 'none', padx=10,side = 'top')
    button=tk.Button(win,text='2',command=partial(ans,2,i,ii),width=10)
    button.pack(fill = 'none', padx=10,side = 'top')
    button=tk.Button(win,text='3',command=partial(ans,3,i,ii),width=10)
    button.pack(fill = 'none', padx=10,side = 'top')
    button=tk.Button(win,text='4',command=partial(ans,4,i,ii),width=10)
    button.pack(fill = 'none', padx=10,side = 'top')
    button=tk.Button(win,text='5',command=partial(ans,5,i,ii),width=10)
    button.pack(fill = 'none', padx=10,side = 'top')
    button=tk.Button(win,text='6',command=partial(ans,6,i,ii),width=10)
    button.pack(fill = 'none', padx=10,side = 'top')
    button=tk.Button(win,text='7',command=partial(ans,7,i,ii),width=10)
    button.pack(fill = 'none', padx=10,side = 'top')
    button=tk.Button(win,text='8',command=partial(ans,8,i,ii),width=10)
    button.pack(fill = 'none', padx=10,side = 'top')
    button=tk.Button(win,text='9',command=partial(ans,9,i,ii),width=10)
    button.pack(fill = 'none', padx=10,side = 'top')
    win.mainloop()
    

start = time.time()
for i in ran:
    but(i[0],i[1])
stop =time.time()
result = stop -start
x=int(result)//60
y=int(result)%60
rp= tk.Tk()
rp.attributes("-topmost", True)
rp.geometry('300x600+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()
          

変数がかぶってたり、汚いコードだけどとりあえず動きます。

まず、OKボタンでスタート、ストップウォッチも同時に動き出します。

正解ボタンを押せば「せいかい!」

OKボタンを押して次に行きます

間違ったボタンを押したら

「ざんねん せいかいは**です」と表示

 

最後まで計算したら時間と正解率、
間違った問題が表示

おわりボタンでおしまい。

 

あまりのある割り算アプリ
pythonのtkinterを使って、あまりのある割り算アプリを作ってみた

-python, プログラミング, 未分類
-

執筆者:


  1. […] 以前作った引き算アプリ「子供がズルをするので計算カードをpython(Tkinter)で作った」 […]

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

ソフトバンクからワイモバイルにiPhoneで乗り換える方法(MNP)

現在iPhone7を使用中、番号そのまま(MNP)ソフトバンクからワイモバイルに乗り換えたので自分なりにまとめます。   何から始めればいいのか 結構大事なことだけど、あまり書かれていないので書いてお …

no image

ノートパソコンの選び方、どう選べばいいかわからない(初心者向け)

結論から言います。 下のAmazonサイトで販売している¥74,000のノートパソコンを買いましょう HP ノートパソコン HP 14s-dk1000 14インチ フルHD ブライトビュー IPSディ …

ナイスハッシュのmining payment毎に、レートを自動で取得(python)

マイニングを始めると、どのタイミングのレートで確定申告しようかと考えると思います。 ググると結構皆さん独自で考えて行っているのが現状ですかね。 ひと月にまとめている人、円に換えたタイミングの人・・・結 …

amazonから注文していない物が届いた場合の対処法

  突然amazonから身に覚えのないものが届きました。 前日にAmazonアフィリの登録をしていたので、何か送ってきたのかと思い開けてみると。 👇望遠鏡が入っていました、まさにこれ。 …

no image

fxの1分足を10分足に変換するpythonプログラム

今月一度もブログ更新出来ていなかったので日付が変わる前に更新しようと思います   バックテストを行うためにネット上でヒストリカルデータを探していた所、 FOREX TESTERというサイトに漂着 FO …