-
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")