その時々

その時々で違うんです。特に決まっていないんです。

pythonで基数変換ドリルを作ってみました。

Pythonの勉強がてら基数変換ドリルを作ってみました。
とりあえずは10進数を表示するので対応する2進数4桁を10回続けて答えるというゲームです。
時間と正答率でポイントが決まります。
過去の成績も記録できます。
10進数から2進数を答えるだけでなく、ランダムで16進数や8進数、桁数も可変するようなものも
作れたら作ってみたいですね。

# -*- coding:utf-8 -*-
"""
ProgramName: RadixDrill
"""
import time
import random
import pickle

stime = time.time()
suc = 0

print '----------------------------------------------------------------------'
print ' RadixDrill Start'
print '----------------------------------------------------------------------'
print 'Try 10 Count'

for i in range(10):
    print 'Decimal -> Binary'
    # Binary Making
    x = random.randint(0,15)
    print 'Question %d' % x

    bi = ''
    for i in range(4):
        bi = str(x % 2) + bi
        x /= 2

    # Maching
    ans = raw_input('Decimal :')

    if bi==ans:
        print 'OK'
        suc += 1
    else:
        print 'NG!'

# Score Display
etime = time.time()
point = int((100 - (etime - stime)) * 10 * suc / 10.0)
print  'correct (%d / 10) time (%d sec)' % (suc, int(etime - stime))
print 'score %dpoint' % point

# Score Save
data = (point, time.asctime())

try:
    file = open('radixdrill.dat', 'rb')
    rdata = pickle.load(file)
    file.close
except IOError:
    rdata = []

rdata.append(data)
rdata.sort()
rdata.reverse()

file = open('radixdrill.dat', 'wb')
pickle.dump(rdata, file)
file.close()

# Score Ranking
print '----------------------------------------'
print ' Score Ranking TOP10'
print '----------------------------------------'

max = 10
for dt in rdata:
    print '%d point , %s' % dt
    if not max: break
    max -= 1