• Mục tiêu: Nắm vững cú pháp cơ bản, làm quen lập trình hướng đối tượng, đọc/ghi file, thao tác với danh sách, dictionary, vòng lặp, function, xử lý lỗi, và một số module chuẩn.

  • Yêu cầu: Đã cài Python 3, dùng được VS Code hoặc bất kỳ IDE nào.

  • Tổng thời gian học: Khoảng 10–12 giờ, chia làm 2 ngày.

<<Bài viết theo hướng dẫn ChatGPT có kiểm duyệt>>

Ngày 1: Học lập trình Python Cơ Bản & Cấu Trúc Dữ Liệu trong Python

Bạn hãy vừa học từng phần vừa so sánh với các ngôn ngữ lập trình khác nhé.

1. Biến & Kiểu dữ liệu (1 giờ)

Python:

name = "Alice"
age = 25
pi = 3.14
is_active = True

So sánh:

  • C:
char name[] = "Alice";
int age = 25;
double pi = 3.14;
bool is_active = true;
  • Java:
String name = "Alice";
int age = 25;
double pi = 3.14;
boolean is_active = true;
  • Nhận xét: Python không cần khai báo kiểu dữ liệu, giúp viết nhanh và dễ đọc.

2. Toán tử & Câu lệnh điều kiện (1 giờ)

Python:

if age >= 18:
    print("Adult")
elif age >= 13:
    print("Teen")
else:
    print("Child")

So sánh:

  • C:
if (age >= 18) {
    printf("Adult\n");
} else if (age >= 13) {
    printf("Teen\n");
} else {
    printf("Child\n");
}
  • Java:
if (age >= 18) {
    System.out.println("Adult");
} else if (age >= 13) {
    System.out.println("Teen");
} else {
    System.out.println("Child");
}
  • Nhận xét: Python dùng thụt đầu dòng thay vì {} như C/Java, cú pháp rõ ràng hơn.

3. Vòng lặp for, while (1 giờ)

Python:

for i in range(5):
    print(i)

i = 0
while i < 5:
    print(i)
    i += 1

So sánh:

  • C:
for (int i = 0; i < 5; i++) {
    printf("%d\n", i);
}
  • Java:
for (int i = 0; i < 5; i++) {
    System.out.println(i);
}
  • Nhận xét: Python có cú pháp đơn giản, đặc biệt với range().

4. List, Tuple, Dictionary (1 giờ)

Python:

fruits = ["apple", "banana"]
coords = (1, 2)
person = {"name": "Bob", "age": 22}

So sánh:

  • C:
char* fruits[] = {"apple", "banana"};
int coords[2] = {1, 2};
// Không có dict, phải dùng struct
  • Java:
ArrayList<String> fruits = new ArrayList<>();
fruits.add("apple");
fruits.add("banana");
Map<String, Object> person = new HashMap<>();
person.put("name", "Bob");
person.put("age", 22);
  • Nhận xét: Python hỗ trợ cấu trúc dữ liệu tích hợp sẵn, dễ thao tác.

5. Hàm & Lambda (1 giờ)

Python:

def add(a, b):
    return a + b

square = lambda x: x*x

So sánh:

  • C:
int add(int a, int b) {
    return a + b;
}
// Không có lambda
  • Java:
interface Add {
    int operate(int a, int b);
}
Add add = (a, b) -> a + b;
  • Nhận xét: Python có cú pháp lambda đơn giản và dễ dùng hơn Java.

Ngày 2: Học lập trình Python với các phần Hàm Nâng Cao, OOP, Dự Án nhỏ

6. List comprehension + Dict comprehension (30 phút)

Python:

squares = [x**2 for x in range(5)]
ages = {"alice": 20, "bob": 22}
new_dict = {k: v+1 for k,v in ages.items()}

So sánh:

  • C: Không hỗ trợ
  • Java:
List<Integer> squares = IntStream.range(0, 5).map(x -> x * x).boxed().collect(Collectors.toList());
  • Nhận xét: Python cho phép viết ngắn gọn, trong khi Java cần nhiều dòng và kiến thức nâng cao.

7. Xử lý lỗi try-except (30 phút)

Python:

try:
    x = int(input())
except ValueError:
    print("Invalid input")

So sánh:

  • C: Không hỗ trợ cơ chế try-catch, phải kiểm tra thủ công
  • Java:
try {
    int x = Integer.parseInt(input);
} catch (NumberFormatException e) {
    System.out.println("Invalid input");
}
  • Nhận xét: Python xử lý lỗi ngắn gọn và tự nhiên.

8. File IO (1 giờ)

Python:

with open("file.txt", "w") as f:
    f.write("Hello")

So sánh:

  • C:
FILE *f = fopen("file.txt", "w");
fprintf(f, "Hello");
fclose(f);
  • Java:
BufferedWriter writer = new BufferedWriter(new FileWriter("file.txt"));
writer.write("Hello");
writer.close();
  • Nhận xét: Python đơn giản hóa thao tác file với with.

9. OOP trong Python (1 giờ)

Python:

class Person:
    def __init__(self, name):
        self.name = name

    def greet(self):
        print(f"Hello {self.name}")

So sánh:

  • C: Không hỗ trợ OOP (chỉ có struct)
  • Java:
class Person {
    String name;
    Person(String name) {
        this.name = name;
    }
    void greet() {
        System.out.println("Hello " + name);
    }
}
  • Nhận xét: Python dễ học OOP nhờ cú pháp gọn, không cần khai báo kiểu rõ ràng.

10. Module chuẩn: random, datetime (30 phút)

Python:

import random
print(random.randint(1,10))

So sánh:

  • C:
#include <stdlib.h>
printf("%d\n", rand() % 10 + 1);
  • Java:
import java.util.Random;
Random rand = new Random();
System.out.println(rand.nextInt(10) + 1);
  • Nhận xét: Python dùng module rất trực quan, dễ nhớ.

11. Dự án mini: Calculator (30 phút)

def calc(a, b, op):
    if op == '+': return a + b
    elif op == '-': return a - b
    elif op == '*': return a * b
    elif op == '/': return a / b

12. Dự án mini: Danh bạ (1 giờ)

contacts = {}
def add(name, phone): contacts[name] = phone
def find(name): return contacts.get(name, "Not found")