Sunday, November 1, 2009

Python Programming


Print: A Useful Output Command

ประพัฒน์ สุริยผล

ทั้งนี้ ผม assume ว่าคุณได้ติดตั้ง python และสามารถเรียก python IDLE ขึ้นมาทำงานได้แล้ว เราจะเริ่มต้นเรียนรู้การเขียนโปรแกรมด้วยคำสั่ง print ที่เลือก print เป็นคำสั่งแรก เพราะเป็นคำสั่งที่มีความสำคัญ print เป็นคำสั่งที่เราใช้แสดงผลในสิ่งที่เราต้องการ โปรแกรมส่วนใหญ่จะไม่มีประโยชน์ถ้าเราไม่สามารถสั่งให้เครื่องแสดงผลได้ คำสั่ง printสามารถนำไปใช้ในการสร้าง file ก็ได้ โดยที่เรายังไม่ต้องเรียนรู้วิธีสร้าง file ใน python เลย (จะกล่าวถึงวิธีนี้ในหัวข้อ pipe ในภายหลัง) เราจะเริ่มต้นง่ายๆ ด้วยคำสั่ง

>>> print 1
1

ซึ่งเครื่องก็จะแสดงผลลัพธ์ เป็นเลข 1 ออกมา

>>> print 1+2
3

เราก็จะได้ เลข 3 เพราะฉะนั้น เราสามารถใช้ python เป็นเครื่องคิดเลขอย่างง่ายๆ แล้ว ถ้าหากเราเปิด python อยู่แล้วต้องการใช้เครื่องคิดเลข ก็ไม่ต้องมองหาไปที่อื่น สามารถพิมพ์คำสั่งใน python ได้เลย ถ้าหากเราต้องการพิมพ์ตัวอักษร เราก็สามารถทำได้ดังนี้

>>> print 'hello world'
hello world

