Chặng 1.2: Python, Vượt thử thách Hackerank

0 0 0

Người đăng: Hoang Dang

Theo Viblo Asia

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 Trung bình, Dễ 80%
Incorrect Regex
5 Python Syntax Python If-Else Trung bình, Dễ 90%
Arithmetic Operators
7 NumPy Array Ops Arrays Trung bình, Dễ 85%
Shape and Reshape
9 Python Functions Write a Function Trung bình, Dễ 80%
Map and Lambda Function
10 File Handling File Operations in Python Trung bình 75%
Working with Files

.

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

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.

  1. 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.
  2. 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.

  1. Đừ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.
  2. 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.

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

image.png

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é.

image.png

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...

Bình luận

Bài viết tương tự

- vừa được xem lúc

Thao tác với File trong Python

Python cung cấp các chức năng cơ bản và phương thức cần thiết để thao tác các file. Bài viết này tôi xin giới thiệu những thao tác cơ bản nhất với file trong Python.

1 1 134

- vừa được xem lúc

Tập tành crawl dữ liệu với Scrapy Framework

Lời mở đầu. Chào mọi người, mấy hôm nay mình có tìm hiểu được 1 chút về Scrapy nên muốn viết vài dòng để xem mình đã học được những gì và làm 1 demo nho nhỏ.

1 1 237

- vừa được xem lúc

Sử dụng Misoca API (oauth2) với Python

Với bài viết này giúp chúng ta có thể nắm được. ・Tìm hiểu cách xử lý API misoca bằng Python.

1 1 121

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 3)

Tiếp tục phần 2 của series Pandas DataFrame nào. Let's go!!. Ở phần trước, các bạn đã biết được cách lấy dữ liệu một row hoặc column trong Pandas DataFame rồi phải không nào. 6 Hoc.

1 1 136

- vừa được xem lúc

Lập trình socket bằng Python

Socket là gì. Một chức năng khác của socket là giúp các tầng TCP hoặc TCP Layer định danh ứng dụng mà dữ liệu sẽ được gửi tới thông qua sự ràng buộc với một cổng port (thể hiện là một con số cụ thể), từ đó tiến hành kết nối giữa client và server.

0 0 148

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 2)

Nào, chúng ta cùng đến với phần 2 của series Pandas DataFrame. Truy xuất Labels và Data. Bạn đã biết cách khởi tạo 1 DataFrame của mình, và giờ bạn có thể truy xuất thông tin từ đó. Với Pandas, bạn có thể thực hiện các thao tác sau:.

0 0 163