Tất tần tật về f-strings trong Python
Giới thiệu
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.
1. Cú pháp cơ bản
Để 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.
2. Chèn nhiều biến
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.
3. Chèn biểu thức
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
4. Gọi hàm trong f-string
name = "steve"
print(f"{name.upper()}")
Kết quả:
STEVE
Hoặc:
print(f"{len(name)}")
Kết quả:
5
5. Định dạng số thực
Đây là một trong những ứng dụng quan trọng nhất của f-string.
Làm tròn đến n chữ số thập phân
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
6. Định dạng phần trăm
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 %.
7. Định dạng dấu phẩy phân tách hàng nghìn
n = 1234567890
print(f"{n:,}")
Kết quả:
1,234,567,890
Rất hữu ích khi hiển thị số lớn.
8. Căn lề chuỗi
Căn phải
print(f"{'ABC':>10}")
Kết quả:
ABC
Căn trái
print(f"{'ABC':<10}")
Kết quả:
ABC
Căn giữa
print(f"{'ABC':^10}")
Kết quả:
ABC
9. Điền ký tự
print(f"{'ABC':*^10}")
Kết quả:
***ABC****
Giải thích:
*là ký tự điền.^là căn giữa.10là độ rộng.
10. Thêm số 0 phía trước
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
11. Định dạng hệ cơ số
Nhị phân
n = 25
print(f"{n:b}")
Kết quả:
11001
Bát phân
print(f"{n:o}")
Kết quả:
31
Thập lục phân
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...)
12. Debug cực nhanh với dấu =
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=}")
13. Dùng biểu thức điều kiện
age = 15
print(f"{'Đủ tuổi' if age >= 18 else 'Chưa đủ tuổi'}")
Kết quả:
Chưa đủ tuổi
14. Xuống dòng trong f-string
name = "Steve"
age = 15
print(f"Tên: {name}\nTuổi: {age}")
Kết quả:
Tên: Steve
Tuổi: 15
15. Dấu ngoặc nhọn trong f-string
Nếu muốn in dấu { hoặc } thật sự:
print(f"{{Hello}}")
Kết quả:
{Hello}
16. f-string trong lập trình thi đấu
Trong Competitive Programming, f-string thường được dùng để:
In thông tin debug
print(f"{i=}, {j=}, {ans=}")
Xuất số thực chính xác
print(f"{ans:.6f}")
Hiển thị bảng
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
17. So sánh f-string và format()
format()
name = "Steve"
print("Hello {}".format(name))
f-string
print(f"Hello {name}")
Ưu điểm của f-string:
- Ngắn gọn hơn.
- Dễ đọc hơn.
- Viết biểu thức trực tiếp.
- Thực thi nhanh hơn trong đa số trường hợp.
Vì vậy, khi dùng Python 3.6+, f-string thường là lựa chọn tốt nhất.
Bảng tóm tắ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 |
Kết luận
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ư:
- Chèn biến
- Chèn biểu thức
- Làm tròn số thực
- Căn lề
- Debug bằng
=
là đã đủ để giải quyết phần lớn nhu cầu trong thực tế.
Bình luận