วันอาทิตย์ที่ 24 พฤศจิกายน พ.ศ. 2556

Assignment 2 - Python My Calendar


Python My Calendar


#!/usr/bin/env python
import calendar, webbrowser

#generate html file
def make_html( listofdate, month ):
    #loop for body in html
    body = """<table border="0" cellpadding="2">"""
    a = 0
    for quarters in listofdate:
        body = body + """<tr valign="top">"""
        for months in quarters:
            body = body + """<td><table border="5" cellpadding="10"><center><font color="white" size = "6">""" + month[a] + """</font></center><tr><td align="center"><font color="white" size = "3">Sun</font></td><td align="center"><font color="white" size = "3">Mon</font></td><td align="center"><font color="white" size = "3">Tue</font></td><td align="center"><font color="white" size = "3">Wed</font></td><td align="center"><font color="white" size = "3">Thu</font></td><td align="center"><font color="white" size = "3">Fri</font></td><td align="center"><font color="white" size = "3">Sat</font></td></tr>"""
            for weeks in months:
                body = body + "<tr>"
                for days in weeks:
                    if days != 0:
                        body = body + """<td align="right"><font color="white" size = "4">""" + str(l) + "</font></td>"
                    else:
                        body = body + "<td>" "</td>"  
                body = body + "</tr>"
            body = body + "</table></td>"
            a += 1
        body = body + "</tr>"
    body = body + "</table>"
    file = open("./mycal.html", 'w')
    file.write("""
<html>
    <head>
        <title>Calendar 2013</title>
    </head>
    <body bgcolor="skyblue">
        <center><br><font color="white" size = "10">
        Calendar 2013</font><br><br>
        """+body+ """
        </center>
    </body>
</html>
               """)
    file.close()
    print "Generate HTML Complete"

month = ["January","Febuary","March","April","May","June","July","August","September","October","November","December"]
mycal = calendar.HTMLCalendar(calendar.SUNDAY)
make_html( mycal.yeardayscalendar(2012),month)
webbrowser.open("./mycal.html")

    จากโค้ดข้างบนนี้เริ่มต้นด้วยการ import calendar และ webbrowser ซึ่ง calendar นั้นเป็น library ที่มีมาแล้วของ python ซึ่งเกี่ยวกับปฎิทินเราจึงจะนำมาประยุกต์ใช้กับ โปรแกรมของเราซึ่ง โปรแกรมนี้มี 1 Function คือ make_html และมี list ที่เก็บข้อมูลของชื่อเดือนทั้ง 12 เดือนชื่อ month

    โดยที่ make_html มี Arguments 2 ตัวคือ listofdate กับ month ซึ่ง month ก็เอาค่าของ list ที่เก็บข้อมูลของชื่อเดือนที่เราสร้างไว้ตอนแรกส่งมา ส่วน listofdate นั้นมาจากการ generate ออกมาเป็น list ของวันที่ด้วย calendar ที่เรา import มาในตอนแรก โดยจากโค้ดในบรรทัด mycal = calendar.HTMLCalendar(calendar.SUNDAY) คือการสร้าง object จาก calendar เป็นแบบ HTMLCalendar และกำหนดวันแรกของอาทิตย์เป็นวันอาทิตย์นั่นเองจากนั้น ตอนที่เรียก Function make_html ก็เรียกคำสั่ง mycal.yeardayscalendar(2013) ซึ่งจะได้ออกมาเป็น list ที่เก็บข้อมูลเป็น 4 ช่วงของ 1 ปี ในแต่ละช่วงก็จะมี list ของ 3 เดือน และ ในแต่ละเดือนก็จะแบ่งเป็น list ของแต่ละอาทิตย์ และในแต่ละอาทิตย์ก็จะเก็บข้อมูลของวันที่ตามวันโดยเรียงจากวันอาทิตย์-วันเสาร์ หากสัปดาห์ไหนไม่มี วันนั้นอยู่เช่นต้นเดือนเริ่มที่วัน ศุกร์ วันอาทิตย์ - วันพฤหัสบดี ก็จะมีเลขวันเป็นเลข 0 ในกรณีสัปดาห์สิ้นเดือนก็เช่นกันโดยในส่วนของ body โค้ด HTML ก็ทำการวน loop เพื่อเข้าถึงวันที่ที่อยู่ใน list ทั้งหมดและทำเป็นตารางใน HTML โดยแถวนึงจะมี 3 เดือนเมื่อสร้างเสร็จแล้วก็จะ print "Generate HTML Complete" ออกมาทางหน้าจอและเปิดปฎิทิน HTML ของเราโดยใช้ webbrowser เปิดทันที

    จากโปรแกรมนี้จะเห็นว่าใน Python นั้นเรามี API ที่ชื่อ calendar ซึ่งสามารถสร้าง List ที่เก็บวันที่ของทั้งปีได้ หรือจะสร้างเป็นเดือนก็ได้เช่นกันโดย API นี้นอกจากจะสามารถสร้าง List ของวันที่ได้แล้วยังสามารถสร้างออกมาเป็นโค้ด HTML สำเร็จรูปออกมาได้เลยเช่นกัน แต่ผู้เขียนเลือกใช้แบบที่สร้าง List ของวันที่ออกมาใช้เพราะมีความยืดหยุ่นในรูปแบบของการแสดงผลให้ได้ตามที่ต้องการ

โดยได้ศึกษาการเขียนโค้ด HTML จากเว็บ w3schools.com
เว็บสำหรับศึกษา API Calendar จากเว็บ Python.org

ไม่มีความคิดเห็น:

แสดงความคิดเห็น