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)で作った」 […]

pythonのtkinterを使って、あまりのある割り算アプリを作ってみた | kakashi-blog・カカシブログ・ へ返信する コメントをキャンセル

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

関連記事

バイク用バッテリーレスキットを自作する

 早速ですが、KSR80のエアクリーナーボックスを撤去したら、バッテリーの置き場にこまったので、バッテリーレス化します。  バッテリーレスキットの自作は、前から気になって調べていたので、コンデンサつな …

Amazonのウェブスクレイピングが出来ない

  pythonでプログラミングを勉強(というより趣味で遊んでいる)しています。     BeautifulSoupを使用して、ウェブスクレイピングがある程度出来るようになってきた。そこでAmazon …

Python備忘録 selenium 自動ログイン編

前回はブラウザのスクロールまで行いました 今回はブラウザのログイン画面から自動ログインに挑戦   退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング   ◇ソー …

Floki Inu (Token) の買い方 PancakeSwap

   Floki inu の説明は、いろいろなサイトで紹介されていて、主にオフィシャルサイトを見ることをお勧めします。ので、ここでは簡単に購入する方法&つまずきそうな所の説明をします。 Pancake …

Tkinterのメッセージボックス、謎ウインドウが消えない

pythonでTkinterを使用し、メッセージボックスを使おうと思ったが、謎ウインドウが出てきて処理が止まってしまう。    ↓のやつですね   調べてみると、「ルートウィンドウが無いと勝手に生成さ …