ข้ามไปยังเนื้อหาหลัก
Editor

รับค่าและแสดงผลใน Python: print(), input() และการจัดรูปแบบ

เริ่มต้น15 นาที4 แบบฝึกหัด90 XP

บทเรียนนี้แปลจากต้นฉบับภาษาอังกฤษRead in EnglishLeer en españolЧитать на русскомLer em portuguêsแจ้งข้อผิดพลาดในการแปล

0/4 แบบฝึกหัด

ทุกโปรแกรมต้องมีวิธีสื่อสารกับโลกภายนอก แอปพยากรณ์อากาศแสดงอุณหภูมิ เกมแสดงคะแนนของคุณ เครื่องคิดเลขแสดงคำตอบ ทั้งหมดนี้ใช้การแสดงผล (output)

ใน Python print() คือเครื่องมือหลักสำหรับแสดงข้อมูลให้ผู้ใช้เห็น ตอนแรกอาจดูเรียบง่าย แต่มีตัวเลือกที่ทรงพลังซึ่งช่วยให้คุณควบคุมหน้าตาของผลลัพธ์ได้อย่างแม่นยำ

ในบทเรียนนี้ คุณจะได้เรียนเทคนิคขั้นสูงของ print() เคล็ดลับการจัดรูปแบบให้ผลลัพธ์ดูเป็นระเบียบ และวิธีที่ input() อ่านสิ่งที่ผู้ใช้พิมพ์ เมื่อจบบทเรียน คุณจะสร้างผลลัพธ์ที่ดูประณีตและเป็นมืออาชีพได้

คุณรู้แล้วว่า print("Hello") ใช้แสดงข้อความ แต่ print() รับหลายค่าพร้อมกันได้ด้วย เพียงคั่นแต่ละค่าด้วยเครื่องหมายจุลภาค แล้ว Python จะแสดงทุกค่าโดยเว้นช่องว่างระหว่างกัน

ลองนึกถึง print() ว่าเป็นเหมือนพนักงานเสิร์ฟที่ทวนรายการอาหารของคุณ คุณสั่งหลายรายการ แล้วเขาจะขานทีละรายการโดยเว้นจังหวะระหว่างกัน

แสดงหลายค่าโดยคั่นด้วยจุลภาค
# Printing multiple values
name = "Alice"
age = 25
city = "Paris"
print(name, age, city) # Alice 25 Paris
print("Name:", name) # Name: Alice
print("Age:", age, "years") # Age: 25 years
ผลลัพธ์
Alice 25 Paris
Name: Alice
Age: 25 years

สังเกตสิ่งที่มีประโยชน์นี้: Python เว้นช่องว่างระหว่างแต่ละค่าให้โดยอัตโนมัติ และคุณไม่ต้องแปลงตัวเลขเป็นสตริงเอง ฟังก์ชัน print() จัดการให้


โดยค่าเริ่มต้น print() จะเว้นช่องว่างระหว่างแต่ละค่า พารามิเตอร์ sep ให้คุณเปลี่ยนตัวคั่นนั้นเป็นอะไรก็ได้ตามต้องการ ชื่อนี้ย่อมาจาก "separator" (ตัวคั่น)

ลองนึกภาพว่าคุณกำลังร้อยลูกปัดเป็นสร้อยคอ sep คือปมที่คุณผูกไว้ระหว่างลูกปัดแต่ละเม็ด คุณเลือกได้ว่าจะให้อะไรอยู่ระหว่างแต่ละค่า

ใช้ sep กำหนดสิ่งที่อยู่ระหว่างค่า
# Default separator is a space
print("A", "B", "C") # A B C
# Custom separators
print("A", "B", "C", sep="-") # A-B-C
print("A", "B", "C", sep=" | ") # A | B | C
print("A", "B", "C", sep="") # ABC (no separator)
print("A", "B", "C", sep="\n") # Each on a new line
ผลลัพธ์
A B C
A-B-C
A | B | C
ABC
A
B
C

พารามิเตอร์ sep เหมาะมากสำหรับสร้างผลลัพธ์ที่มีรูปแบบ เช่น วันที่ เส้นทางไฟล์ หรือข้อมูล CSV โดยไม่ต้องต่อสตริงเอง

