รับค่าและแสดงผลใน Python: print(), input() และการจัดรูปแบบ
บทเรียนนี้แปลจากต้นฉบับภาษาอังกฤษRead in EnglishLeer en españolЧитать на русскомLer em portuguêsแจ้งข้อผิดพลาดในการแปล
ทุกโปรแกรมต้องมีวิธีสื่อสารกับโลกภายนอก แอปพยากรณ์อากาศแสดงอุณหภูมิ เกมแสดงคะแนนของคุณ เครื่องคิดเลขแสดงคำตอบ ทั้งหมดนี้ใช้การแสดงผล (output)
ใน Python print() คือเครื่องมือหลักสำหรับแสดงข้อมูลให้ผู้ใช้เห็น ตอนแรกอาจดูเรียบง่าย แต่มีตัวเลือกที่ทรงพลังซึ่งช่วยให้คุณควบคุมหน้าตาของผลลัพธ์ได้อย่างแม่นยำ
ในบทเรียนนี้ คุณจะได้เรียนเทคนิคขั้นสูงของ print() เคล็ดลับการจัดรูปแบบให้ผลลัพธ์ดูเป็นระเบียบ และวิธีที่ input() อ่านสิ่งที่ผู้ใช้พิมพ์ เมื่อจบบทเรียน คุณจะสร้างผลลัพธ์ที่ดูประณีตและเป็นมืออาชีพได้
print() แสดงหลายค่าพร้อมกันได้อย่างไร
คุณรู้แล้วว่า print("Hello") ใช้แสดงข้อความ แต่ print() รับหลายค่าพร้อมกันได้ด้วย เพียงคั่นแต่ละค่าด้วยเครื่องหมายจุลภาค แล้ว Python จะแสดงทุกค่าโดยเว้นช่องว่างระหว่างกัน
ลองนึกถึง print() ว่าเป็นเหมือนพนักงานเสิร์ฟที่ทวนรายการอาหารของคุณ คุณสั่งหลายรายการ แล้วเขาจะขานทีละรายการโดยเว้นจังหวะระหว่างกัน
Alice 25 Paris Name: Alice Age: 25 years
สังเกตสิ่งที่มีประโยชน์นี้: Python เว้นช่องว่างระหว่างแต่ละค่าให้โดยอัตโนมัติ และคุณไม่ต้องแปลงตัวเลขเป็นสตริงเอง ฟังก์ชัน print() จัดการให้
พารามิเตอร์ sep ใน print() ทำอะไร
โดยค่าเริ่มต้น print() จะเว้นช่องว่างระหว่างแต่ละค่า พารามิเตอร์ sep ให้คุณเปลี่ยนตัวคั่นนั้นเป็นอะไรก็ได้ตามต้องการ ชื่อนี้ย่อมาจาก "separator" (ตัวคั่น)
ลองนึกภาพว่าคุณกำลังร้อยลูกปัดเป็นสร้อยคอ sep คือปมที่คุณผูกไว้ระหว่างลูกปัดแต่ละเม็ด คุณเลือกได้ว่าจะให้อะไรอยู่ระหว่างแต่ละค่า
A B C A-B-C A | B | C ABC A B C
พารามิเตอร์ sep เหมาะมากสำหรับสร้างผลลัพธ์ที่มีรูปแบบ เช่น วันที่ เส้นทางไฟล์ หรือข้อมูล CSV โดยไม่ต้องต่อสตริงเอง
2025-3-15 home/user/docs Alice,25,Paris
พารามิเตอร์ end ใน print() ทำอะไร
ทุกครั้งที่ print() ทำงานเสร็จ จะเพิ่มอักขระขึ้นบรรทัดใหม่ไว้ท้ายสุด นั่นคือเหตุผลที่การเรียก print() แต่ละครั้งเริ่มในบรรทัดใหม่ พารามิเตอร์ end ให้คุณเปลี่ยนสิ่งที่ตามหลังผลลัพธ์ได้
ให้คิดว่า end เป็นเหมือนเครื่องหมายวรรคตอนท้ายประโยค โดยค่าเริ่มต้น Python จะกด "Enter" หลังการแสดงผลแต่ละครั้ง คุณเปลี่ยนเป็นช่องว่าง จุลภาค หรือไม่ใส่อะไรเลยก็ได้
Hello World Hello World Loading...Done!
apple banana cherry date
ใช้ sep และ end ร่วมกันอย่างไร
คุณใช้ sep และ end ในการเรียก print() ครั้งเดียวกันได้ ทำให้ควบคุมได้ทั้งสิ่งที่อยู่ระหว่างค่าและสิ่งที่อยู่ท้ายสุด
A -> B -> C [DONE] Step 1 > Step 2 > Step 3 All steps complete!
สร้างผลลัพธ์ที่จัดแนวและจัดรูปแบบอย่างไร
โปรแกรมจริงต้องมีผลลัพธ์ที่อ่านง่าย ทั้งตาราง ใบเสร็จ และรายงาน ล้วนต้องมีคอลัมน์ที่เรียงตรงกันอย่างเป็นระเบียบ Python มีหลายวิธีให้ทำแบบนี้ได้
วิธีที่ง่ายที่สุดคือใช้เมธอดของสตริง .ljust(), .rjust() และ .center() เมธอดเหล่านี้เติมช่องว่างให้สตริงจนได้ความกว้างตามที่กำหนด
Item Price ------------------------ Coffee $4.50 Sandwich $8.99 Cookie $2.75
ถ้าต้องการควบคุมได้มากกว่านี้ ให้ใช้ f-string พร้อมตัวกำหนดรูปแบบ (format specifier) ภายในวงเล็บปีกกา คุณกำหนดความกว้างและการจัดแนวของแต่ละค่าได้
Name Score ------------------------ Alice 95 Bob 87 Charlie 92
1 2 3 -------------- 1 | 1 2 3 2 | 2 4 6 3 | 3 6 9
ฟังก์ชัน input() ใน Python ทำงานอย่างไร
การแสดงผลเป็นแค่ครึ่งเดียวของเรื่อง โปรแกรมส่วนใหญ่ยังต้องรับข้อมูลจากผู้ใช้ด้วย ใน Python ฟังก์ชัน input() จะหยุดโปรแกรมไว้ชั่วคราวและรอให้ผู้ใช้พิมพ์อะไรบางอย่าง
ลองนึกถึง input() ว่าเป็นเหมือนช่องกรอกข้อมูลบนเว็บไซต์ โปรแกรมแสดงข้อความถาม ผู้ใช้พิมพ์คำตอบ แล้วโปรแกรมเก็บคำตอบนั้นไว้ในตัวแปร
กด รัน: โปรแกรมจะหยุดที่ input() และรอ พิมพ์ชื่อของคุณ กด Enter แล้วโปรแกรมจะทำงานต่อโดยมีคำตอบของคุณอยู่ใน name
ฟังก์ชัน input() คืนค่าเป็น สตริง เสมอ แม้ผู้ใช้จะพิมพ์ตัวเลขก็ตาม นี่เป็นรายละเอียดสำคัญที่ทำให้ผู้เริ่มต้นหลายคนพลาด ลองรันโค้ดนี้แล้วพิมพ์ตัวเลข:
แปลงข้อมูลที่ผู้ใช้ป้อนเป็นตัวเลขได้อย่างไร
เนื่องจาก input() คืนค่าเป็นสตริงเสมอ คุณต้องแปลงค่าเมื่อต้องการตัวเลข ให้ครอบ input() ด้วย int() สำหรับจำนวนเต็ม หรือ float() สำหรับทศนิยม
รูปแบบการแสดงผลที่พบบ่อยในโปรแกรม Python มีอะไรบ้าง
โปรแกรมระดับมืออาชีพใช้รูปแบบการแสดงผลที่คุ้นตา เมนู ส่วนหัว ใบเสร็จ และตัวบอกความคืบหน้า ล้วนมีรูปแบบที่คาดเดาได้ การเรียนรู้รูปแบบเหล่านี้ทำให้โปรแกรมของคุณดูประณีต
==============================
RESTAURANT MENU
==============================
1. Burger $8.99
2. Pizza $12.50
3. Salad $7.25
=======================================Sales Report========= Product Units Revenue ------------------------------ Widgets 150 1500.00 Gadgets 89 2670.00 Gizmos 234 4680.00 ------------------------------ Total 8850.00
แบบฝึกหัด
ได้เวลาฝึกแล้ว! แบบฝึกหัดเหล่านี้เน้นการจัดรูปแบบด้วย print() ลองทำแต่ละข้อด้วยตัวเองก่อนเปิดดูคำใบ้
แสดงคำว่า "red", "green" และ "blue" โดยคั่นด้วย - (ช่องว่าง ขีด ช่องว่าง) ด้วยพารามิเตอร์ sep ของ print()
ผลลัพธ์ที่ควรได้:
red - green - blueใช้การเรียก print() เพียงครั้งเดียวพร้อมพารามิเตอร์ sep
ใช้ลูป for แสดงตัวเลข 1 ถึง 5 ใน บรรทัดเดียวกัน โดยคั่นด้วยช่องว่าง แล้วเพิ่ม print() ว่าง ๆ ไว้ท้ายสุดเพื่อจบบรรทัด
ผลลัพธ์ที่ควรได้:
1 2 3 4 5ใช้พารามิเตอร์ end ภายในลูป ระวังอย่าให้มีช่องว่างต่อท้ายหลัง 5
สร้างตารางสูตรคูณของตัวเลข 1 ถึง 3 ผลคูณแต่ละตัวต้องจัดชิดขวาและกว้าง 4 ตัวอักษร แสดงแถวหัวตารางและเส้นคั่นด้วย
ผลลัพธ์ที่ควรได้:
1 2 3
-----------
1 | 1 2 3
2 | 2 4 6
3 | 3 6 9ใช้การจัดแนวของ f-string ({value:>4}) เพื่อจัดตัวเลขชิดขวาในคอลัมน์กว้าง 4 ตัวอักษร
สร้างใบเสร็จที่จัดรูปแบบแล้วจากสินค้าและราคาต่อไปนี้ ใช้การจัดแนวของ f-string จัดชื่อสินค้าชิดซ้าย (กว้าง 20 ตัวอักษร) และจัดราคาชิดขวา (กว้าง 8 ตัวอักษร ทศนิยม 2 ตำแหน่ง) โดยมีส่วนหัว เส้นคั่น และยอดรวมด้วย
สินค้า:
ผลลัพธ์ที่ควรได้:
============================
TECH STORE
============================
Item Price
----------------------------
Laptop 999.99
Mouse 29.50
Keyboard 74.99
----------------------------
Total 1104.48
============================สรุป: การรับค่าและแสดงผลใน Python
สรุปทุกสิ่งที่คุณได้เรียนแบบย่อ:
| แนวคิด | ไวยากรณ์ | ตัวอย่าง |
|---|---|---|
| แสดงหลายค่า | print(a, b, c) | print("Hi", name) |
| กำหนดตัวคั่นเอง | sep="..." | print(1, 2, 3, sep="-") ได้ 1-2-3 |
| กำหนดสิ่งที่ปิดท้ายเอง | end="..." | print("Hi", end=" ") อยู่ในบรรทัดเดิม |
| จัดชิดซ้าย | f"{val:<width}" | f"{name:<20}" |
| จัดชิดขวา | f"{val:>width}" | f"{price:>8.2f}" |
| จัดกึ่งกลาง | f"{val:^width}" | f"{title:^30}" |
| รับข้อมูลจากผู้ใช้ | input("prompt") | name = input("Name: ") |
| แปลงข้อมูลที่รับมา | int(input()) | age = int(input("Age: ")) |
ประเด็นสำคัญ: print() ทำได้มากกว่าแค่แสดงข้อความ ด้วย sep, end และการจัดรูปแบบด้วย f-string คุณสร้างผลลัพธ์ที่สะอาดตาและเป็นมืออาชีพได้ ส่วน input() จะให้ค่าเป็นสตริงเสมอ ซึ่งคุณต้องแปลงเอง
บทต่อไปคืออะไร
ตอนนี้คุณสร้างผลลัพธ์ที่ประณีตได้แล้ว ก็พร้อมที่จะควบคุมลำดับการทำงานของโปรแกรม ในบทเรียนถัดไป คุณจะได้เรียนเรื่อง คำสั่ง if และ ลูป ซึ่งเป็นเครื่องมือที่ทำให้โปรแกรมตัดสินใจและทำงานซ้ำได้