Bài 9.5 - Python: kỹ năng đọc đề nhanh và code gọn

Một trong những kỹ năng cực kỳ quan trọng trong lập trình là đọc hiểu đề nhanhviết code ngắn gọn mà đúng ý đề. Bài này sẽ giúp bạn luyện khả năng:

  • Tách ý chính từ đề bài
  • Phân tích input/output
  • Viết code gọn gàng, súc tích nhưng dễ hiểu

1. Nhận diện đề bài quen thuộc

Khi luyện thi hoặc làm bài tập, bạn sẽ gặp lại các mẫu đề quen như:

  • Tính tổng, tìm max, min
  • Kiểm tra điều kiện (chẵn/lẻ, chia hết, ký tự đặc biệt)
  • Đếm, lọc, sắp xếp
Ví dụ 1: Tính tổng các số chia hết cho 3 trong list
Cách làm gọn gàng:
nums = [1, 2, 3, 4, 5, 6, 9]
total = sum(x for x in nums if x % 3 == 0)
print(total)  # Output: 18

Không cần for + if dài dòng, dùng generator expression rất hợp lý.


2. Đọc đề → viết nhanh mẫu code

Ví dụ 2: Đếm số nguyên âm trong chuỗi

Input: "hello world"
Yêu cầu: Đếm nguyên âm

Giải pháp gọn:
s = "hello world"
count = sum(1 for c in s if c in "aeiou")
print(count)  # Output: 3

Dễ đọc, không rườm rà, vẫn đầy đủ ý nghĩa.


3. Biến bài toán thành mô hình xử lý quen

Ví dụ 3: Kiểm tra chuỗi có phải palindrome không?
s = "madam"
print(s == s[::-1])  # Output: True

Không cần viết vòng lặp so sánh từng ký tự, hãy tận dụng slicing!


4. Kết hợp hàm tích hợp + toán tử ngắn

Ví dụ 4: Tìm từ dài nhất trong danh sách
words = ["cat", "banana", "apple"]
print(max(words, key=len))  # Output: banana

Kết hợp max() với key=len để viết cực kỳ ngắn.


5. Đừng quên đọc kỹ input/output

Ví dụ 5: Đề bài cho input từ bàn phím

Yêu cầu: Nhập danh sách số cách nhau bằng khoảng trắng, in tổng các số chẵn

nums = list(map(int, input().split()))
print(sum(x for x in nums if x % 2 == 0))

6. Thủ thuật viết code Pythonic

Mục tiêu Viết truyền thống Viết gọn Pythonic
Đếm số chẵn dùng for + if sum(1 for x in a if x % 2 == 0)
Lọc list dùng append() [x for x in a if x > 0]
Tìm max theo điều kiện vòng lặp kết hợp max(a, key=some_func)
So sánh chuỗi đảo ngược viết vòng lặp tay s == s[::-1]

7. Bài tập luyện kỹ năng

Bài 1: Nhập 1 dòng các số, in ra tổng các số chia hết cho 5
nums = list(map(int, input().split()))
print(sum(x for x in nums if x % 5 == 0))

Bài 2: Nhập 1 chuỗi, in ra chuỗi chỉ gồm ký tự viết thường
s = input()
print("".join(c for c in s if c.islower()))

Tổng kết

  • Học đọc đề nhanh = học cách rút ra điều kiện và hành động chính trong đề.
  • Viết code gọn = học cách dùng các tính năng mạnh mẽ sẵn có của Python.
  • Hãy luyện viết lại các bài quen thuộc theo phong cách ngắn gọn hơn mỗi ngày!

Comments

There are no comments at the moment.