การใช้ sep ในงานจริง
# Practical uses of sep
year, month, day = 2025, 3, 15
print(year, month, day, sep="-") # 2025-3-15
# Build a file path
print("home", "user", "docs", sep="/") # home/user/docs
# Create CSV-like output
print("Alice", 25, "Paris", sep=",") # Alice,25,Paris
ผลลัพธ์
2025-3-15
home/user/docs
Alice,25,Paris

ทุกครั้งที่ print() ทำงานเสร็จ จะเพิ่มอักขระขึ้นบรรทัดใหม่ไว้ท้ายสุด นั่นคือเหตุผลที่การเรียก print() แต่ละครั้งเริ่มในบรรทัดใหม่ พารามิเตอร์ end ให้คุณเปลี่ยนสิ่งที่ตามหลังผลลัพธ์ได้

ให้คิดว่า end เป็นเหมือนเครื่องหมายวรรคตอนท้ายประโยค โดยค่าเริ่มต้น Python จะกด "Enter" หลังการแสดงผลแต่ละครั้ง คุณเปลี่ยนเป็นช่องว่าง จุลภาค หรือไม่ใส่อะไรเลยก็ได้

ใช้ end ควบคุมการขึ้นบรรทัดใหม่
# Default end is a newline
print("Hello")
print("World")
# Output:
# Hello
# World
print() # blank line
# Custom end - keep printing on the same line
print("Hello", end=" ")
print("World")
# Output: Hello World
print("Loading", end="...")
print("Done!")
# Output: Loading...Done!
ผลลัพธ์
Hello
World

Hello World
Loading...Done!
ใช้ end ในลูป
# Print items on the same line using a loop
fruits = ["apple", "banana", "cherry", "date"]
for fruit in fruits:
print(fruit, end=" ")
print() # Final newline to clean up
# Output: apple banana cherry date
ผลลัพธ์
apple banana cherry date

ใช้ sep และ end ร่วมกันอย่างไร

คุณใช้ sep และ end ในการเรียก print() ครั้งเดียวกันได้ ทำให้ควบคุมได้ทั้งสิ่งที่อยู่ระหว่างค่าและสิ่งที่อยู่ท้ายสุด

ใช้ sep และ end ร่วมกัน
# Combine sep and end
print("A", "B", "C", sep=" -> ", end=" [DONE]\n")
# Output: A -> B -> C [DONE]
# Build a progress bar effect
print("Step 1", "Step 2", "Step 3", sep=" > ", end="\n\n")
print("All steps complete!")
ผลลัพธ์
A -> B -> C [DONE]
Step 1 > Step 2 > Step 3

All steps complete!

สร้างผลลัพธ์ที่จัดแนวและจัดรูปแบบอย่างไร

โปรแกรมจริงต้องมีผลลัพธ์ที่อ่านง่าย ทั้งตาราง ใบเสร็จ และรายงาน ล้วนต้องมีคอลัมน์ที่เรียงตรงกันอย่างเป็นระเบียบ Python มีหลายวิธีให้ทำแบบนี้ได้

วิธีที่ง่ายที่สุดคือใช้เมธอดของสตริง .ljust(), .rjust() และ .center() เมธอดเหล่านี้เติมช่องว่างให้สตริงจนได้ความกว้างตามที่กำหนด

จัดแนวข้อความด้วย ljust() และ rjust()
# Right-align numbers for a clean column
print("Item".ljust(15), "Price".rjust(8))
print("-" * 24)
print("Coffee".ljust(15), "$4.50".rjust(8))
print("Sandwich".ljust(15), "$8.99".rjust(8))
print("Cookie".ljust(15), "$2.75".rjust(8))
ผลลัพธ์
Item               Price
------------------------
Coffee             $4.50
Sandwich           $8.99
Cookie             $2.75

ถ้าต้องการควบคุมได้มากกว่านี้ ให้ใช้ f-string พร้อมตัวกำหนดรูปแบบ (format specifier) ภายในวงเล็บปีกกา คุณกำหนดความกว้างและการจัดแนวของแต่ละค่าได้

