Skip to content

🖨️ 3.2 Lệnh print()

📖 Giới thiệu

Lệnh print() là cách để chương trình Python "nói chuyện" với bạn. Đây là công cụ hiển thị thông tin ra màn hình, giúp bạn thấy kết quả của chương trình và debug code hiệu quả.

Mục tiêu bài học:

  • Thành thạo các cách sử dụng print()
  • Định dạng output đẹp mắt và chuyên nghiệp
  • Biết cách debug bằng print()

🔧 Cú pháp

Cú pháp cơ bản:

python
print(value1, value2, ..., sep=' ', end='\n')

Các cách sử dụng:

python
# 1. In chuỗi đơn giản
print("Hello World")

# 2. In nhiều giá trị
print("Tên:", "Python", "Tuổi:", 30)

# 3. Với separator tùy chỉnh
print("A", "B", "C", sep="-")

# 4. Với ending tùy chỉnh
print("Hello", end=" ")
print("World")  # In trên cùng dòng

# 5. In không có gì (dòng trống)
print()

🔬 Phân tích & Giải thích chi tiết

1. 🎛️ Tham số của print()

Các tham số quan trọng:

sep (separator)

python
# Mặc định sep=' ' (khoảng trắng)
print("A", "B", "C")           # A B C
print("A", "B", "C", sep="-")  # A-B-C
print("A", "B", "C", sep="")   # ABC
print("A", "B", "C", sep=" | ") # A | B | C

end (ending)

python
# Mặc định end='\n' (xuống dòng)
print("Dòng 1")
print("Dòng 2")        # Xuống dòng

print("Cùng", end=" ")
print("dòng")          # Cùng dòng

print("Loading", end="")
for i in range(3):
    print(".", end="")  # Loading...
print(" Done!")

2. 🎨 Định dạng output đẹp mắt

Căn chỉnh văn bản:

python
# Căn giữa
title = "BẢNG ĐIỂM HỌC SINH"
print(title.center(30, "="))
# ====BẢNG ĐIỂM HỌC SINH====

# Tạo khung
print("+" + "-" * 28 + "+")
print("|" + " MENU CHÍNH ".center(28) + "|")
print("+" + "-" * 28 + "+")

Hiển thị dữ liệu dạng bảng:

python
# Header
print(f"{'Tên':<10} {'Tuổi':>5} {'Điểm':>6}")
print("-" * 21)

# Data rows
print(f"{'Minh':<10} {20:>5} {8.5:>6}")
print(f"{'Lan':<10} {19:>5} {9.0:>6}")

3. 🔢 In các kiểu dữ liệu khác nhau

python
# String
ten = "Python"
print("Ngôn ngữ:", ten)

# Numbers
tuoi = 30
diem = 9.5
print("Tuổi:", tuoi, "- Điểm:", diem)

# Boolean
la_sinh_vien = True
print("Sinh viên:", la_sinh_vien)

# List
mon_hoc = ["Toán", "Lý", "Hóa"]
print("Môn học:", mon_hoc)

# Dictionary
thong_tin = {"ten": "An", "tuoi": 20}
print("Thông tin:", thong_tin)

4. 🐛 Sử dụng print() để debug

python
def tinh_diem_trung_binh(diem_list):
    print(f"DEBUG: Input = {diem_list}")  # Debug line
    
    tong = sum(diem_list)
    print(f"DEBUG: Tổng = {tong}")        # Debug line
    
    so_luong = len(diem_list)
    print(f"DEBUG: Số lượng = {so_luong}") # Debug line
    
    trung_binh = tong / so_luong
    print(f"DEBUG: Kết quả = {trung_binh}") # Debug line
    
    return trung_binh

💻 Ví dụ minh họa

Ví dụ 1: In thông tin cá nhân đẹp mắt

python
# Chương trình hiển thị thông tin học sinh
def in_thong_tin_hoc_sinh():
    # Dữ liệu học sinh
    ten = "Nguyễn Văn Minh"
    lop = "12A1"
    truong = "THPT Nguyễn Huệ"
    diem_toan = 8.5
    diem_ly = 7.0
    diem_hoa = 9.0
    
    # Tính điểm trung bình
    diem_tb = (diem_toan + diem_ly + diem_hoa) / 3
    
    # In header
    print("=" * 40)
    print("BẢNG ĐIỂM HỌC SINH".center(40))
    print("=" * 40)
    
    # In thông tin cơ bản
    print(f"Họ tên    : {ten}")
    print(f"Lớp      : {lop}")
    print(f"Trường   : {truong}")
    print("-" * 40)
    
    # In điểm số
    print("BẢNG ĐIỂM:")
    print(f"  Toán học    : {diem_toan:>5.1f}")
    print(f"  Vật lý      : {diem_ly:>5.1f}")
    print(f"  Hóa học     : {diem_hoa:>5.1f}")
    print("-" * 40)
    print(f"  Điểm TB     : {diem_tb:>5.1f}")
    
    # Đánh giá
    if diem_tb >= 8.0:
        xep_loai = "Giỏi"
        emoji = "🏆"
    elif diem_tb >= 6.5:
        xep_loai = "Khá"
        emoji = "👍"
    elif diem_tb >= 5.0:
        xep_loai = "Trung bình"
        emoji = "📚"
    else:
        xep_loai = "Yếu"
        emoji = "💪"
    
    print(f"  Xếp loại    : {emoji} {xep_loai}")
    print("=" * 40)