เครื่องก็จะพิมพ์ hello world ออกมาให้ ให้สังเกตว่า สำหรับตัวอักษร เราจะต้องปิดหัวท้ายส่วนที่เป็นตัวอักษรด้วยสัญลักษณ์ (') ขีดเดียว หรือ (") ขีดคู่ เพื่อให้ python ทราบว่าให้จัดการกับสิ่งที่อยู่ด้านในนั้นแบบตัวอักษร และถ้าเราใส่เลขลงไป จะเกิดอะไรขึ้น

>>> print '1'
1

เราก็จะได้เลข 1 เหมือนเดิม เพราะตัวอักษร 1 กับเลข 1 เมื่อพิมพ์ออกมาก็ไม่มีอะไรต่างกัน แต่เมื่อเราพิมพ์

>>> print '1'+'2'
12

เราจะได้ 12 แทนที่จะเป็น 3 ตามตัวอย่างข้างต้น เพราะสำหรับ python แล้ว การที่เอาตัวอักษรมาบวกกัน ก็คือการเอาตัวอักษรมาต่อกันตามลำดับนั่นเอง

ถ้าหากเราต้องการพิมพ์ขีดเดียว เราสามารถคร่อมตัวอักษรด้วยขีดคู่ และในทางกลับกัน เราสามารถคร่อมขีดคู่ด้วยขีดเดียวได้เช่นกัน เช่น

>>> print 'I say "Hello" to you.'
I say "Hello" to you.

พิมพ์ตัวอักษรที่พิมพ์ด้วยวิธีปกติไม่ได้

1. ตัวขึ้นบรรทัดใหม่ (new line)

มีตัวอักษรหรือบางสิ่งบางอย่างที่เราไม่สามารถพิมพ์ได้ ยกตัวอย่างเช่น การขึ้นบรรทัดใหม่ เพราะถ้าหากเราต้องการพิมพ์ตัวขึ้นบรรทัดใหม่ด้วยการกดปุ่ม ก็จะกลายเป็นว่า เราสั่งให้ python ทำงานที่บรรทัดนั้นทันที เราจึงไม่สามารถกดปุ่มได้ python แก้ปัญหานี้ด้วยการใช้ตัวอักษรพิเศษ เช่น \n แทนการขึ้นบรรทัดใหม่ เช่นถ้าหากเราต้องการพิมพ์ 1 ขึ้นบรรทัดใหม่ แล้วพิมพ์ 2 แล้วขึ้นบรรทัดใหม่ เราสามารถใช้คำสั่ง

print 1
print 2

ที่เราสามารถใช้คำสั่งแบบนี้ได้ เพราะเมื่อจบคำสั่ง print แล้ว python จะส่งรหัสขึ้นบรรทัดใหม่ให้เราโดยอัตโนมัติ ถ้าหากเราต้องการพิมพ์อย่างข้างบนโดยใช้บรรทัดเดียว เราสามารถทำได้ โดยใช้คำสั่ง

print '1\n2'

เราไม่ต้องปิดท้ายเลข 2 ด้วย \n เพราะว่า เมื่อจบคำสั่ง print เราจะได้บรรทัดใหม่โดยอัตโนมัติ ถ้าเราใส่ \n ลงไป เราจะได้ขึ้นบรรทัดใหม่มา 2 บรรทัด วิธีจำง่ายๆ คือ n มาจากคำว่า newline

2. ตัวแท็ป (tab)

ตัวอักษรอีกตัวหนึ่งที่เรามักจะต้องใช้พิมพ์บ่อยๆ คือตัวแท็ป (tab) ใน python เราสามารถแทนด้วยสัญลักษณ์ \t วิธีจำง่ายๆ คือ t มาจากคำว่า tab

3. สัญลักษณ์ backslash

เมื่อเราใช้ \ (backslash) ในการพิมพ์ตัวอักษรพิเศษ เราจึงไม่สามารถพิมพ์ \ ได้ด้วยการใช้คำสั่ง

print '\' # อันนี้ ไม่ถูกต้อง

note: เราต้องใส่สัญลักษณ์ ' คร่อมไว้ เพราะตัว \ เป็นตัวอักษร วิธีพิมพ์ \ ที่ถูกต้องคือใช้สัญลักษณ์ '\\'

สัญลักษณ์ # หมายถึง comment สิ่งที่อยู่ต่อจากสัญลักษณ์นี้ไปจนกระทั่งสุดบรรทัด จะไม่มีผลต่อการทำงานของ python จะพิมพ์หรือไม่พิมพ์ก็ได้ ที่ใส่ไว้เพื่อเตือนใจว่า บรรทัดนี้ทำงานไม่ถูกต้อง

print '\\' # ถูกต้อง

เราจะได้สัญลักษณ์ \ หนึ่งตัว

พิมพ์มากกว่าหนึ่งชนิด

เราสามารถพิมพ์ผสมกันมากกว่าหนึ่งชนิดได้ ด้วยการคั่นแต่ละชนิดด้วย comma (,) เช่น

print '1+2=', 1+2

เราจะได้ผลลัพธ์ออกมาเป็น

1+2= 3

ให้สังเกตว่าหลังเครืองหมาย = จะมีเว้นวรรคมาหนึ่งตัวโดยอัตโนมัติ

เรื่องของ print ยังมีอีกไว้ต่อคราวหน้า

แบบฝึกหัด

เขียนคำสั่ง print ให้พิมพ์ดังนี้ โดยใช้คำสั่งบรรทัดเดียว (มีคำสั่ง print คำสั่งเดียว)

1. Hello, How are you?

2. Don't say No!

3. Header1 Header2 Header3
<-tab-> <-tab->

4. บรรทัดแรกให้พิมพ์ 234*22.43 = (ใส่คำตอบที่คำนวณได้ตรงนี้)
บรรทัดที่สองพิมพ์ this is backslash -> \

คิดว่าคงจะไม่ยากสำหรับคุณนะครับ

2 comments:

  1. แวะมาเฉลยการบ้านครับ ^^

    (ข้อ 1)
    print 'Hello, How are you?'

    (ข้อ 2)
    print "Don't say No!"

    (ข้อ 3)
    print 'Header1\tHeader2\tHeader3'

    (ข้อ 4)
    print '234*22.43 = ', 234*22.43
    print 'this is backslash -> \\'

    ReplyDelete
  2. ทำไมผมพิมพ์
    print 1 แล้วโปรแกรมไม่แสดงผลลัพธ์อัตโนมัติอ่าครับ

    ReplyDelete