
การนำข้อมูลออกมาแสดงโดยใช้ฟังก์ชัน print()
ฟังก์ชัน print() ใช้สำหรับนำข้อมูลที่ส่งออกมาแสดงทางจอภาพ หรืออาจจะนำข้อมูลดังกล่าวออกมาแสดงผลในรูปแบบไฟล์ได้อีกด้วย
ตัวอย่างการแสดงข้อมูล
print("Welcome to class!")
# โปรแกรมจะทำการปรินต์ค่า Welcome to class!
name = "David" # กำหนดตัวแปรชื่อ name ไว้สำหรับระบุชื่อของผู้ใช้งาน
print("Welcome to class:", name)
# โปรแกรมจะทำการปรินต์ค่า Welcome to class: David
# โดยจะสังเกตุว่าระหว่างข้อความและตัวแปร โปรแกรมจะทำการใส่ช่องว่างแทรกเข้ามาให้โดยอัตโนมัติ
กำหนดรายละเอียดให้กับฟังก์ชัน print()
ฟังก์ชัน print() นั้นสามารถระบุรายละเอียดเพิ่มเติม เพื่อเป็นการปรับแต่งข้อความที่เราต้องการแสดงผลได้ รูปแบบการใช้งานดังนี้
print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
โดยรายละเอียดของแต่ละตัวแปรที่กำหนดให้ฟังก์ชันเป็นดังนี้
| ตัวแปร | รายละเอียด |
| objects | คือค่าที่จะนำมาแสดงผล อาจเป็นข้อมูลเดียว หรือชุดของข้อมูลก็ได้ |
| sep | คือ สัญลักษณ์ที่นำมาแสดงเพื่อเป็นตัวแยกระหว่างค่าแต่ละค่า โดยค่าตั้งต้นที่กำหนดให้โดยอัตโนมัติ คือ ค่าว่าง(space) |
| end | คือ ค่าที่จะนำมาแสดงหลังจากทุกค่าได้ถูกนำมาแสดงผลเรียบร้อยแล้ว โดยค่าตั้งต้นคือ ตัวขึ้นบรรทัดใหม่(newline) |
| file | คือ อุปกรณ์ที่ต้องการให้ค่าข้างต้นจะนำออกมาแสดงผล โดยค่าตั้งต้นคือ sys.stdout ซึ่งก็คือการแสดงผลทางหน้าจอ |
print(1,2,3,4) # โปรแกรมจะแสดงผล: 1 2 3 4 เนื่องจากเราทำการระบุเพียงแค่ข้อมูลที่ต้องการแสดง print(1,2,3,4, sep='*') # โปรแกรมจะแสดงผล 1*2*3*4 เนื่องจากเรามีการระบุไว้ว่าระหว่างแต่ละค่าข้อมูลให้แทรกเครื่องหมาย * print(1,2,3,4, sep='#', end='&') # โปรแกรมจะแสดงผล: 1#2#3#4& เนื่องจากเรามีการระบุไว้ว่าระหว่างแต่ละค่าข้อมูลให้แทรกเครื่องหมาย # และเมื่อมีการแสดงข้อมูลครบแล้วให้ปิดด้วยเครื่องหมาย &
สร้างรูปแบบข้อความสำหรับการแสดงข้อมูล( Output formatting )
ในบางกรณีเราต้องการที่จะกำหนดรูปแบบของข้อความเพื่อใช้ในการแสดงผลข้อมูล(output) เราสามารถที่จะปรับแต่งข้อความได้ด้วยใช้ฟังก์ชัน str.format() ซึ่งฟังก์ชันนี้จะสามารถเข้าถึงได้จากข้อมูลชนิด string ได้ทุกตัว
ตัวอย่างการใช้งาน
info_template = 'Student age:{} and height:{}' # ทำการกำหนดรูปแบบข้อความ
personal_info = info_template.format(30, 160)
print( personal_info )
# โปรแกรมจะทำการปรินต์ค่า Student age:30 and height:160
personal_info = info_template.format(20, 165)
print( personal_info )
# โปรแกรมจะทำการปรินต์ค่า Student age:20 and height:165
จากตัวอย่างข้างต้น สำหรับการกำหนดรูปแบบของข้อความนั้น เราจะใช้เครื่องหมาย {} เพื่อระบุตำแหน่งที่จะนำข้อมูลมาแทนที่ แล้วจึงระบุข้อมูลที่ใช้แสดงผลตามลงไป โดยข้อมูลที่ระบุไปนั้นจะถูกนำมาแทนที่ในรูปแบบข้อความที่กำหนดตรงบริเวณเครื่องหมาย {} ตามลำดับข้อมูลที่ระบุลงไป แต่หากเราต้องการจัดเรียงข้อมูลเองโดยไม่อาศัยลำดับข้อมูลตามที่ป้อนข้อมูล เราจำเป็นต้องใส่ลำดับข้อมูลกำกับไว้ เช่น {0}, {1} การกำหนดรูปแบบข้อความเช่นนี้ เราสามารถจะนำรูปแบบข้อความเดียวกันไปใช้งานได้หลายครั้ง โดยทำการเปลี่ยนแค่ค่าของข้อมูลเท่านั้น
info_template = 'Student height:{1} and age:{0}' # ทำการกำหนดรูปแบบข้อความ
personal_info = info_template.format(30, 160)
print( personal_info )
# โปรแกรมจะทำการปรินทต์ค่า Student height:160 and age: 30
personal_info = info_template.format(20, 165)
print( personal_info )
# โปรแกรมจะทำการปรินทต์ค่า Student height:165 and age: 20
เราสามารถที่จะกำหนดชื่อตัวแปรให้กับข้อมูลที่ระบุ เพื่อที่จะใช้ชื่อตัวแปรดังกล่าวอ้างอิงในการแทนที่ด้วยข้อมูลลงตรงตำแหน่งที่ถูกต้องในรูปแบบข้อความที่กำหนดไว้ และทำให้ผู้พัฒนาโปรแกรมเองเข้าใจโปรแกรมง่ายมากขึ้นเมื่อกลับมาอ่านอีกครั้งหนึ่ง
info_template = 'Student age:{age} and height:{height}' # ทำการกำหนดรูปแบบข้อความ
personal_info = info_template.format(age=30, height=60)
print( personal_info )
# โปรแกรมจะทำการปรินทต์ค่า Student age: 30 and height:160
personal_info = info_template.format(age=20, height=165)
print( personal_info )
# โปรแกรมจะทำการปรินทต์ค่า Student age: 20 and height:165
การรับข้อมูลเข้าไปให้โปรแกรม(Input)
เพื่อให้โปรแกรมของเรามีการตอบสนองต่อผู้ใช้งานได้แม่นยำมากขึ้น เราอาจจำเป็นต้องรับข้อมูลเข้าไปในโปรแกรมจากผู้ใช้งานเพื่อประมวลผล โดยฟังก์ชัน input() จะถูกใช้เพื่อรับข้อมูล โดยรูปแบบการใช้งานคือ
input( [prompt] )
ตำแหน่ง “prompt” คือข้อความที่เราจำเป็นต้องระบุเพื่ออธิบายผู้ใช้ว่า ข้อมูลชนิดใดคือข้อมูลที่เราต้องการรับเข้ามาเป็น input
ตัวอย่างการใช้งาน
input_age = input('Enter your age:')
# เมื่อรันคำสั่งดังกล่าวโปรแกรมจะปรินท์ข้อความ Enter your age: ออกมาเพื่อระบุว่าโปรแกรมดังกล่าวต้องการรอรับข้อมูลจากผู้ใช้งาน ผู้ใช้งานสามารถระบุค่าที่ถูกต้องให้กับโปรแกรม หลังจากระบุค่าดังกล่าวแล้วโปรแกรมจะนำข้อมูลนั้นไประบุให้กับตัวแปรที่กำหนดไว้ ในตัวอย่างนี้คือตัวแปร "input_age"
# เนื่องจากค่าที่รับเข้าไปนั้นจะมีข้อมูลเป็นชนิด string เราจึงจำเป็นต้องแปลงข้อมูลให้เป็นชนิดข้อมูลที่เหมาะสมสำหรับการนำไปใช้งานก่อน
# Enter your age: 10 # ให้เราทำการป้อนข้อมูล 10 เข้าไป
age = int(input_age) # แปลงชนิดของข้อมูลจาก string เป็น integer
print( age )
# โปรแกรมจะปรินท์ค่า 10 ออกมา
เราสามารถระบุรูปแบบข้อมูลให้ฟังก์ชัน input เป็นประโยคทางคณิตศาสตร์(expression) เช่น 5*10+2 โดยข้อมูลที่เป็นประโยคทางคณิตศาสตร์สามารถที่จะใชัฟังก์ชัน eval() เพื่อจะทำการประมวลผลข้อมูลดังกล่าวก่อนนำข้อมูลไปใช้ได้เช่นกัน
ตัวอย่างการใช้งาน
input_order_amount = input("Enter amount of products:")
# เมื่อรันคำสั่งดังกล่าวโปรแกรมจะปรินท์ข้อความ Enter amount of products: ออกมาเพื่อระบุว่าโปรแกรมดังกล่าวต้องการรอรับข้อมูลจากผู้ใช้งาน ผู้ใช้งานสามารถระบุค่าที่ถูกต้องให้กับโปรแกรม หลังจากระบุค่าดังกล่าวแล้วโปรแกรมจะนำข้อมูลนั้นไประบุให้กับตัวแปรที่กำหนดไว้
# Enter amount of products: 12*10+5*2 ทำการป้อนข้อมูลที่เป็นประโยคทางคณิตศาสตร์เข้าไป
# เราได้ทำการใส่ข้อมูลซึ่งเป็นประโยคทางคณิตศาสตร์ 12*10+5*2 เพื่อระบุจำนวนสั่งซื้อสินค้าเข้าไป โดยประโยคคณิตศาสตร์ในตัวอย่างระบุยอดรวมของการสั่งซื้อสินค้าทั้งหมด ซึ่งคำนวณจาก ผลรวมของยอดสั่งซื้อสินค้าแต่ละชนิด(ราคา * จำนวนชิ้น)
order_amount = eval(input_order_amount)
# ใช้ฟังก์ชัน eval() เพื่อแปลงประโยคทางคณิตศาสตร์เป็นค่าข้อมูลเพื่อจะนำไปใช้ในโปรแกรมต่อไป
print( order_amount )
# โปรแกรมจะทำการปรินต์ค่า 130
การนำโมดูลที่มีอยู่แล้วไปใช้งานซ้ำ(Import)
เมื่อพัฒนาโปรแกรมไปเรื่อยๆ ให้โปรแกรมที่เราต้องการใช้งานมีความสามารถมากขึ้น ฟังก์ชันของการทำงานในส่วนต่างๆของโปรแกรมก็อาจจะเพิ่มมากขึ้น มีผลให้จำนวนบรรทัดของคำสั่งสำหรับโปรแกรมนั้นอาจมากขึ้นตามไปด้วย ดังนั้นการแบ่งการทำงานของโปรแกรมออกเป็นส่วนย่อยๆ(module) ตามคุณลักษณะของการใช้งานนั้น จะช่วยให้เราดูแลโปรแกรมของเราได้ง่ายขึ้นและหาจุดที่เกิดปัญหาในโปรแกรมได้สะดวกรวดเร็วขึ้นด้วย
การแบ่งกลุ่มฟังก์ชันการทำงานของโปรแกรมออกเป็นส่วนๆ(module)นั้น ก็คือการแบ่งการทำงานของโปรแกรมแยกไว้เป็นไฟล์ย่อยๆ ตามลักษณะของการใช้งาน เพื่อความเหมาะสมง่ายต่อการจัดการและการเรียกใช้ โดยในแต่ละโมลจะมี
- การกำหนดฟังก์ชัน ซึ่งเป็นการจัดกลุ่มของชุดคำสั่งที่ทำงานร่วมกัน( definition )
- ประโยคคำสั่ง(statement)
- ชื่อโมดูลซึ่งก็คือชื่อไฟล์และจะถูกอ้างอิงชื่อดังกล่าวเวลาเรียกใช้โมดูล(โดยที่ไฟล์ดังกล่าวจะมีนามสกุล.py)
ชุดคำสั่งที่ถูกเขียนไว้ในโมดูลหนึ่งสามารถที่จะนำไปใช้ในอีกโมดูลหนึ่ง หรือ อาจเรียกใช้ใน python console ได้โดยไม่ต้องเขียนคำสั่งชุดเดิมนั้นซ็ำ เพียงแค่ import ชื่อโมดูลที่ต้องการและเรียกใช้ฟังก์ชันที่มีในโมดูลนั้นๆ ได้เลย
ตัวอย่างการนำโมดูลไปใช้
import numpy as np # ทำการ import โมดูลชื่อ numpy โดยให้ชื่อย่อสั้นๆว่า np max_val = np.amax([1, 2, 3]) # ทำการเรียกใช้ฟังก์ชัน amax จากโมดูล numpy print( max_val ) # โปรแกรมจะทำการรปรินต์ค่า 3
จากข้างต้นเป็นการนำโมดูลชื่อ numpy มาใช้โดยคำสั่ง import การทำแบบนี้จะทำให้สามารถเข้าถึงฟังก์ชันในทุกรายละเอียดการทำงานภายในโมดูลได้โดยไม่ต้องเขียนชุดคำสั่งเดิมซ้ำ โดยในตัวอย่างทำการเรียกใช้ฟังก์ชัน np.amax() ซึ่งเป็นฟังก์ชันหนึ่งของ numpy เพื่อหาค่าที่มากที่สุดจากชุดข้อมูลในลิสต์ที่ได้ระบุไว้
เราสามารถจะทำการเจาะจงในเรียกใช้เพียงค่าบางค่าหรือเพียงเฉพาะฟังก์ชันบางตัวจากโมดูลได้ โดยไม่ได้นำเข้า(import)รายละเอียดทั้งหมดจากโมดูล โดยใช้คีย์เวิร์ด from
from numpy import amax # เลือก import เฉพาะฟังก์ชัน amax จากโมดูล numpy max_val = amax([1, 2, 3]) # เราสามารถเรียกใช้ฟังก์ชัน amax จากโมดูล numpy ได้โดยไม่ต้องอ้างอิงด้วยชื่อโมดูล print( max_val ) # โปรแกรมจะทำการพิมพ์ค่า 3 ซึ่งเป็นค่ามากที่สุดจากชุดข้อมูลในลิสต์ออกมา การเรียกใช้แบบนี้เราสามารถระบุชื่อฟังก์ชันที่ต้องการใช้ได้เลยโดยไม่ต้องอ้างอิงถึงชื่อของโมดูล แต่เราจะไม่สามารถเรียกใช้รายละเอียดข้อมูลหรือฟังก์ชันอื่นๆ ที่มีในโมดูล numpy ได้
เนื่องจากเมื่อโปรแกรมมีความซ้อนมากขึ้น บางครั้งแต่ละโมดูล(module) อาจจะถูกเก็บไว้ในตำแหน่งที่แตกต่างกันโดยจัดกลุ่มตามความเหมาะสม ดังนั้นเมื่อมีการเรียกใช้โมดูลใน python โปรแกรมเองจะทำการค้นหาโมดูลจากหลายๆ ตำแหน่งซึ่งระบุไว้ในตัวแปร sys.path โดยตัวแปรดังกล่าวระบุลิสต์ของ directory ต่างๆ ที่เก็บข้อมูลของโมดูลไว้