# Chạy chương trình
in_thong_tin_hoc_sinh()

Kết quả:

========================================
         BẢNG ĐIỂM HỌC SINH
========================================
Họ tên    : Nguyễn Văn Minh
Lớp      : 12A1
Trường   : THPT Nguyễn Huệ
----------------------------------------
BẢNG ĐIỂM:
  Toán học    :   8.5
  Vật lý      :   7.0
  Hóa học     :   9.0
----------------------------------------
  Điểm TB     :   8.2
  Xếp loại    : 🏆 Giỏi
========================================

Ví dụ 2: Progress bar đơn giản

python
import time

def hien_thi_progress_bar(tong_so, tieu_de="Đang xử lý"):
    """Hiển thị thanh progress bar"""
    
    print(f"\n{tieu_de}:")
    
    for i in range(tong_so + 1):
        # Tính phần trăm
        phan_tram = (i / tong_so) * 100
        
        # Tạo thanh progress
        thanh_day = int(phan_tram / 2)  # Thanh dài 50 ký tự
        thanh_trong = 50 - thanh_day
        
        progress_bar = "█" * thanh_day + "░" * thanh_trong
        
        # In progress (ghi đè dòng cũ)
        print(f"\r[{progress_bar}] {phan_tram:5.1f}%", end="")
        
        # Giả lập thời gian xử lý
        time.sleep(0.1)
    
    print("\n✅ Hoàn thành!")

# Test progress bar
hien_thi_progress_bar(20, "Đang tải dữ liệu")

Ví dụ 3: Menu tương tác đẹp mắt

python
def hien_thi_menu():
    """Hiển thị menu chương trình"""
    
    # Header
    print("\n" + "╔" + "═" * 38 + "╗")
    print("║" + " CHƯƠNG TRÌNH QUẢN LÝ HỌC SINH ".center(38) + "║")
    print("╠" + "═" * 38 + "╣")
    
    # Menu items
    menu_items = [
        "1. Thêm học sinh mới",
        "2. Xem danh sách học sinh", 
        "3. Tính điểm trung bình",
        "4. Tìm kiếm học sinh",
        "5. Xuất báo cáo",
        "0. Thoát chương trình"
    ]
    
    for item in menu_items:
        print(f"║ {item:<36} ║")
    
    # Footer
    print("╚" + "═" * 38 + "╝")
    
    # Prompt
    lua_chon = input("\n👉 Nhập lựa chọn của bạn: ")
    return lua_chon

def xu_ly_menu():
    """Xử lý lựa chọn menu"""
    while True:
        lua_chon = hien_thi_menu()
        
        if lua_chon == "1":
            print("🆕 Chức năng thêm học sinh...")
        elif lua_chon == "2":
            print("📋 Hiển thị danh sách học sinh...")
        elif lua_chon == "3":
            print("🧮 Tính điểm trung bình...")
        elif lua_chon == "4":
            print("🔍 Tìm kiếm học sinh...")
        elif lua_chon == "5":
            print("📊 Xuất báo cáo...")
        elif lua_chon == "0":
            print("👋 Tạm biệt! Hẹn gặp lại!")
            break
        else:
            print("❌ Lựa chọn không hợp lệ!")
        
        input("\nNhấn Enter để tiếp tục...")

# Chạy chương trình menu
xu_ly_menu()

🏋️ Thực hành

Bài tập 1: In thông tin cơ bản

Hoàn thành chương trình sau:

python
# TODO: Khai báo thông tin cá nhân của bạn
ten = "Tên của bạn"
tuoi = 20
thanh_pho = "Thành phố"

# TODO: In thông tin theo format đẹp
# Kết quả mong muốn:
# ==================
# THÔNG TIN CÁ NHÂN
# ==================
# Tên      : [Tên của bạn]
# Tuổi     : [Tuổi] tuổi
# Thành phố: [Thành phố]

Đáp án:

python
ten = "Nguyễn Văn An"
tuoi = 20
thanh_pho = "Hà Nội"

