วันพุธที่ 27 พฤศจิกายน พ.ศ. 2556

Hello Django

เริ่มต้นบทความนี้กันด้วย

How to install Django 1.6 in ubuntu 12.04 LTS 32-bit

วิธีการลงมีอยู่ 2 วิธี

1.เปิด Terminal แล้วพิม “sudo pip install Django==1.6” โดยไม่ต้องมีเครื่องหมาย "” เป็นวิธีการลง Django แบบง่ายๆ
2.Download Django-1.6.tar.gz โดย คลิกที่นี่ จากนั้นเปิด terminal ขึ้นมาแล้วพิมข้อความดังนี้เป็นอันเสร็จ

tar xzvf Django-1.6.tar.gz
cd Django-1.6
sudo python setup.py install

จากนั้นเราจะเริ่มการใช้ Django อย่างง่ายๆกันครับ

1.เปิด Terminal ขึ้นมาจากนั้นให้ cd ไปยัง Directory ที่เราต้องการให้เป็นที่เก็บโปรเจคนี้
2.พิม django-admin.py startproject Mysite (Mysite สามารถตั้งเป็นชื่ออื่นๆได้)
3.พิม ls จะปรากฏ Directory ตามชื่อของ Mysite ที่เราพิมไว้
4.เพื่อไม่ให้เป็นการสับสนในชื่อของ Directory ให้เราพิมคำสั่ง mv Mysite Project1
เพื่อทำการเปลี่ยนชื่อแล้วลองพิม ls อีกครั้้งชื่อของ Directory จะเปลี่ยนไป (Mysite ให้ใช้ตามชื่อที่เราใช้ตอน startproject ส่วน Project1 ชื่ออะไรก็ได้แล้วแต่เราเลย)
5.พิม cd Project1 (Project1 คือชื่อตามที่เราเปลี่ยนไปเมื่อสักครู่)


6.พิม python manage.py runserver เพื่อเป็นการเริ่ม runserver
7.เปิด Browser ขึ้นมา จากนั้นพิม 127.0.0.1:8000 จะได้ดังรูป


8.สร้าง File views.py ใน ./Project1/Mysite


โดยใน views.py มีข้อความดังนี้

from django.http import HttpResponse

def hello(request):
    return HttpResponse('Hello Django')

9.เปิดไฟล์ urls.py ใน Directory เดียวกับที่สร้างไฟล์ views.py ไว้ และเพิ่มโค้ดเข้าไปดังนี้


url(r'^admin/', include(admin.site.urls)),
url(r'^hi/$', 'Mysite.views.hello'),
# to call hello() in views.py in Mysite

จะได้โค้ดในไฟล์รูปแบบตามนี้


from django.conf.urls import patterns, include, url
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'Mysite.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^hi/$', 'Mysite.views.hello'),
    # to call hello() in views.py in Mysite
)

10.ลองเข้า Browser อีกครั้งโดยคราวนี้พิมที่อยู่ไปที่ http://127.0.0.1:8000/hi/ จะได้ดังรูป


คำอธิบายเพิ่มเติม