ตัวกำหนดการจัดแนวใน f-string
# f-string alignment
# < left-align, > right-align, ^ center
print(f"{'Name':<15} {'Score':>8}")
print(f"{'-' * 24}")
print(f"{'Alice':<15} {95:>8}")
print(f"{'Bob':<15} {87:>8}")
print(f"{'Charlie':<15} {92:>8}")
ผลลัพธ์
Name               Score
------------------------
Alice                 95
Bob                   87
Charlie               92
ตารางสูตรคูณที่จัดรูปแบบแล้ว
# Building a multiplication table
print(" ", end="")
for i in range(1, 4):
print(f"{i:>4}", end="")
print()
print("-" * 14)
for row in range(1, 4):
print(f"{row} |", end="")
for col in range(1, 4):
print(f"{row * col:>4}", end="")
print()
ผลลัพธ์
     1   2   3
--------------
1 |   1   2   3
2 |   2   4   6
3 |   3   6   9

ฟังก์ชัน input() ใน Python ทำงานอย่างไร

การแสดงผลเป็นแค่ครึ่งเดียวของเรื่อง โปรแกรมส่วนใหญ่ยังต้องรับข้อมูลจากผู้ใช้ด้วย ใน Python ฟังก์ชัน input() จะหยุดโปรแกรมไว้ชั่วคราวและรอให้ผู้ใช้พิมพ์อะไรบางอย่าง

ลองนึกถึง input() ว่าเป็นเหมือนช่องกรอกข้อมูลบนเว็บไซต์ โปรแกรมแสดงข้อความถาม ผู้ใช้พิมพ์คำตอบ แล้วโปรแกรมเก็บคำตอบนั้นไว้ในตัวแปร

ถามคำถามด้วย input()
name = input("What is your name? ")
print("Hello,", name)

กด รัน: โปรแกรมจะหยุดที่ input() และรอ พิมพ์ชื่อของคุณ กด Enter แล้วโปรแกรมจะทำงานต่อโดยมีคำตอบของคุณอยู่ใน name

ฟังก์ชัน input() คืนค่าเป็น สตริง เสมอ แม้ผู้ใช้จะพิมพ์ตัวเลขก็ตาม นี่เป็นรายละเอียดสำคัญที่ทำให้ผู้เริ่มต้นหลายคนพลาด ลองรันโค้ดนี้แล้วพิมพ์ตัวเลข:

input() คืนค่าเป็นสตริงเสมอ
age = input("How old are you? ")
print(type(age)) # always <class 'str'>
print(age + 10) # TypeError: a string and a number cannot be added

แปลงข้อมูลที่ผู้ใช้ป้อนเป็นตัวเลขได้อย่างไร

เนื่องจาก input() คืนค่าเป็นสตริงเสมอ คุณต้องแปลงค่าเมื่อต้องการตัวเลข ให้ครอบ input() ด้วย int() สำหรับจำนวนเต็ม หรือ float() สำหรับทศนิยม

แปลงข้อมูลที่ป้อนเป็นตัวเลข
age = int(input("How old are you? "))
print("In 10 years you will be", age + 10)
price = float(input("Price of the item: "))
print("Tax:", round(price * 0.08, 2))

รูปแบบการแสดงผลที่พบบ่อยในโปรแกรม Python มีอะไรบ้าง

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

รูปแบบ: แสดงเมนู
# Pattern 1: A menu display
print("=" * 30)
print(" RESTAURANT MENU")
print("=" * 30)
print("1. Burger $8.99")
print("2. Pizza $12.50")
print("3. Salad $7.25")
print("=" * 30)
ผลลัพธ์
==============================
    RESTAURANT MENU
==============================
1. Burger         $8.99
2. Pizza          $12.50
3. Salad          $7.25
==============================
รูปแบบ: รายงานที่จัดรูปแบบแล้ว
# Pattern 2: A simple report
title = "Sales Report"
print(title.center(30, "="))
print()
print(f"{'Product':<15} {'Units':>7} {'Revenue':>8}")
print("-" * 30)
products = [
("Widgets", 150, 1500.00),
("Gadgets", 89, 2670.00),
("Gizmos", 234, 4680.00),
]
for name, units, revenue in products:
print(f"{name:<15} {units:>7} {revenue:>8.2f}")
print("-" * 30)
total_rev = sum(r for _, _, r in products)
print(f"{'Total':<15} {'':<7} {total_rev:>8.2f}")
ผลลัพธ์
=========Sales Report=========

