Rate nếu bạn đc vào cktq
đã đăng vào 14, Tháng 7, 2026, 2:49Rate nếu bạn đc vào cktq
Rate nếu bạn đc vào cktq
Khi lập trình bằng Python, chúng ta thường xuyên phải in ra màn hình các giá trị của biến để kiểm tra chương trình hoặc xuất kết quả theo định dạng yêu cầu.
Trước Python 3.6, lập trình viên thường sử dụng:
name = "Steve"
age = 15
print("Tên:", name, "Tuổi:", age)
hoặc:
print("Tên: {} Tuổi: {}".format(name, age))
Tuy nhiên, từ Python 3.6 trở đi, Python giới thiệu f-string (formatted string literal) giúp việc định dạng chuỗi trở nên ngắn gọn, trực quan và nhanh hơn.
print(f"Tên: {name} Tuổi: {age}")
Ngày nay, f-string được xem là cách định dạng chuỗi phổ biến nhất trong Python.
Để tạo f-string, thêm ký tự f trước dấu nháy.
name = "Steve"
print(f"Xin chào {name}")
Kết quả:
Xin chào Steve
Mọi biểu thức nằm trong dấu {} sẽ được Python tính toán rồi thay thế vào chuỗi.
name = "Steve"
age = 15
print(f"Tôi là {name}, năm nay {age} tuổi.")
Kết quả:
Tôi là Steve, năm nay 15 tuổi.
Không chỉ biến, f-string còn cho phép viết trực tiếp các biểu thức.
a = 5
b = 7
print(f"{a} + {b} = {a + b}")
Kết quả:
5 + 7 = 12
Ví dụ khác:
x = 10
print(f"Bình phương của x là {x ** 2}")
Kết quả:
Bình phương của x là 100
name = "steve"
print(f"{name.upper()}")
Kết quả:
STEVE
Hoặc:
print(f"{len(name)}")
Kết quả:
5
Đây là một trong những ứng dụng quan trọng nhất của f-string.
pi = 3.1415926535
print(f"{pi:.2f}")
Kết quả:
3.14
Ý nghĩa:
.2 : lấy 2 chữ số sau dấu phẩy.f : hiển thị dưới dạng số thực.Ví dụ:
x = 12.345678
print(f"{x:.3f}")
Kết quả:
12.346
score = 0.875
print(f"{score:.2%}")
Kết quả:
87.50%
Python tự động nhân với 100 và thêm ký hiệu %.
n = 1234567890
print(f"{n:,}")
Kết quả:
1,234,567,890
Rất hữu ích khi hiển thị số lớn.
print(f"{'ABC':>10}")
Kết quả:
ABC
print(f"{'ABC':<10}")
Kết quả:
ABC
print(f"{'ABC':^10}")
Kết quả:
ABC
print(f"{'ABC':*^10}")
Kết quả:
***ABC****
Giải thích:
* là ký tự điền.^ là căn giữa.10 là độ rộng.x = 42
print(f"{x:05}")
Kết quả:
00042
Ứng dụng:
hour = 8
minute = 5
print(f"{hour:02}:{minute:02}")
Kết quả:
08:05
n = 25
print(f"{n:b}")
Kết quả:
11001
print(f"{n:o}")
Kết quả:
31
print(f"{n:x}")
Kết quả:
19
Chữ hoa:
print(f"{n:X}")
Kết quả:
19
(với các số lớn hơn 9 sẽ hiện A, B, C...)
Từ Python 3.8:
x = 10
y = 20
print(f"{x=}, {y=}")
Kết quả:
x=10, y=20
Rất tiện khi debug.
Ví dụ:
mid = (l + r) // 2
print(f"{l=}, {r=}, {mid=}")
age = 15
print(f"{'Đủ tuổi' if age >= 18 else 'Chưa đủ tuổi'}")
Kết quả:
Chưa đủ tuổi
name = "Steve"
age = 15
print(f"Tên: {name}\nTuổi: {age}")
Kết quả:
Tên: Steve
Tuổi: 15
Nếu muốn in dấu { hoặc } thật sự:
print(f"{{Hello}}")
Kết quả:
{Hello}
Trong Competitive Programming, f-string thường được dùng để:
print(f"{i=}, {j=}, {ans=}")
print(f"{ans:.6f}")
for i in range(1, 6):
print(f"{i:<5}{i*i:<5}")
Kết quả:
1 1
2 4
3 9
4 16
5 25
name = "Steve"
print("Hello {}".format(name))
print(f"Hello {name}")
Ưu điểm của f-string:
Vì vậy, khi dùng Python 3.6+, f-string thường là lựa chọn tốt nhất.
| Cú pháp | Ý nghĩa |
|---|---|
f"{x}" |
Chèn biến |
f"{a+b}" |
Chèn biểu thức |
f"{x:.2f}" |
2 chữ số thập phân |
f"{x:,}" |
Dấu phẩy hàng nghìn |
f"{x:b}" |
Nhị phân |
f"{x:o}" |
Bát phân |
f"{x:x}" |
Hex |
f"{x:05}" |
Thêm số 0 |
f"{s:<10}" |
Căn trái |
f"{s:>10}" |
Căn phải |
f"{s:^10}" |
Căn giữa |
f"{x=}" |
Debug |
f-string là một trong những tính năng hữu ích nhất của Python hiện đại. Nó giúp mã nguồn ngắn gọn, dễ đọc và mạnh mẽ hơn rất nhiều so với cách nối chuỗi hoặc sử dụng format() truyền thống.
Nếu bạn đang học Python hoặc lập trình thi đấu, hãy tập thói quen sử dụng f-string ngay từ đầu. Chỉ cần nắm vững các định dạng cơ bản như:
=là đã đủ để giải quyết phần lớn nhu cầu trong thực tế.
Binary Search Tree (BST) hay Cây tìm kiếm nhị phân là một dạng cây nhị phân đặc biệt, trong đó:
Mọi node ở cây con bên trái đều có giá trị nhỏ hơn node hiện tại. Mọi node ở cây con bên phải đều có giá trị lớn hơn node hiện tại.
Nhờ tính chất này, việc tìm kiếm dữ liệu trở nên rất nhanh.
Với node 8:
Các số bên trái 8 đều nhỏ hơn 8
Các số bên phải 8 đều lớn hơn 8
Và quy tắc đó đúng với mọi node trong cây. 🌳
BST hỗ trợ rất hiệu quả các thao tác:
Tìm kiếm
Thêm phần tử
Xóa phần tử
Độ phức tạp trung bình:
O(log n) 📈
Nhanh hơn nhiều so với tìm kiếm tuyến tính trên mảng.
So sánh: 📊
Số phần tử: 100 Tìm kiếm tuyến tính: 50 lần lặp BST: 7 lần lặp
Số phần tử: 1000 Tìm kiếm tuyến tính: 500 lần lặp BST: 10 lần lặp
Số phần tử: 1000000 😵 Tìm kiếm tuyến tính: 500000 lần lặp BST: 20 lần lặp 🤯
BST (Binary Search Tree) là một cấu trúc tìm kiếm dạng cây cực kỳ hữu dụng (dễ cài đặt 🛠️, tìm kiếm nhanh ⚡). Hiểu rõ BST sẽ giúp cho rất nhiều bài code sau này.