小学3年の娘の集中力が持続せず、ひき算やわり算の計算がはかどらない。
私がパソコンをいじっている姿をよく見ているためか、パソコンには興味を持ってくれているようなので、ラズベリーパイを使って、計算用のプログラムを作ってみた。
使用言語:python3
---わり算.py---
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
####設定用################################
問題数 = 2 #出題数
ファイル名 = 'わり算.py' #このファイル名
記録ファイル = 'data.csv' #記録ファイルのパス
#######################################
import random
import time
import csv
def 問題(num):
global 得点
a=random.randint(100,999)
b=random.randint(10,99)
c=a//b
d=a%b
正解 = "{}...{}".format(c,d)
print("第{}問:{} ÷ {} =".format(num+1,a,b))
解答 = input()
if 正解 == 解答:
得点 = 得点 + 1
print("正解◯")
else:
print("間違い×。正解は" + str(正解))
#記録ファイル参照
print("名前を入力しなさい。(●/●)")
名前 = str(input())
lst = []
記録=1000
with open(記録ファイル ,'r') as file:
reader = csv.reader(file)
lst = [r for r in reader]
for row in lst:
if row[0] == ファイル名:
if row[1] == 名前:
記録 = int(row[2])
#名前が違う場合に再入力を強制する。
while [str(ファイル名),str(名前),str(記録)] not in lst:
print("名前が違うよ。もう一度名前を入力しなさい")
名前=input()
for row in lst:
if row[0] == ファイル名:
if row[1] == 名前:
記録 = int(row[2])
else:
print("記録は {} 秒です".format(記録))
#開始
得点 = 0
print("〇あまり〇 → 〇...〇 の形で答えなさい")
print("Enterキーで開始 全{}問".format(問題数))
input()
start=time.time()
#ループ開始
for num in range(問題数):
問題(num)
print("-------------------")
#ループ後の処理
finish=time.time()
経過時間=int(finish-start)
print("得点:{}/{} 点。記録は {} 秒です".format(得点,問題数,経過時間))
if 得点 == 問題数:
if 記録 > 経過時間 :
sec = 記録 - 経過時間
print("新記録達成!! {} 秒更新".format(sec))
for row in lst:
if row[0] == ファイル名:
if row[1] == 名前:
row[2]=str(経過時間)
with open(記録ファイル ,'w',encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerows(lst)
else:
sec = 経過時間 - 記録
print("残念!" + str(sec) + "秒とどかず")
else:
print("{}点目指してがんばれ!!".format(問題数))
print("Enterキーで終了")
input()
# 使用方法
# ターミナルで保存したディレクトリへ移動し、”sudo chmod 755 か
わり算.py”を実行しファイルに実行権限を与える。
# 記録ファイルに「わり算.py,名前,999」を追記(なければ新規作成)する。
# ダブルクリックし、端末で実行を選択する。
#説明
#def 問題(num): ここだけ変えれば、いろいろな問題に対応可能。
#記録ファイル参照:csvファイルを参照し、ユーザーごとの記録を表示する。
#名前が違う場合に再入力を強制する。:
data.csvに[名前,ファイル名,*]がなければ、名前が違うとして再入力を促す。
#開始:
#ループ開始:
for A in range Bを使用し、B(問題数)回ループさせる。
#ループ後の処理:
time.time()を使用し、開始時と終了時の時間差を取得する。
満点でかつ、記録を更新すれば、新たにcsvファイルに記録を上書きする。
ファイル名 = __file__とするとなぜかうまく行かない。
LXTerminalのフォントサイズが小さく、見えにくい場合には、ターミナルを起動して、「編集→設定(s)→スタイル→フォント」でデフォルトのサイズを変更可能。
5インチディスプレイだと下が表示されない問題があるので、
$ sudo nano /boot/config.txt
末尾に”display_rotate=1”を追記し保存。
$ sudo reboot
90度回転されて表示されるので、下まで確認できる。設定後は追記した一文を削除して再起動。
Failed to execute child process "xterm"(そのようなファイルやディレクトリはありません):と表示される場合は、/usr/bin/xtermがないので、シンボリックリンクを作成します。
$ cd /usr/bin
$ sudo ln -s lxterminal xterm
0 件のコメント:
コメントを投稿