Chào anh em,
Tiếp tục hành trình "Chặng 1.1: Python và Data Manipulation" thuộc series bài thử thách 2025, tuần qua tớ đã cố gắng để hoàn thành 10 nhóm bài test python theo kế hoạch. Dựa theo kết quả test thì tớ sẽ biết được là trình độ python "vỡ lòng" của mình có đủ đến chiến các chặng tiếp theo hay không(?), hay lại phải lọ mọ học lại abc cho nó "chỉn chu" rồi mới chém gió tiếp. Hâyz! 😭🥶
Tóm tắt các bài tests thuộc chặng 1.x:
- Python cơ bản: Syntax, OOP, exception handling, numpy,
- Pandas, và đọc/ghi: CSV, Excel, JSON
- Tools: jupyter, matplotlib, seaborn
1.2.1 Vượt thử thách Hackerank
Trong bảng test được tư vấn và chuẩn bị bởi trợ lý AI, thì các bài test thuộc python cơ bản, đa phần đều có trên hackerank. Nên tớ đã quyết định tập trung làm hết các bài test trên nền tảng này một lượt cho nó dễ. Cái nào dễ, hoặc mình nghĩ là nó dễ, thì mình làm trước anh em ạh. 🙂 Các bài test còn lại liên quan tới pandas, jupiter, tớ sẽ tổng hợp và review trong chặng 1.3 tiếp theo.
- Mục tiêu chặng 1.2: Python cơ bản: Syntax, OOP, exception handling, numpy,
Mục tiêu chặng này, sẽ bao gồm các bài test: 1, 2, 5, 7, 9, 10, đạt 6/10 targets.
No. | Từ khóa | Liên kết bài kiểm tra | Độ khó | Độ phổ biến |
---|---|---|---|---|
1 | Python OOP | Classes: Dealing with Complex Numbers | Trung bình, Dễ | 85% |
Classes: Find the Torsional Angle | ||||
2 | Exception Handling | Exceptions | 80% | |
Incorrect Regex | ||||
5 | Python Syntax | Python If-Else | 90% | |
Arithmetic Operators | ||||
7 | NumPy Array Ops | Arrays | 85% | |
Shape and Reshape | ||||
9 | Python Functions | Write a Function | Trung bình, Dễ | 80% |
Map and Lambda Function | ||||
10 | File Handling | 75% | ||
.
Trợ lý AI rất hữu dụng vì đã giúp tớ tổng hợp nhanh các bài test, và link phù hợp theo bảng yêu cầu. Tuy nhiên như dự đoán từ trước, anh em chỉ nên dùng AI để "hỗ trợ", gia tăng tầm nhìn (vision), và giúp đẩy nhanh các tác vụ đơn giản thôi nhé. Soi kĩ thì vẫn có lỗi như gạch ngang ở trên. Test 10 không tồn tại, tớ có thể tìm các link test khác để thay thế (nếu cần). Tuy nhiên trong phạm vi mục tiêu của chặng này, tớ thấy không cần lắm, nên sẽ tạm bỏ qua.
Kết quả làm bài test
- Đăng kí tài khoản, và lần đầu tiên làm test với python. Rank: 3.653.428
- 20 điểm đầu tiên sau bài test 1. Rank nhảy tít lên: 2.588.587
Bài test:Classes: Dealing with Complex Numbers
-
Miệt mài làm hết các bài test trên, tranh thủ những lúc rảnh tay trong tuần
Sau 1 tuần: trộm vía, thì tớ cũng đã làm được hết 10/10 bài thuộc 5 hạng mục nêu trên.
Rank: 739,761. Python Bạc: 3 sao(s). Chưa đáng kể lắm, nhưng khá ổn cho cột mốc khởi đầu.
Classes: Find the Torsional Angle
Exceptions
Incorrect Regex
Python If-Else
Arithmetic OperatorsArrays
Shape and Reshape
Write a Function
Map and Lambda Function
Trong lúc làm test, thì ngồi đếm rank cũng là một thú vui anh em ạh. Mình rất thích các nền tảng "mở" kiểu hackerank, và sau này thấy viblo:code cũng bắt sóng theo xu hướng, tạo môi trường cho anh em rèn luyện kĩ năng, upskills, "đu rank", enjoy, tận hưởng quá trình học tập, và rèn luyện. Rất tuyệt vời! Mình thì không thích đánh giá kiểu đạt/không đạt cho lắm, cứ đu rank cho nó máu anh em ạh, vừa có động lựa, vừa để biết mình-là-ai, và đang-ở-đâu để bớt chém gió xàm xí. hehe.
Như vậy trộm vía thì sau 1 tuần, tớ đã hoàn thành được 6/10 chặng 1.x. Trình độ python "vỡ lòng" được tiếp sức bởi 10+ năm kinh nghiệm Java, và sự linh hoạt, nhanh chóng của trợ lý AI thì việc đạt mục tiêu các bài test trên là rất dễ dàng anh em nhé. Khi làm các bài tests này thì việc đạt-mục-tiêu == hoàn thành 100/100 yêu cầu bài test nhanh chóng là rất quan trọng. Cứ hoàn thành 100/100 thì tự khắc kiến thức, kinh nghiệm sẽ đi theo, và được củng cố, còn nếu chỉ hoàn thành được 70/100 và bỏ ngang thì mình sẽ "bỏ lỡ" những điểm quan trọng trong mỗi cột mốc mà mình đi qua. Phần tiếp theo tớ sẽ ghi chú lại những điểm quan trọng hoặc thú vị trong lúc làm bài test.
Những lưu ý và bài học từ các bài tests
Thực ra tớ biết đến các nền tảng như hackerank, và các bài tests online cũng đã lâu rồi, cũng nhiều lần làm bài trên này, làm các challenges, vân vân mây mây. Nhưng mỗi lần làm thì sẽ có các trải nghiệm khác nhau, những lần đầu thì rất bỡ ngỡ. Dưới đây là một số lưu ý để anh em hoàn thành bài test đúng mục tiêu (targets), và vẫn thu lượm được kiến thức và kinh nghiệm bổ ích sau mỗi bài tests.
- Khi sumbit test: cần cố hoàn thành 100/100 các tests case, không có "nhưng". Nếu có test case nào đó không đạt: nên làm lại và làm cho nó đạt. Bằng cách này tớ học được rất nhiều điều thú vị đằng sau các bài tests.
- Khi mới vào bài test, việc đầu tiên là hãy nhấn RUN: chạy, và đảm bảo là không có lỗi. Phải đảm bảo rằng mình hiểu rõ môi trường test, biết rõ input, output, và có khả năng debug. Chia bài toán thành nhiều chặng (phases), nhấn RUN nhiều lần và quan sát kết quả để giảm thiểu thời gian "suy đoán". Đa phần anh em làm việc rất trơn tru ở môi trường quen thuộc, nhưng vì thờ ơ với môi trường test "mới" nên thường có kết quả không mong muốn.
.
Hai đoạn code mà tớ rất hay dùng để nhận input, và kiểm tra output ngay lần đầu chạy RUN trên hackerank:
listStr = [input().split() for i in range(int(input()))]
print(*listStr, sep='\n')
- Lấy hết inputs, N dòng một lượt và xử lý all-in-once dạng python: list.
N = input()
while True:
try: inStr = input() print(inStr)
except EOFError: break #end process
- Lấy input từng dòng một, và xử lý từng dòng theo yêu cầu.
Điều thú vị, là nhiều anh em có thể gặp nhiều khó khăn trong việc làm test, chỉ vì không hiểu rõ input, và output.
- Đừng quá chú trọng "thuật toán", hãy chú trọng việc hoàn thành test. Chúng ta chỉ "bàn" thuật toán khi nó thực sự cần, nếu không thì nên chọn 1 thư viện, hàm có sẵn và hoàn thành mục tiêu. AI rất giỏi việc này, hãy nhờ AI tư vấn, và anh em sẽ học thêm được 1 thư viện "hữu dụng" nhanh chóng.
- Chỉ nên cầu toàn ở kết quả cuối cùng 100/100 bài test. Không cần, và không nên làm một phát ăn ngay, cố nghĩ ra một thuật toán hoàn hảo chạy một phát trúng luôn. VÒNG LẶP: làm >> thử >> sai >> làm lại: là cách tốt nhất để nhanh đạt mục tiêu, và cũng là cách học được nhiều từ "sai số" và thực tiễn.
Chém gió linh tinh là vậy, anh em rảnh rỗi, cafe, thử làm 100/100 các bài test trên giải trí nhé.
1.2.2 Đạt cột mốc Python Gold 5 sao.
Cơ bản thì việc đặt ra và hoàn thành các bài test Python cơ bản nêu trên cũng tương đối đủ để tớ tự tin là có thể đọc/hiểu code Python, cũng như xử lý các bài toán phức tạp hơn về data, automation, hay AI trong các chặng sau. Tuy nhiên ông bà ta có câu "trăm hay không bằng tay quen", python có khá nhiều điểm thú vị và linh hoạt hơn nhiều so với java, nên tớ quyết định làm thêm nhiều bài test khác để củng cố kiến thức và kinh nghiệm nền tảng.
- Link: https://www.hackerrank.com/domains/python
- Làm thêm các bài tests về Functionals, Regex, Debugging
- Làm thêm các bài XML, và Decorators
Các bài này hơi khoai một chút so với các bài ở phần 1.2.1, nhưng tớ rất thích các bài này, vì có nhiều kĩ thuật rất hay mà tớ phải code 10, 20 dòng trong Java chỉ để đạt cùng một mục tiêu.
Sau một chút nỗ lực thì cũng đã hoàn thành, 20/115 bài tests Python solved. Rank, leo lên được 276K/3M nhé anh em. hehe
Up cái Gold Congrats ở đây cho nó có động lực đi tiếp anh em ạh.
Anh em nào máu chiến, muốn cày top 100 cho vui thì inbox tớ nhé.
Hẹn gặp lại anh em trong chuỗi bài tiếp theo, chặng 1.3 với Pandas, và Jupiter...