print("=" * 18)
print("THÔNG TIN CÁ NHÂN")
print("=" * 18)
print(f"Tên      : {ten}")
print(f"Tuổi     : {tuoi} tuổi")
print(f"Thành phố: {thanh_pho}")

Bài tập 2: Tạo bảng điểm

Viết chương trình in bảng điểm cho 3 học sinh:

python
# Dữ liệu học sinh
hoc_sinh = [
    {"ten": "Minh", "toan": 8.5, "ly": 7.0, "hoa": 9.0},
    {"ten": "Lan", "toan": 9.0, "ly": 8.5, "hoa": 8.0},
    {"ten": "Hùng", "toan": 7.5, "ly": 8.0, "hoa": 7.0}
]

# TODO: In bảng điểm đẹp mắt
# Header: Tên | Toán | Lý | Hóa | TB
# Dữ liệu với căn chỉnh phù hợp

Đáp án:

python
hoc_sinh = [
    {"ten": "Minh", "toan": 8.5, "ly": 7.0, "hoa": 9.0},
    {"ten": "Lan", "toan": 9.0, "ly": 8.5, "hoa": 8.0},
    {"ten": "Hùng", "toan": 7.5, "ly": 8.0, "hoa": 7.0}
]

# Header
print(f"{'Tên':<8} {'Toán':>6} {'Lý':>6} {'Hóa':>6} {'TB':>6}")
print("-" * 34)

# Dữ liệu
for hs in hoc_sinh:
    tb = (hs["toan"] + hs["ly"] + hs["hoa"]) / 3
    print(f"{hs['ten']:<8} {hs['toan']:>6.1f} {hs['ly']:>6.1f} {hs['hoa']:>6.1f} {tb:>6.1f}")

Bài tập 3: Debug với print()

Tìm lỗi trong function sau bằng print():

python
def chia_so(a, b):
    # TODO: Thêm các lệnh print() để debug
    ket_qua = a / b
    return ket_qua

# Test case
print(chia_so(10, 2))  # Kết quả: 5.0
print(chia_so(10, 0))  # Lỗi! ZeroDivisionError

Đáp án:

python
def chia_so(a, b):
    print(f"DEBUG: Input a={a}, b={b}")
    
    if b == 0:
        print("DEBUG: Phát hiện chia cho 0!")
        return None
    
    ket_qua = a / b
    print(f"DEBUG: Kết quả = {ket_qua}")
    return ket_qua

# Test case
print(chia_so(10, 2))  # 5.0
print(chia_so(10, 0))  # None

Bài tập 4: Thử thách - Vẽ hình với print()

Sử dụng print() để vẽ tam giác:

    *
   ***
  *****
 *******
*********

Gợi ý: Sử dụng vòng lặp và khoảng trắng

Đáp án:

python
chieu_cao = 5

for i in range(chieu_cao):
    khoang_trang = " " * (chieu_cao - i - 1)
    sao = "*" * (2 * i + 1)
    print(khoang_trang + sao)

📋 Tóm tắt

Những điều quan trọng về print():

  1. 🎛️ Tham số chính:

    python
    print(value, sep=' ', end='\n')
  2. 🎨 Định dạng đẹp:

    python
    # Căn chỉnh
    print(f"{text:<10}")  # Căn trái
    print(f"{text:>10}")  # Căn phải  
    print(f"{text:^10}")  # Căn giữa
    
    # Số thập phân
    print(f"{number:.2f}")  # 2 chữ số sau dấu phẩy
  3. 🔧 Mẹo hay:

    • Dùng end="" để in cùng dòng
    • Dùng sep="" để gộp các giá trị
    • Tạo khung và bảng để đẹp mắt
    • Dùng emoji để sinh động
  4. 🐛 Debug hiệu quả:

    python
    print(f"DEBUG: Variable = {variable}")
  5. 📊 Pattern thường dùng:

    python
    # Progress indicator
    print("Loading", end="")
    for i in range(3):
        print(".", end="")
    print(" Done!")
    
    # Table format
    print(f"{'Header1':<10} {'Header2':>10}")
    print("-" * 20)

Chuẩn bị cho bài tiếp theo:

Bài tiếp theo sẽ học về 🧵 F-string, format chuỗi - Cách định dạng string chuyên nghiệp và hiện đại nhất trong Python!


💡 Mẹo: print() không chỉ để hiển thị kết quả, mà còn là công cụ debug mạnh mẽ. Hãy sử dụng nó thường xuyên khi phát triển chương trình!

🎨 Thực hành: Hãy thử tạo một menu hoặc bảng thông tin đẹp mắt bằng print()!

🐍 Khóa học Python căn bản bằng tiếng Việt