狐は豚に貢ぎたい

露文徒の雑記

椎木里佳タイマーについて

椎木里佳タイマーは僕が中三の時に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に入ってるんでよかったらそっちも動かしてみてください(><)

 

白石聖を推してます