Product           Units  Revenue
------------------------------
Widgets             150  1500.00
Gadgets              89  2670.00
Gizmos              234  4680.00
------------------------------
Total                    8850.00
รูปแบบ: เครื่องคิดเลขแบบโต้ตอบ
# Pattern 3: A program that asks questions
print("Welcome to the Calculator!")
print("Enter two numbers to add.")
print()
num1 = float(input("First number: "))
num2 = float(input("Second number: "))
print(f"Result: {num1} + {num2} = {num1 + num2}")

แบบฝึกหัด

ได้เวลาฝึกแล้ว! แบบฝึกหัดเหล่านี้เน้นการจัดรูปแบบด้วย print() ลองทำแต่ละข้อด้วยตัวเองก่อนเปิดดูคำใบ้

แบบฝึกหัดที่ 1: แสดงผลด้วยตัวคั่นที่กำหนดเอง
เขียนโค้ด

แสดงคำว่า "red", "green" และ "blue" โดยคั่นด้วย - (ช่องว่าง ขีด ช่องว่าง) ด้วยพารามิเตอร์ sep ของ print()

ผลลัพธ์ที่ควรได้:

red - green - blue

ใช้การเรียก print() เพียงครั้งเดียวพร้อมพารามิเตอร์ sep

# Print "red", "green", "blue" with " - " as the separator
แบบฝึกหัดที่ 2: แสดงหลายค่าในบรรทัดเดียวกัน
เขียนโค้ด

ใช้ลูป for แสดงตัวเลข 1 ถึง 5 ใน บรรทัดเดียวกัน โดยคั่นด้วยช่องว่าง แล้วเพิ่ม print() ว่าง ๆ ไว้ท้ายสุดเพื่อจบบรรทัด

ผลลัพธ์ที่ควรได้:

1 2 3 4 5

ใช้พารามิเตอร์ end ภายในลูป ระวังอย่าให้มีช่องว่างต่อท้ายหลัง 5

# Print numbers 1 through 5 on the same line
for i in range(1, 6):
# Use end parameter to stay on the same line
pass # Replace this line
print() # Final newline
แบบฝึกหัดที่ 3: สร้างตารางสูตรคูณ
เขียนโค้ด

สร้างตารางสูตรคูณของตัวเลข 1 ถึง 3 ผลคูณแต่ละตัวต้องจัดชิดขวาและกว้าง 4 ตัวอักษร แสดงแถวหัวตารางและเส้นคั่นด้วย

ผลลัพธ์ที่ควรได้:

1   2   3
   -----------
1 |   1   2   3
2 |   2   4   6
3 |   3   6   9

ใช้การจัดแนวของ f-string ({value:>4}) เพื่อจัดตัวเลขชิดขวาในคอลัมน์กว้าง 4 ตัวอักษร

# Print the header row
print(" ", end="")
for i in range(1, 4):
print(f"{i:>4}", end="")
print()
# Print the separator
print(" -----------")
# Print each row of the table
# Your code here
แบบฝึกหัดที่ 4: แสดงใบเสร็จที่จัดรูปแบบแล้ว
เขียนโค้ด

สร้างใบเสร็จที่จัดรูปแบบแล้วจากสินค้าและราคาต่อไปนี้ ใช้การจัดแนวของ f-string จัดชื่อสินค้าชิดซ้าย (กว้าง 20 ตัวอักษร) และจัดราคาชิดขวา (กว้าง 8 ตัวอักษร ทศนิยม 2 ตำแหน่ง) โดยมีส่วนหัว เส้นคั่น และยอดรวมด้วย

สินค้า:

  • Laptop: 999.99
  • Mouse: 29.50
  • Keyboard: 74.99
  • ผลลัพธ์ที่ควรได้:

    ============================
          TECH STORE
    ============================
    Item                   Price
    ----------------------------
    Laptop                999.99
    Mouse                  29.50
    Keyboard               74.99
    ----------------------------
    Total                1104.48
    ============================
    # Create the receipt
    items = [
    ("Laptop", 999.99),
    ("Mouse", 29.50),
    ("Keyboard", 74.99),
    ]
    # Print the header
    # Print column labels
    # Print each item
    # Print the total

    สรุป: การรับค่าและแสดงผลใน 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 และ ลูป ซึ่งเป็นเครื่องมือที่ทำให้โปรแกรมตัดสินใจและทำงานซ้ำได้

    บทเรียนที่เกี่ยวข้อง

    บทเรียนนี้มีประโยชน์หรือไม่