TRUNG TÂM HỌC TẬP ĐAM YI STUDY - DYG
Thứ Hai, 16 tháng 3, 2026
Thứ Tư, 11 tháng 3, 2026
HƯỚNG DẪN SỬ DỤNG VÀ MẸO CHO TỔ KIỂM PHIẾU
(Phiên bản bổ sung lần 3)
* Phần mềm có tên: KiemPhieu2026_DYGV2 và có biểu tượng như sau:
* Tải phần mềm theo đường link TẠI ĐÂY - Phiên bản full chuẩn cập nhật lúc 10 giờ 30, ngày 12/3/2026 (Sau khi tải về, giải nén với mật khẩu là số điện thoại của tác giả: 0976638675)
* Phần mềm được sử dụng miễn phí, phục vụ cho đợt bầu cử năm 2026, tác giả không chịu trách nhiệm lỗi sai sót khác, mỗi lần chạy phần mềm sẽ có 1 bản sao lưu dữ liệu cũ (file phát sinh cùng nằm cùng thư mục chứa phần mềm), người dùng nên tải và lưu phần tại ổ đĩa D hoặc E và sau đó tạo shotcut trên màn hình Desktop.
* Lưu ý, phần mềm chạy tốt nhất trên môi trường Windows 10 trở lên, không phụ thuộc vào office bạn đang sử dụng.
A. Quy trình sử dụng
1. Khởi động: Mở file .exe, chọn cấp bầu cử (Quốc hội/Tỉnh/Xã).
2. Nhập danh sách: Gõ đúng họ và tên từng ứng cử viên vào (mỗi người 1 dòng). Bấm "Kích hoạt".
- Mẹo 1: Sử dụng 2 người nhập song song. Nếu số lượng phiếu quá lớn, Thầy có thể chia thùng phiếu làm 2 nửa, 2 máy tính nhập độc lập. Cuối buổi chỉ cần cộng dồn số phiếu từ 2 file Excel xuất ra. Rất nhanh và giảm áp lực!
- Mẹo 2: Đối soát "Xanh - Đỏ". Người nhập liệu luôn nhìn vào ô Chênh lệch. Nếu ô đó hiện màu Xanh (Khớp: 0) sau khi nhập hết phiếu trong thùng, nghĩa là tổ đã làm việc cực kỳ chính xác. Nếu hiện màu Đỏ, phải kiểm tra ngay xem có phiếu nào bị dính hoặc bỏ sót không.
- Mẹo 3: Tận dụng tiếng Beep. Người đọc phiếu không cần nhìn màn hình, chỉ cần nghe tiếng Beep là biết người nhập đã bấm xong. Nếu không nghe tiếng Beep, phải dừng lại ngay để kiểm tra.
- Mẹo 4: Phiếu hỏng. Luôn nhập phiếu hỏng vào mục "Phiếu không hợp lệ" để tổng số phiếu thu vào luôn khớp với thực tế số phiếu trong thùng.
Lập Trình Game Với Pygame
Hành trình sáng tạo trò chơi từ những dòng mã đầu tiên
Nội dung bài học (12 Ví dụ)
- VD1: Khởi tạo cửa sổ Game
- VD2: Game Loop (Vòng lặp vô tận)
- VD3: Vẽ hình cơ bản (Rect, Circle)
- VD4: Di chuyển vật thể bằng phím
- VD5: Chèn hình ảnh (Sprite)
- VD6: Xử lý va chạm (Collision)
- VD7: Viết chữ lên màn hình
- VD8: Thêm âm thanh & Nhạc nền
- VD9: Hệ thống tính điểm (Score)
- VD10: Tạo chuyển động mượt (FPS)
- VD11: Tạo nhiều kẻ địch (List)
- VD12: Màn hình Game Over
Kiến trúc cốt lõi của một trò chơi
Khác với ứng dụng văn phòng, Game chạy liên tục ở tốc độ cao. Cấu trúc gồm: Nhập liệu (Input) -> Cập nhật (Update) -> Hiển thị (Draw).
Các ví dụ thực hành chi tiết
Ví dụ 1 & 2: Cửa sổ và Vòng lặp Game
import pygame
# 1. Khởi tạo
pygame.init()
screen = pygame.display.set_mode((800, 600))
running = True
# 2. Vòng lặp Game
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((0, 0, 0)) # Xóa màn hình bằng màu đen
pygame.display.update()
pygame.quit()
pygame.init(): Đánh thức tất cả các module của Pygame.pygame.event.get(): Lấy danh sách tất cả các thao tác (chuột, phím).screen.fill(): Cực kỳ quan trọng để xóa các hình ảnh cũ trước khi vẽ hình mới.
Ví dụ 4: Di chuyển vật thể (Input Handling)
x, y = 100, 100
vel = 5 # Vận tốc
# Trong vòng lặp while:
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]: x -= vel
if keys[pygame.K_RIGHT]: x += vel
if keys[pygame.K_UP]: y -= vel
if keys[pygame.K_DOWN]: y += vel
pygame.draw.rect(screen, (255, 0, 0), (x, y, 50, 50))
Ví dụ 6: Xử lý va chạm (Collision Detection)
player_rect = pygame.Rect(x, y, 50, 50)
enemy_rect = pygame.Rect(400, 300, 50, 50)
if player_rect.colliderect(enemy_rect):
print("Va chạm rồi!")
colliderect là hàm có sẵn cực mạnh của Pygame giúp kiểm tra xem hai hình chữ nhật có đè lên nhau hay không. Đây là nền tảng của các game bắn súng hoặc ăn xu.
Ví dụ 10: Giới hạn khung hình (FPS)
clock = pygame.time.Clock()
while running:
clock.tick(60) # Chạy đúng 60 khung hình/giây
# ... logic game ...
clock.tick(60), game sẽ chạy nhanh hết mức có thể (tùy máy mạnh yếu), dẫn đến nhân vật di chuyển quá nhanh không thể kiểm soát.
Ví dụ 12: Màn hình Game Over (State Management)
game_active = True
while running:
if game_active:
# Chạy logic game
if lives <= 0: game_active = False
else:
# Hiển thị màn hình Game Over
screen.fill((200, 0, 0))
show_text("NHẤN R ĐỂ CHƠI LẠI", 300, 300)
Kết Hợp Pandas & Django
Xây dựng hệ thống Quản lý Thiết bị dạy học từ dữ liệu Excel
Các bước thực hiện
- Bước 1: Chuẩn bị Model Django
- Bước 2: Cài đặt thư viện hỗ trợ
- Bước 3: Code Import dữ liệu từ Excel
- Bước 4: Kiểm tra dữ liệu trong SQLite
- Bước 5: Tạo View hiển thị danh sách
- Bước 6: Giao diện bảng thiết bị (HTML)
- Bước 7: Tìm kiếm thiết bị nâng cao
- Bước 8: Thống kê số lượng bằng Pandas
- Bước 9: Xuất báo cáo từ Web ra Excel
- Bước 10: Hoàn thiện & Triển khai
Bước 1: Khai báo cấu trúc thiết bị (Model)
Chúng ta cần một "khuôn mẫu" để lưu trữ thông tin thiết bị trong Database.
from django.db import models
class ThietBi(models.Model):
ma_so = models.CharField(max_length=20, unique=True)
ten_thiet_bi = models.CharField(max_length=200)
phong_kho = models.CharField(max_length=100)
so_luong = models.IntegerField(default=0)
tinh_trang = models.CharField(max_length=50, default="Tốt")
def __str__(self):
return self.ten_thiet_bi
Bước 3: Viết Script Import bằng Pandas
Đây là phần quan trọng nhất: Đọc file Excel báo cáo cuối năm và đẩy thẳng vào SQLite của Django.
import pandas as pd
from main.models import ThietBi
def import_excel_to_db(file_path):
# 1. Dùng Pandas đọc Excel
df = pd.read_excel(file_path)
# 2. Lặp qua từng dòng dữ liệu
for index, row in df.iterrows():
ThietBi.objects.update_or_create(
ma_so=row['Mã TB'],
defaults={
'ten_thiet_bi': row['Tên'],
'phong_kho': row['Phòng'],
'so_luong': row['Số lượng'],
}
)
print("Import hoàn tất!")
df.iterrows(): Giúp duyệt qua từng hàng trong file Excel như một danh sách.update_or_create: Nếu thiết bị đã tồn tại (dựa trên Mã số) thì cập nhật thông tin mới, nếu chưa có thì tạo mới. Tránh trùng lặp dữ liệu.
Bước 8: Thống kê báo cáo nhanh
Kết hợp sức mạnh tính toán của Pandas để tạo báo cáo nhanh trên Web.
def thong_ke_thiet_bi(request):
# Lấy dữ liệu từ SQLite chuyển thành DataFrame
data = ThietBi.objects.all().values()
df = pd.DataFrame(data)
# Thống kê tổng số lượng theo từng phòng kho
report = df.groupby('phong_kho')['so_luong'].sum().to_dict()
return render(request, 'report.html', {'report': report})
groupby() của Pandas chỉ trong 1 dòng code.
Bước 9: Xuất báo cáo ngược lại Excel
Khi Hiệu trưởng yêu cầu báo cáo, bạn có thể xuất dữ liệu từ Web ra file Excel chuẩn chỉ bằng 1 cú click.
import io
from django.http import HttpResponse
def export_to_excel(request):
df = pd.DataFrame(list(ThietBi.objects.all().values()))
output = io.BytesIO()
with pd.ExcelWriter(output, engine='openpyxl') as writer:
df.to_excel(writer, index=False, sheet_name='ThietBi')
response = HttpResponse(output.getvalue(), content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=Bao_cao_thiet_bi.xlsx'
return response
✅ Kết luận bài học
Sự kết hợp này mang lại quy trình khép kín:
- Dữ liệu đầu vào: Tận dụng các file Excel có sẵn từ kế toán/văn phòng.
- Lưu trữ: Dùng SQLite (đi kèm Django) nhẹ nhàng, không cần cài đặt server phức tạp.
- Hiển thị: Django giúp mọi giáo viên trong trường có thể truy cập qua mạng nội bộ để đăng ký mượn/trả thiết bị.
Lập Trình Web Chuyên Nghiệp Với Django
Framework dành cho những người cầu toàn với thời hạn gấp rút
Lộ trình 10 bước chinh phục Django
- VD1: Khởi tạo Project & App
- VD2: Tạo View "Hello World"
- VD3: Cấu hình URL Routing
- VD4: Sử dụng Template HTML
- VD5: Truyền dữ liệu sang Template
- VD6: Thiết kế Model (Cơ sở dữ liệu)
- VD7: Trang Quản trị (Django Admin)
- VD8: Truy vấn dữ liệu (ORM Query)
- VD9: Xử lý Form từ người dùng
- VD10: Xây dựng ứng dụng Danh sách việc làm
Kiến trúc MVT (Model - View - Template)
Khác với mô hình MVC thông thường, Django sử dụng kiến trúc MVT giúp tách biệt hoàn toàn giữa dữ liệu, giao diện và logic xử lý.
Chi tiết bài giảng & Ví dụ
Ví dụ 1: Lệnh khởi tạo hệ thống
Trước tiên, bạn cần cài đặt Django và khởi tạo cấu trúc thư mục.
django-admin startproject mywebsite .
python manage.py startapp main
- startproject: Tạo bộ khung quản lý web (cài đặt, database).
- startapp: Tạo một "chức năng" cụ thể (như quản lý học sinh, tin tức).
Ví dụ 2: Tạo View đầu tiên (views.py)
from django.http import HttpResponse
def index(request):
return HttpResponse("Chào mừng bạn đến với Web trường PCT!")
index nhận một yêu cầu (request) từ trình duyệt và trả về một phản hồi (response) bằng văn bản thuần túy.
Ví dụ 4: Sử dụng Template HTML
<html>
<body>
<h1>Danh sách môn học</h1>
<ul>
{% for mon in mon_hoc %}
<li>{{ mon }}</li>
{% endfor %}
</ul>
</body>
</html>
{% ... %} dùng cho logic (vòng lặp, điều kiện) và {{ ... }} dùng để hiển thị biến.
Ví dụ 6: Thiết kế Model (Lớp học)
from django.db import models
class HocSinh(models.Model):
ho_ten = models.CharField(max_length=100)
ngay_sinh = models.DateField()
diem_tb = models.FloatField()
def __str__(self):
return self.ho_ten
makemigrations.
Ví dụ 7: Kích hoạt trang Admin siêu tốc
from django.contrib import admin
from .models import HocSinh
admin.site.register(HocSinh)
Ví dụ 10: Logic ứng dụng To-Do List hoàn chỉnh
from django.shortcuts import render, redirect
from .models import Task
def task_list(request):
tasks = Task.objects.all() # Lấy tất cả công việc
if request.method == "POST":
new_task = request.POST.get("task_name")
Task.objects.create(name=new_task) # Lưu vào DB
return redirect('task_list')
return render(request, 'tasks.html', {'tasks': tasks})
🎯 Hướng phát triển nâng cao
Sau khi nắm vững 10 ví dụ này, học sinh có thể tự xây dựng trang Tra cứu điểm thi cho nhà trường bằng cách kết hợp Pandas (để nạp dữ liệu từ Excel) vào Django (để hiển thị lên Web).
Xử Lý Dữ Liệu Với Thư Viện Pandas
Biến Python thành công cụ thay thế Excel chuyên nghiệp
Lộ trình 10 ví dụ thực hành
- VD1: Tạo DataFrame đầu tiên
- VD2: Đọc dữ liệu từ file CSV/Excel
- VD3: Xem nhanh dữ liệu (Head/Tail)
- VD4: Chọn Cột và Dòng (Indexing)
- VD5: Lọc dữ liệu theo điều kiện
- VD6: Thêm và Sửa cột dữ liệu
- VD7: Xử lý dữ liệu trống (NaN)
- VD8: Thống kê mô tả (Describe)
- VD9: Gom nhóm dữ liệu (GroupBy)
- VD10: Xuất dữ liệu ra Excel
Giới thiệu chung
Pandas là thư viện mã nguồn mở cung cấp các cấu trúc dữ liệu hiệu suất cao (như DataFrame) giúp việc làm sạch, phân tích và xử lý dữ liệu trở nên cực kỳ đơn giản.
Ví dụ thực hành chi tiết
Ví dụ 1: Tạo DataFrame từ Dictionary
import pandas as pd
data = {
'Họ tên': ['An', 'Bình', 'Chi'],
'Điểm': [8.5, 9.0, 7.5],
'Lớp': ['12A1', '12A2', '12A1']
}
df = pd.DataFrame(data)
print(df)
pd.DataFrame(data): Chuyển đổi một từ điển (Dictionary) thành bảng dữ liệu có hàng và cột.- Mỗi Key trở thành tiêu đề cột, Value (danh sách) trở thành dữ liệu hàng.
Ví dụ 2: Đọc dữ liệu từ file Excel
# Đọc file Excel (Cần cài thêm openpyxl)
df = pd.read_excel('danh_sach_hoc_sinh.xlsx')
# Đọc file CSV
# df = pd.read_csv('du_lieu.csv')
print(df.info())
read_excel(): Hàm quyền lực nhất để lấy dữ liệu từ các báo cáo kế toán/nhà trường.df.info(): Xem tổng quan về kiểu dữ liệu và số lượng dòng không trống.
Ví dụ 5: Lọc dữ liệu theo điều kiện
# Lọc những học sinh có điểm >= 8.0
hoc_sinh_gioi = df[df['Điểm'] >= 8.0]
# Lọc học sinh lớp 12A1 có điểm trên 7
loc_pht = df[(df['Lớp'] == '12A1') & (df['Điểm'] > 7)]
print(loc_pht)
- Pandas sử dụng cơ chế Boolean Indexing để lọc.
- Ký hiệu
&đại diện cho điều kiện "VÀ",|cho điều kiện "HOẶC".
Ví dụ 9: Gom nhóm dữ liệu (GroupBy)
# Tính điểm trung bình theo từng lớp
diem_lop = df.groupby('Lớp')['Điểm'].mean()
# Đếm số lượng học sinh mỗi lớp
so_luong = df.groupby('Lớp')['Họ tên'].count()
print(diem_lop)
groupby(): Tương tự Pivot Table trong Excel, giúp tổng hợp dữ liệu cực nhanh.mean(),sum(),count(): Các hàm tính toán đi kèm sau khi gom nhóm.
Ví dụ 10: Xuất dữ liệu sau xử lý ra Excel
# Lưu kết quả lọc vào một file Excel mới
loc_pht.to_excel('ket_qua_loc.xlsx', index=False)
print("Đã xuất file thành công!")
to_excel(): Xuất DataFrame ra file.index=False: Loại bỏ cột số thứ tự mặc định của Pandas để file Excel trông sạch sẽ hơn.
Lập Trình Giao Diện Với Python Tkinter
Hệ thống bài giảng từ cơ bản đến ứng dụng thực tế (12 Ví dụ)
Mục lục nội dung
- VD1: Cửa sổ đầu tiên
- VD2: Nhãn (Label) & Màu sắc
- VD3: Nút bấm (Button)
- VD4: Ô nhập liệu (Entry)
- VD5: Máy tính cộng số
- VD6: Quản lý Layout với Grid
- VD7: Ô chọn (Checkbutton)
- VD8: Nút chọn (Radiobutton)
- VD9: Hộp thoại (Messagebox)
- VD10: Thanh cuộn & Text
- VD11: Vẽ đồ họa (Canvas)
- VD12: Đồng hồ kỹ thuật số
Kiến thức trọng tâm
Tkinter là thư viện chuẩn của Python dùng để tạo GUI. Để xây dựng một ứng dụng, chúng ta luôn đi theo trình tự: Khởi tạo -> Thêm Widget -> Bố trí -> Xử lý sự kiện.
Hệ thống ví dụ thực hành
Ví dụ 1: Cấu trúc khởi tạo CƠ BẢN
import tkinter as tk
root = tk.Tk()
root.title("Xin chào Tkinter")
root.geometry("300x200")
root.mainloop()
tk.Tk(): Tạo ra cửa sổ "cha" (root).geometry("WxH"): Định nghĩa kích thước cửa sổ.mainloop(): Giữ cửa sổ luôn hiển thị.
Ví dụ 2: Hiển thị Label & Định dạng
import tkinter as tk
root = tk.Tk()
lbl = tk.Label(root, text="Học Python tại Phan Chu Trinh", fg="blue", font=("Arial", 14, "bold"))
lbl.pack(pady=20)
root.mainloop()
fg: Màu chữ (Foreground).font: Định dạng phông chữ, cỡ chữ, kiểu chữ.pack(pady=20): Đặt widget vào cửa sổ và tạo khoảng cách trên-dưới 20px.
Ví dụ 5: Máy tính cộng số (Xử lý sự kiện)
import tkinter as tk
def tinh():
n1 = int(e1.get())
n2 = int(e2.get())
kq.config(text=f"Tổng là: {n1 + n2}")
root = tk.Tk()
e1 = tk.Entry(root); e1.pack()
e2 = tk.Entry(root); e2.pack()
btn = tk.Button(root, text="Cộng", command=tinh); btn.pack()
kq = tk.Label(root, text="Kết quả"); kq.pack()
root.mainloop()
e1.get(): Lấy giá trị từ ô nhập liệu (luôn là chuỗi).config(): Thay đổi thuộc tính (ở đây là thay đổi văn bản kết quả) của widget khi chương trình đang chạy.
Ví dụ 9: Hộp thoại thông báo (Messagebox)
import tkinter as tk
from tkinter import messagebox
def thong_bao():
messagebox.showinfo("Thông báo", "Bạn đã lưu dữ liệu thành công!")
root = tk.Tk()
tk.Button(root, text="Lưu", command=thong_bao).pack(pady=50)
root.mainloop()
messagebox.showinfo(tiêu đề, nội dung): Hiển thị cửa sổ pop-up thông báo.
Ví dụ 11: Vẽ đồ họa (Canvas) NÂNG CAO
import tkinter as tk
root = tk.Tk()
cv = tk.Canvas(root, width=200, height=200, bg="white")
cv.pack()
# Vẽ hình chữ nhật màu đỏ
cv.create_rectangle(50, 50, 150, 150, fill="red")
# Vẽ đường thẳng
cv.create_line(0, 0, 200, 200, fill="blue", width=3)
root.mainloop()
Canvas: Vùng không gian để vẽ hình đồ họa, biểu đồ.create_rectangle(x1, y1, x2, y2): Vẽ hình chữ nhật dựa trên tọa độ góc trên bên trái và góc dưới bên phải.
Ví dụ 12: Đồng hồ kỹ thuật số thực tế
import tkinter as tk
import time
def cap_nhat_gio():
chuoi_gio = time.strftime("%H:%M:%S")
lbl_clock.config(text=chuoi_gio)
lbl_clock.after(1000, cap_nhat_gio) # Gọi lại hàm sau 1 giây
root = tk.Tk()
root.title("Đồng hồ PCT")
lbl_clock = tk.Label(root, font=("Courier", 40), bg="black", fg="lime")
lbl_clock.pack()
cap_nhat_gio()
root.mainloop()
time.strftime("%H:%M:%S"): Lấy giờ hệ thống định dạng Giờ:Phút:Giây.after(ms, function): Kỹ thuật đệ quy giúp ứng dụng tự cập nhật mà không làm treo giao diện.
Tổng kết ứng dụng
Từ 12 ví dụ trên, bạn có thể kết hợp để tạo ra các sản phẩm như:
Tìm hiểu Thư viện Tkinter trong Python
Tài liệu hỗ trợ nâng cao cho học sinh & giáo viên
1.2. Cấu trúc cơ bản của chương trình Tkinter
Mọi chương trình GUI (Giao diện người dùng) với Tkinter đều tuân thủ các bước sau:
| Bước | Mô tả lệnh |
|---|---|
| 1. Import | import tkinter as tk |
| 2. Cửa sổ | root = tk.Tk() (Khởi tạo cửa sổ chính) |
| 3. Widget | Thêm Label, Button, Entry... |
| 4. Vòng lặp | root.mainloop() (Duy trì ứng dụng) |
import tkinter as tk
# Tạo cửa sổ chính
root = tk.Tk()
root.title("Chương trình Tkinter đầu tiên")
root.geometry("400x200") # Rộng x Cao
# Hiển thị cửa sổ và chờ thao tác
root.mainloop()
1.3. Widget trong Tkinter
Widget là "linh hồn" của giao diện. Dưới đây là các thành phần bạn sẽ dùng thường xuyên nhất:
| Widget | Chức năng |
|---|---|
| Label | Hiển thị văn bản hướng dẫn |
| Button | Nút thực hiện lệnh (Event Handling) |
| Entry | Ô nhập liệu 1 dòng (Username, Điểm số...) |
| Text | Nhập nội dung dài (Ghi chú, đề bài...) |
| Checkbutton | Lựa chọn nhiều mục (Trắc nghiệm nhiều đáp án) |
1.4 - 1.8. Các ví dụ thực hành tiêu biểu
Ví dụ 5: Máy tính cộng đơn giản
Chương trình cho phép nhập 2 số và hiển thị kết quả khi nhấn nút.
import tkinter as tk
def tinh_tong():
try:
# Lấy dữ liệu từ Entry và ép kiểu sang số
so1 = int(e1.get())
so2 = int(e2.get())
tong = so1 + so2
lbl_kq.config(text=f"Kết quả: {tong}")
except:
lbl_kq.config(text="Lỗi: Hãy nhập số!")
root = tk.Tk()
root.title("Máy tính Mini")
tk.Label(root, text="Nhập số thứ nhất:").pack()
e1 = tk.Entry(root)
e1.pack()
tk.Label(root, text="Nhập số thứ hai:").pack()
e2 = tk.Entry(root)
e2.pack()
btn = tk.Button(root, text="Tính Tổng", command=tinh_tong)
btn.pack(pady=10)
lbl_kq = tk.Label(root, text="Kết quả: ", font=("Arial", 12, "bold"))
lbl_kq.pack()
root.mainloop()
1.9. Các phương pháp bố trí giao diện
Để giao diện chuyên nghiệp, chúng ta thường dùng grid() (chia ô như Excel) thay vì pack().
import tkinter as tk
root = tk.Tk()
# Dòng 0
tk.Label(root, text="Tài khoản:").grid(row=0, column=0, padx=5, pady=5)
tk.Entry(root).grid(row=0, column=1)
# Dòng 1
tk.Label(root, text="Mật khẩu:").grid(row=1, column=0, padx=5, pady=5)
tk.Entry(root, show="*").grid(row=1, column=1)
root.mainloop()
1.10. Khi nào nên ứng dụng Tkinter?
Tkinter là lựa chọn số 1 cho các phần mềm nhỏ hỗ trợ giáo dục:
Thứ Sáu, 6 tháng 3, 2026
Khám Phá Cấu Trúc Layout Python Strings
Di chuột vào các thành phần bên trái để xem vị trí tương ứng trên giao diện.
Main Content Area
i Giải thích ý nghĩa các thành phần (Components)
1. <nav> (Thanh điều hướng)
Đóng vai trò như "Mục lục động". Trong học tập, nó giúp người dùng biết mình đang ở đâu và có thể nhảy nhanh đến các phần kiến thức khác nhau mà không cần cuộn trang.
2. <main> (Nội dung chính)
Đây là "trái tim" của bài học. Mọi kiến thức quan trọng về Python Strings đều nằm ở đây. Việc dùng thẻ <main> giúp trình duyệt và công cụ tìm kiếm hiểu đâu là phần quan trọng nhất.
3. Cấu trúc <section> theo trình tự học
- #tong-quan: Định nghĩa "Chuỗi là gì?" (Lý thuyết nền).
- #truc-quan: Xem chuỗi dưới dạng mảng/vị trí index (Hình ảnh hóa).
- #toan-tu: Cách cộng, nhân, cắt chuỗi (Công cụ xử lý).
- #luyen-tap & #thuc-hanh: Chuyển hóa kiến thức thành kỹ năng qua bài tập.
Tư duy lập trình Layout:
Cấu trúc flex-col md:flex-row bạn thấy ở trên giúp trang web tự thích nghi: Trên điện thoại, Menu sẽ nằm trên nội dung; trên máy tính, Menu sẽ nằm bên trái. Đây là tiêu chuẩn thiết kế hiện đại (Responsive Design).
Thứ Năm, 5 tháng 3, 2026
Chuyển dữ liệu thời gian trong Excel về số thực bằng VBA
Trong quá trình xử lý dữ liệu Excel, đôi khi chúng ta gặp trường hợp ô hiển thị dạng thời gian hoặc ngày giờ nhưng thực chất giá trị bên trong lại là một số thực. Điều này thường gây khó khăn khi cần tính toán hoặc xử lý dữ liệu hàng loạt.
Ví dụ một ô hiển thị:
Nhưng giá trị thực của nó trong Excel là:
Nguyên lý lưu trữ thời gian trong Excel
| Giá trị hiển thị | Giá trị thực |
|---|---|
| 24 giờ | 1 |
| 12 giờ | 0.5 |
| 6 giờ | 0.25 |
| 2 giờ 24 phút | 0.1 |
Do đó nếu dữ liệu của bạn đang hiển thị dạng thời gian nhưng cần xử lý dưới dạng số, chúng ta có thể dùng VBA để chuyển đổi tự động.
Giải pháp dùng VBA để chuyển đổi
Đoạn VBA dưới đây sẽ chuyển toàn bộ ô thời gian trong vùng được chọn sang số thực.
Bước 1: Mở VBA
Sau đó chọn:
Bước 2: Thêm đoạn code VBA
Dim c As Range
Dim rng As Range
Set rng = Selection
For Each c In rng
If IsDate(c.Value) Then
c.Value = CDbl(c.Value)
c.NumberFormat = "0.########"
End If
Next c
MsgBox "Đã chuyển thời gian sang số thực!"
End Sub
Cách sử dụng Macro
Bước 1: Chọn vùng dữ liệu cần chuyển.
Bước 2: Nhấn
Bước 3: Chọn macro:
Bước 4: Nhấn Run.
Kết quả sau khi chuyển đổi
| Trước khi chạy VBA | Sau khi chạy VBA |
|---|---|
| 1/5/1900 2:24:00 AM | 0.1 |
| 1/1/1900 12:00:00 PM | 0.5 |
| 1/1/1900 6:00:00 AM | 0.25 |
Ưu điểm của phương pháp này
- Tự động chuyển đổi hàng nghìn dòng dữ liệu.
- Tiết kiệm rất nhiều thời gian xử lý.
- Áp dụng cho mọi bảng dữ liệu Excel.
- Phù hợp cho thống kê, phân tích dữ liệu hoặc xử lý điểm số.
Kết luận
Trong Excel, thời gian chỉ là một dạng hiển thị của số thực. Hiểu được nguyên lý này giúp bạn xử lý dữ liệu nhanh hơn và chính xác hơn.
Việc sử dụng VBA để tự động chuyển đổi là một giải pháp rất hiệu quả khi làm việc với các bảng dữ liệu lớn.
Thứ Tư, 25 tháng 2, 2026
III. XÂU KÝ TỰ (STRING) - "XỬ LÝ VĂN BẢN"
Phần 3: Kỹ thuật xử lý chuỗi và chuẩn hóa dữ liệu - Đội tuyển HSG Phan Chu Trinh
Xâu ký tự thực chất là một "mảng của các ký tự". Tuy nhiên, trong Python, xâu ký tự có những phương thức xử lý cực mạnh giúp việc biến đổi văn bản trở nên đơn giản.
Yêu cầu: Nhập vào một họ tên có thể chứa khoảng trắng thừa ở đầu, cuối hoặc giữa các từ. Hãy chuyển đổi về dạng chuẩn (Viết hoa chữ cái đầu mỗi từ, các từ cách nhau đúng 1 dấu cách).
1. Mã nguồn Python Full (Tham khảo)
words = s.split()
# Bước 2: Viết hoa chữ cái đầu mỗi từ (capitalize)
cap_words = [w.capitalize() for w in words]
# Bước 3: Nối lại thành xâu hoàn chỉnh bằng dấu cách
result = ' '.join(cap_words)
return result
# Sử dụng name = " nguYễn vĂn aN " print(f"Kết quả: '{chuan_hoa_ho_ten(name)}'") # Output: "Nguyễn Văn An"
- Hàm
split()không tham số sẽ tự động gom các khoảng trắng liên tiếp thành 1 dấu phân cách. - Xâu ký tự trong Python là Immutable (không thể thay đổi trực tiếp từng ký tự), nên ta thường chuyển sang List rồi mới Join lại.
✨ CÔNG CỤ CHUẨN HÓA TÊN TRỰC TUYẾN
4. Tư duy lập trình
Trong các kỳ thi HSG, xâu ký tự thường xuất hiện trong các bài toán về Tần suất (kết hợp với Dictionary) hoặc Xử lý số lớn (BigNum). Việc nắm vững split() và join() giúp bạn tiết kiệm 50% thời gian viết code so với các ngôn ngữ cũ như Pascal hay C++.
II. MẢNG (LIST) - "DÃY NGĂN KÉO CHỨA ĐỒ"
Phần 2: Quản lý và xử lý dữ liệu tập trung - Đội tuyển HSG Phan Chu Trinh
Mảng là cấu trúc dữ liệu quan trọng nhất giúp chúng ta lưu trữ hàng triệu giá trị chỉ với một tên biến duy nhất.
Đề bài: Cho danh sách điểm của n học sinh. Tìm điểm cao nhất và đếm xem có bao nhiêu bạn đạt số điểm đó.
1. Mã nguồn Python tối ưu
def thong_ke_diem(ds_diem):
diem_max = max(ds_diem)
so_luong = ds_diem.count(diem_max)
return diem_max, so_luong
# Cách 2: Duyệt một vòng lặp (Tối ưu nhất cho dữ liệu lớn)
def tim_max_va_dem(ds_diem):
m = -1
c = 0
for x in ds_diem:
if x > m:
m = x; c = 1
elif x == m:
c += 1
return m, c
- Kiến thức: Truy xuất A[i], hàm
max(),count(). - Tư duy: Gom nhóm dữ liệu. Thay vì xử lý rời rạc, ta xử lý trên một tập hợp thống nhất.
- Độ phức tạp: $O(n)$. Với 1 triệu học sinh ($n=10^6$), Python chỉ mất khoảng 0.1s.
📊 MÔ PHỎNG QUẢN LÝ ĐIỂM HỌC SINH
Nhập số lượng học sinh bạn muốn giả lập (N):
3. Bài học về kỹ năng
Khi làm việc với mảng trong thi HSG Tin học, hãy luôn ưu tiên các hàm có sẵn của Python như sum(), max(), min(), sort() vì chúng được viết bằng ngôn ngữ C, giúp chương trình chạy nhanh hơn nhiều so với việc tự viết vòng lặp thủ công.
Bài đăng phổ biến
-
THI TRẮC NGHIỆM ONLINE Với thời gian không giới hạn, người học có thể tự kiểm tra, đánh giá năng lực, nội dung kiến thức cũng như dạn...
-
KẾT QUẢ HỌC SINH LÀM BÀI ĐỀ ÔN SỐ 1 https://docs.google.com/spreadsheets/d/e/2PACX-1vQksSwFLzZEUtz452O3U6QKypBVExJqnIEKu6fdGXdOzQcQX82...
-
KẾT QUẢ HỌC SINH LÀM BÀI ĐỀ SỐ 2 Đang tải…
-
KHẢO SÁT VÀ VẼ ĐỒ THỊ HÀM SỐ - C ập nhật liên tục TT Tên bài yêu cầu cần đạt Ghi chú 1 Tính đơn điệu củ...
-
CHUYÊN ĐỀ TOÁN 12 Hướng dẫn thực hiện thao tác: Nhấn nút trái chuột tại các chuyên đề để xem và tải tài liệu về Chương 1 - GT ...
-
NỘI DUNG BÀI HỌC 1) Phương pháp: 2) Bài tập đề nghị 3) Bổ trợ kiến thức và hướng dẫn giải 4) Xem Video hướng dẫn giải theo đ...
-
BG1. ĐẠO HÀM, DẤU CỦA ĐẠO HÀM BẬC NHẤT VÀ TÍNH ĐỒNG BIẾN, NGHỊCH BIẾN CỦA HÀM SỐ BG1. ĐẠO HÀM, DẤU CỦA ĐẠO HÀM BẬC NHẤT VÀ TÍNH ĐỒNG B...
-
BG1. MÔN TOÁN 12. KHỐI ĐA DIỆN BÀI GIẢNG CỰC TRỊ CỦA HÀM SỐ BÀI GIẢNG MỘT SỐ VẤN ĐỀ VỀ SỰ BIẾN THIÊN CỦA HÀM SỐ ...
-
BG1. MÔN TOÁN 12. NGUYÊN HÀM BG1. MÔN TOÁN 12. THỂ TÍCH KHỐI ĐA DIỆN
📌 Danh sách bình luận