url(r'^hi/, 'Mysite.views.hello'),

    จากโค้ดบรรทัดนี้ จะเห็นว่า มีสัญลักษณ์ ^ และ $ โดย ^ หมายถึงเริ่มต้น และ $ เป็นจุดจบ โดยภายใน ^ $ คือชื่อของลิ้งค์ ดังที่เราพิมใน Browser ตามข้อ 10 หากชื่อตรงกันจะไปเรียกฟังก์ชั่นด้านหลัง โดยเป็น Mysite.views.hello คือการเรียกไฟล์ views.py ใน Mysite และเรียกใช้ฟังก์ชั่น hello ใน views.py ตามที่เราสร้างไว้ในข้อ 8

    จากข้างต้นนั้นจะเห็นได้ว่า Django นั้นเป็น Web framework แบบหนึ่งที่ใช้งานได้ไม่ยากมากนักซึ่งช่วยให้เราพัฒนา Web Application ได้ง่ายขึ้นโดยเบื้องต้นหลักๆเราต้องสร้างไฟล์ที่ชื่อ views.py และแก้ไขไฟล์ที่ชื่อ urls.py

    โดย views.py เป็นส่วนของ Functions ที่เอาไว้ให้ทาง urls.py เรียกใช้เพื่อแสดงผลตาม Functions ที่เราเขียนเอาไว้ใน views.py ส่วน urls.py จะเป็นส่วนที่คอยเช็คว่า urls ที่ผู้ใช้กรอกเข้ามานั้นตรงกับรูปแบบของ urls ที่กำหนดไว้ใน urls.py หรือไม่หากตรงก็จะเรียกค่าจาก views.py หรือจากที่อื่นๆแล้วแต่ผู้เขียนว่ากำหนดให้เรียกจากที่ไหน แต่หากไม่ตรงกันก็จะเกิด error ขึ้นนั่นเอง
Read more ...

วันอาทิตย์ที่ 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
Read more ...

Assignment 2 - Python Directory Listing


Python Directory Listing

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

#find all file and sub_directory
def find_dir( path ):
    try:
        allindir = []
        allinfile = []
        for f in os.listdir( path ):
            name, ext = os.path.splitext( f )
            if name.startswith(".") :#or ext == ".html":
                continue
            if ext == "":
                allindir.append(f)
            else:
                allinfile.append(f)
        return allindir,allinfile
    except Exception as err:
        print err

#generate html file
def make_html( path, mpass_dir, allindir, allinfile):
    #loop for body in html
    body = "<ol>"
    if mpass_dir != "":
        body = body + """<li><a href=./../page.html>Up to higher level directory</a></li><br>"""
    for k in allindir:
        body = body + """<li><a href=./""" + k + "/" + """page.html>""" + k + """</a></li><br>"""
    for g in allinfile:
        body = body + """<li><a href=./""" + g + """>""" + g + """</a></li><br>"""
    body = body + "</ol>"
    file = open(path+"/page.html", 'w')
    file.write("""
<html>
    <head>
        <title>Directory listing for """ + path +"""</title>
    </head>
    <body bgcolor="skyblue">
        <br><font color="white" size = "5">
        Directory listing for """ + path +"""<br><br><hr><br><ul>
        """+body+ """
        </font></ul><hr>
    </body>
</html>
               """)
    file.close()
    print "Generate HTML Complete"

#run make_html recursive
def remake_html(pass_dir,all_dir):
    for i in all_dir:
        os.chdir(i)
        current_dir = os.getcwd()
        newall_dir, newall_file = find_dir(current_dir)
        make_html(current_dir, pass_dir, newall_dir, newall_file)
        if len(newall_dir)>0:
            remake_html(current_dir,newall_dir)
        os.chdir(pass_dir)

original_dir = os.getcwd()
all_dir, all_file = find_dir( original_dir )
make_html(original_dir, "", all_dir, all_file)
remake_html(original_dir, all_dir)
os.chdir(original_dir)
webbrowser.open_new_tab("./page.html")

    จากโค้ดข้างบนนี้เราได้ import os, webbrowser ซึ่ง os เรา import มาเพื่อใช้ในการค้นหาไฟล์และโฟลเดอร์ใน Directory เพื่อน้ำไปสร้างเป็นไฟล์ HTML Directory Listing ส่วน webbrowser ใช้ในการเปิดไฟล์ HTML ที่เราสร้างทันทีหลังรันโปรแกรมสร้างไฟล์ HTML เสร็จ
โดยโปรแกรมนี้จะประกอบด้วย Function 3 อันคือ find_dir, make_html, remake_html
โดยที่ find_dir มี Argument 1 ตัวคือ path ซึ่งจะทำการค้นหาไฟล์และโฟลเดอร์ย่อยภายใน Directory ที่ป้อนให้แต่จะไม่นำไฟล์ที่เป็น hidden file มาแสดงด้วยซึ่ง Function นี้จะ return ค่าออกมาเป็น list 2 อันที่เก็บข้อมูลของไฟล์และโฟลเดอร์ใน Directory ที่เราให้ค้นหากลับออกมา

    ในส่วนของ make_html มี Arguments ทั้งหมด 4 ตัวคือ path, mpass_dir, allindir, allinfile ซึ่ง path ก็จะเป็นตัวที่เก็บข้อมูลของ Directory ที่กำลังจะสร้างไฟล์ HTML อยู่ในขณะนั้นและ mpass_dir คือตัวแปรเก็บ Directory ก่อนหน้าหรือชั้นบนของชั้นที่เราทำงานอยู่นั่นเอง ส่วน allindir และ allinfile จะเป็น list ที่เก็บข้อมูลของไฟล์และโฟลเดอร์ที่มีอยู่ใน Directory โดยฟังก์ชั่นนี้จะทำการสร้างลิ้งค์ซึ่งเป็นโค้ด HTML ของโฟลเดอร์และไฟล์ทั้งหมดตามลำดับเก็บไว้ในตัวแปร body ก่อนจากนั้นจึงสร้างไฟล์ HTML แล้วเขียนโค้ด HTML ลงไปในไฟล์ชื่อ page.html โดยส่วนของ body ก็นำตัวแปร body ที่สร้างไว้ก่อนหน้าไปใส่ในโค้ดด้วยเมื่อเขียนไฟล์เสร็จก็ทำการปิดไฟล์

    จากนั้นในส่วนของ remake_html เป็น Function แบบ recursive จะมี Arguments ทั้งหมด 2 ตัวคือ pass_dir, all_dir โดย pass_dir คือตัวแปรเก็บ Directory ของรอบก่อนหน้านี้ไว้ ส่วน all_dir จะเป็น list ที่เก็บข้อมูลของโฟลเดอร์ที่เราต้องสร้างไฟล์ HTML ทั้งหมดไว้โดยเริ่มจากการวน loop เพื่อเข้าถึงทุกๆโฟลเดอร์และทำการย้าย Directory ที่ทำงานไปที่โฟลเดอร์ที่กำลังเข้าถึงและทำการค้นหาไฟล์และโฟลเดอร์หากมีโฟลเดอร์ก็ให้เรียก remake_html อีกทีเข้าไปสร้าง HTML เพิ่มจนไม่มีโฟลเดอร์แล้วก็ย้อนกลับไปยัง Directory ข้างบนผ่านตัวแปร pass_dir นั่นเองและก็วนไปเรื่อยๆจนครบทุกโฟลเดอร์ย่อยจากตำแหน่งที่เรารันโปรแกรม

    เมื่อสร้างไฟล์ HTML ครบทั้งหมดแล้วก็ใช้คำสั่งของ webbrowser ในการเปิด HTML ของหน้าแรกสุดผ่าน browser ขึ้นมาทันที

    จะเห็นว่านอกจากเราจะสามารถเขียนไฟล์ HTML ผ่านโปรแกรม Python ได้แล้วนั้นเรายังสามารถใช้ความสามารถของโปรแกรม Python ในการค้นหาไฟล์และ Directory ที่อยู่ในโฟลเดอร์ต่างๆพร้อมทั้งยังสามารถนำชื่อไฟล์และโฟลเดอร์เหล่านั้นมาสร้างเป็น Directory Listing และลิ้งค์เข้าไปยังไฟล์หรือ Sub Directory เหล่านั้นได้ในรูปแบบไฟล์ HTML

โดยได้ศึกษาการเขียนโค้ด HTML จากเว็บ w3schools
Read more ...

Assignment 1 - Python Generate HTML Profile With Link


Python Generate HTML Profile With Link

#!/usr/bin/env python

#generate html file
def make_html( mbody, mtitle):
    for i in range(len(mtitle)):
        file = open("./pro2_"+str(i)+".html", 'w')
        file.write("""
        <html>
        <head>
            <title>"""+mtitle[i]+"""</title>
        </head>
        <body bgcolor="skyblue">
            """+mbody[i]+"""
        </body>
        </html>""")
        file.close()

body = ["""<br><font color="white" size = "5">
            <center>
            My Profile<br><br>
            <!-- Facebook Badge START --><a href="https://www.facebook.com/wittawin.kahuttanaseth" target="_TOP" style="font-family: &quot;lucida grande&quot;,tahoma,verdana,arial,sans-serif; font-size: 11px; font-variant: normal; font-style: normal; font-weight: normal; color: #3B5998; text-decoration: none;" title="Wittawin Kahuttanaseth">Wittawin Kahuttanaseth</a><span style="font-family: &quot;lucida grande&quot;,tahoma,verdana,arial,sans-serif; font-size: 11px; line-height: 16px; font-variant: normal; font-style: normal; font-weight: normal; color: #555555; text-decoration: none;">&nbsp;|&nbsp;</span><a href="https://www.facebook.com/badges/" target="_TOP" style="font-family: &quot;lucida grande&quot;,tahoma,verdana,arial,sans-serif; font-size: 11px; font-variant: normal; font-style: normal; font-weight: normal; color: #3B5998; text-decoration: none;" title="Make your own badge!">Create Your Badge</a><br/><a href="https://www.facebook.com/wittawin.kahuttanaseth" target="_TOP" title="Wittawin Kahuttanaseth"><img src="https://badge.facebook.com/badge/100000892956744.1601.596344931.png" style="border: 0px;" /></a><!-- Facebook Badge END -->
            </center></font><font color="white" size = "4">
            <br><br>Name : Wittawin   Kahuttanaseth<br><br>
            Student ID : 5501012620073<br><br>
            Birthday : 23 / 10 / 2536<br><br>
            Age : 20<br><br>
            E-mail : wittawin_k@hotmail.com<br><br>
            Hobbie : Build Gunpla<br><br>
            <div style="text-align: right"><a href="./pro2_1.html">Next</a></div>
            </font>""",
            """<br><font color="white" size = "5">
            <center>
            My Education<br><br>
            </center></font><font color="white" size = "4">
            Kindergarten : Wanawes Kindergarden<br><br>
            Primary : Patai Udom Suksa School<br><br>
            High school : KMUTNB<br><br>
            Bachelor : KMUTNB<br><br>
            <div style="float: left"><a href="./pro2_0.html">Previous</a></div>
            <div style="text-align: right"><a href="./pro2_2.html">Next</a></div>
            </font>""",
            """<br><font color="white" size = "5">
            <center>
            Picture From My Facebook<br><br>
            <!-- Facebook Badge START --><a href="https://www.facebook.com/wittawin.kahuttanaseth" target="_TOP" style="font-family: &quot;lucida grande&quot;,tahoma,verdana,arial,sans-serif; font-size: 11px; font-variant: normal; font-style: normal; font-weight: normal; color: #3B5998; text-decoration: none;" title="Wittawin Kahuttanaseth">Wittawin Kahuttanaseth</a><span style="font-family: &quot;lucida grande&quot;,tahoma,verdana,arial,sans-serif; font-size: 11px; line-height: 16px; font-variant: normal; font-style: normal; font-weight: normal; color: #555555; text-decoration: none;">&nbsp;|&nbsp;</span><a href="https://www.facebook.com/badges/" target="_TOP" style="font-family: &quot;lucida grande&quot;,tahoma,verdana,arial,sans-serif; font-size: 11px; font-variant: normal; font-style: normal; font-weight: normal; color: #3B5998; text-decoration: none;" title="Make your own badge!">Create Your Badge</a><br/><a href="https://www.facebook.com/wittawin.kahuttanaseth" target="_TOP" title="Wittawin Kahuttanaseth"><img src="https://badge.facebook.com/badge/100000892956744.2824.1743854106.png" style="border: 0px;" /></a><!-- Facebook Badge END -->
            </center><br></font>
            <font color="white" size = "4">
            <div style="float: left"><a href="./pro2_1.html">Previous</a></div>
            </font>"""]

title = ["My Profile","My Education","Picture From My Facebook"]
make_html(body, title)
print "Generate HTML Complete"

    จากโค้ดข้างบนนี้จะทำการ Generate HTML ออกมาให้เราเป็น HTML จำนวน 3 ไฟล์โดยไฟล์จะมีชื่อเป็น pro2_X.html โดย X แทนหน้าของไฟล์ HTML โดยเริ่มจาก 0 ซึ่งจากตัวอย่างทำไว้เพียง 3 หน้า โดยในโปรแกรมนี้ใช้การเก็บข้อมูลเป็น list 2 อันคือ
1.body
2.title
โดยใน body นั้นจะเป็น list ที่เราใช้เก็บข้อมูลในส่วนของ body ใน HTML ซึ่งเป็นโค้ด HTML ข้อความที่จะแสดงลิ้งค์ไปยังหน้าต่อ / ก่อนหน้า และลิ้งค์ข้อมูลมาจาก Facebook
ส่วนใน title นั้นจะเป็น list ที่เก็บข้อมูลชื่อของ title HTML ของแต่ละเพจโดยจะใช้ Index ของ list ที่ตรงกันกับ body เป็นตัวอ้างอิง

    นอกจากนี้ยังมี Function อีกหนึ่งอันชื่อ make_html โดยต้องส่วง Arguments ไป 2 ตัวซึ่งประกอบด้วย mbody, mtitile ตามลำดับ ซึ่ง mbody ก็หมายถึง list ที่บรรจุ body เอาไว้ mtitle ก็หมายถึง list ที่บรรจุ title ไว้เช่นกันโดยใน Function นี้จะใช้ loop for โดยจำนวนรอบที่วน loop จะเป็นไปตามความยาวของ mtitle และใน loop แต่ละรอบจะทำการเปิดไฟล์และเขียนโค้ด HTML ลงไปในไฟล์นั้นโดยมีโครงร่างแบบเดียวกันต่างกันที่ body และ title ของการวน loop ในแต่ละครั้ง เมื่อทำการ สร้างไฟล์เสร็จ ก็จะแสดงผลทางหน้าจอว่า "Generate HTML Complete"

    ซึ่งเราจะเห็นว่าเราสามารถเขียนโปรแกรมภาษา Python เพื่อสร้างไฟล์ HTML แบบ Static ขึ้นมาได้ผ่านคำสั่ง file ซึ่งเป็น API พื้นฐานของภาษา Python เองอยู่แล้วโดยรูปแบบคือการเขียนโค้ด HTML ไว้ในตัวแปรของ Python แล้วนำตัวแปรเหล่านั้นไปเขียนลงในไฟล์และเซฟออกมาเป็น Output สุดท้ายของเรา

โดยได้ศึกษาการเขียนโค้ด HTML จากเว็บ w3schools
Read more ...

Assignment 1 - Python Print Profile


Python Print Profile Code

#!/usr/bin/env python
print """Name : Wittawin Kahuttanaseth
Student ID : 5501012620073
Birthday : 23 / 10 / 2536
Age : 20
E-mail : wittawin_k@hotmail.com
Hobbie : Build Gunpla"""

จากโค้ดที่ได้เขียนไว้ข้างต้นนี้ จะทำการ print ข้อความเป็นรูปแบบดังนี้


    ซึ่งโค้ดนี้ใช้คำสั่งเพียงคำสั่งเดียวนั่นก็คือ print โดยใช้รูปแบบของคำสั่งจะเป็น print เว้นวรรคและตามด้วย String ที่ต้องการจะให้แสดงออกทางหน้าจอ แต่รูปแบบข้อความที่ใช้ในโค้ดนี้นั่นก็คือ Multiple-line String (“”” text ”””) ซึ่งจากโจทย์เราสามารถใช้คำสั่ง print String ทีละบรรทัดตามข้อความที่เราต้องการก็ได้แต่ในเมื่อโปรแกรมนี้เป็นการ print ข้อความออกเท่านั้น เพื่อลดจำนวนการใช้คำสั่งจึงใช้การ print แบบ Multiple-line Sting แทนโดยการขึ้นบรรทัดใหม่ของ Sting นั้นก็จะมีรูปแบบตามข้อความที่อยู่ใน Multiple-line String
Read more ...