椎木里佳タイマーについて
椎木里佳タイマーは僕が中三の時にPythonを勉強し始めた時に初めて自分で書いたプログラムです。
なぜ椎木里佳なのか言うと、特に意味はないです笑
別に椎木里佳じゃなくて嫌いな奴の名前でも好きな人の名前でも大丈夫です(^^)
このプログラムをどんどん改良していくことでpythonの基本的な使い方は覚えられたと思います。
椎木里佳タイマーver.0
# coding: utf-8
import time
i = 1
while True:
print "["+str(i)+"]:椎木里佳."
i += 1
time.sleep(1)
continue
これが椎木里佳タイマーの原型です。
ここからどんどん発展させていって最終的には21種類のタイマーを作りました笑
椎木里佳タイマーver.4.0.1
# coding: utf-8
import time
a = int(raw_input("Hour:"))
b = int(raw_input("Minute:"))
c = int(raw_input("Second:"))
while True:
print "[ %s : %s : %s ]:椎木里佳." %(str(a),str(b),str(c))
c -= 1
time.sleep(1)
if c < 0:
c = 59
b -= 1
if b < 0:
b = 59
a -= 1
if a < 0:
print "椎木里佳だマン"
break
continue
これがver4.0.1ということで、ver.0では一秒ごとに椎木里佳を表示するだけだったんですけど、自分で時間を設定できるようになってちゃんとしたタイマーの機能を持ったわけです。
椎木里佳タイマーver10
# coding: utf-8
import time
import sys
from datetime import datetime
print """
What do you use??
1, ShiikiRikaTimer
2, ShiikiRikaStopper
3, ShiikiRikaNow
4, Exit
"""
start = raw_input("Please enter 1-4: ")
if start == "1":
while True:
try:
y = str(raw_input("Timer Name: "))
if y == "": y = "椎木里佳"
if y == "exit":
print "See you..."
sys.exit()
a = int(raw_input("Hour: "))
b = int(raw_input("Minute: "))
c = int(raw_input("Second: "))
while True:
print "[ %s : %s : %s ]:%s." %(str(a),str(b),str(c),str(y))
c -= 1
time.sleep(1)
if c < 0:
c = 59
b -= 1
if b < 0:
b = 59
a -= 1
if a < 0:
print "君の名は、%s" % str(y)
break
continue
except Exception as e:
print "+++ERROR!!+++"
print "[ERROR_TYPE]:%s" % (str(type(e)))
print "[ERROR_MESSAGE]:%s" % (str(e))
elif start == "2":
try:
y = str(raw_input("Stopper Name: "))
if y == "": y = "椎木里佳"
hour = 0
minute = 0
second = 0
milli = 0
while True:
print "[ %s : %s : %s : %s ]:%s." %(str(hour),str(minute),str(second),str(milli),str(y))
milli += 1
time.sleep(0.01)
if milli > 99:
milli = 0
second += 1
if second > 59:
second = 0
minute += 1
if minute > 59:
minute = 0
hour += 1
continue
except Exception as e:
print "+++ERROR!!+++"
print "[ERROR_TYPE]:%s" % (str(type(e)))
print "[ERROR_MESSAGE]:%s" % (str(e))
elif start == "3":
try:
y = str(raw_input("Timer Name: "))
if y == "": y = "椎木里佳"
if y == "exit":
print "See you..."
sys.exit()
while True:
print datetime.now().strftime("[ %Y / %m / %d | %H : %M : %S ]:" + str(y))
time.sleep(1)
continue
except Exception as e:
print "+++ERROR!!+++"
print "[ERROR_TYPE]:%s" % (str(type(e)))
print "[ERROR_MESSAGE]:%s" % (str(e))
elif start == "4":
print "Exit"
sys.exit()
else:
print "nothing"
これが一応椎木里佳タイマーの最終形態です。
タイマー以外の機能もつけてみただけで見ての通りコードは単純なので、独学で始めても1日あればここまでは持ってこれるかなぁと言う感じです。
椎木里佳モジュール
# coding: utf-8
import time
import sys
import random
from datetime import datetime
class Timer(object):
def __init__(self, name, hour, minute, second):
self.name = name
self.hour = hour
self.minute = minute
self.second = second
def TLoop(self):
if self.name == "": self.name = "椎木里佳"
while True:
print "[ %s : %s : %s ]:%s." %(self.hour, self.minute, self.second, self.name)
self.second -= 1
time.sleep(1)
if self.second < 0:
self.second = 59
self.minute -= 1
if self.minute < 0:
self.minute = 59
self.hour -= 1
if self.hour < 0:
print "%sだマン" % self.name
break
continue
class Stopper(object):
def __init__(self, name):
self.name = name
def SLoop(self):
hour = 0
minute = 0
second = 0
milli = 0
if self.name == "": self.name = "椎木里佳"
while True:
print "[ %s : %s : %s : %s ]:%s." %(str(hour),str(minute),str(second),str(milli),self.name)
milli += 1
time.sleep(0.01)
if milli > 99:
milli = 0
second += 1
if second > 59:
second = 0
minute += 1
if minute > 59:
minute = 0
hour += 1
continue
class Now(object):
def __init__(self, name):
self.name = name
def NLoop(self):
if self.name == "": self.name = "椎木里佳"
while True:
print datetime.now().strftime("[ %Y / %m / %d | %H : %M : %S ]:" + self.name)
time.sleep(1)
continue
if __name__ == "__main__":
y = str(raw_input("Timer Name: "))
a = int(raw_input("Hour: "))
b = int(raw_input("Minute: "))
c = int(raw_input("Second: "))
timer = Timer(y, a, b, c)
timer.mainloop()
椎木里佳タイマー(モジュール利用)ver.2
# coding: utf-8
import ShiikiRikaModule as srm
import sys
print """
What do you use??
1, ShiikiRikaTimer
2, ShiikiRikaStopper
3, ShiikiRikaNow
4, Exit
"""
start = raw_input("Please enter 1-4: ")
if start == "1":
while True:
try:
y = str(raw_input("Timer Name: "))
if y == "exit":
print "See you..."
sys.exit()
a = int(raw_input("Hour: "))
b = int(raw_input("Minute: "))
c = int(raw_input("Second: "))
timer = srm.Timer(y, a, b, c)
timer.TLoop()
except Exception as e:
print "+++ERROR!!+++"
print "[ERROR_TYPE]:%s" % (str(type(e)))
print "[ERROR_MESSAGE]:%s" % (str(e))
elif start == "2":
try:
y = str(raw_input("Stopper Name: "))
if y == "exit":
print "See you..."
sys.exit()
stopper = srm.Stopper(y)
stopper.SLoop()
except Exception as e:
print "+++ERROR!!+++"
print "[ERROR_TYPE]:%s" % (str(type(e)))
print "[ERROR_MESSAGE]:%s" % (str(e))
elif start == "3":
try:
y = str(raw_input("Timer Name: "))
if y == "exit":
print "See you..."
sys.exit()
now = srm.Now(y)
now.NLoop()
except Exception as e:
print "+++ERROR!!+++"
print "[ERROR_TYPE]:%s" % (str(type(e)))
print "[ERROR_MESSAGE]:%s" % (str(e))
elif start == "4":
print "Exit"
sys.exit()
else:
print "nothing"
それで次のステップとしてver10を元にして椎木里佳タイマーをモジュール化してみました(^^)
機能はver10と全く同じなんですけど、こんな感じでモジュール利用するとさらに短くかけますよって話です。
こういう単純なプログラムを書いているうちにモジュール化とか色々いじってみて練習したのは本当に勉強になりました(^^;
椎木里佳ストッパーとか椎木里佳時計とかいろいろ副産物があったんですけど、だいたいver10に入ってるんでよかったらそっちも動かしてみてください(><)