Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .idea/.name

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 5 additions & 6 deletions .idea/Python.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 2 additions & 5 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added Chuong05_Book.rar
Binary file not shown.
Empty file added Chuong05_Book/Chuong05_Bai3.py
Empty file.
75 changes: 75 additions & 0 deletions Chuong05_Book/Chuong05_Book.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
"""
Nguyễn Thanh Hậu
MSSV: 24-0-00627
Chương 5 - Bài 2: Quản lý thời gian các hoạt động trong ngày
"""

def them_thoi_gian(hoat_dong, so_phut, bang_thoi_gian):
"""
Thêm thời gian vào một hoạt động.

Input:
- hoat_dong (str): tên hoạt động.
- so_phut (int): số phút thêm vào.
- bang_thoi_gian (dict): dictionary chứa dữ liệu thời gian.

Output:
- Không có (dữ liệu được cập nhật trong dict truyền vào).
"""
if hoat_dong in bang_thoi_gian:
bang_thoi_gian[hoat_dong] += so_phut
else:
bang_thoi_gian[hoat_dong] = so_phut

def thong_ke_gio(bang_thoi_gian):
"""
Thống kê thời gian của các hoạt động theo giờ.

Input:
- bang_thoi_gian (dict): dictionary chứa hoạt động và số phút.

Output:
- dict: dictionary mới với thời gian được chuyển sang giờ (float).
"""
return {hd: round(phut / 60, 2) for hd, phut in bang_thoi_gian.items()}

def hoat_dong_max_min(bang_thoi_gian):
"""
Tìm 2 hoạt động nhiều thời gian nhất và ít thời gian nhất.

Input:
- bang_thoi_gian (dict): dữ liệu hoạt động và số phút.

Output:
- tuple: gồm 2 list (2 hoạt động nhiều nhất, 2 hoạt động ít nhất)
"""
sap_xep = sorted(bang_thoi_gian.items(), key=lambda x: x[1], reverse=True)
hoat_dong_nhieu = sap_xep[:2]
hoat_dong_it = sap_xep[-2:] if len(sap_xep) >= 2 else sap_xep
return hoat_dong_nhieu, hoat_dong_it

def main():
bang = {}

# Nhập dữ liệu mẫu
them_thoi_gian("Học", 300, bang)
them_thoi_gian("Ngủ", 420, bang)
them_thoi_gian("Chơi", 90, bang)
them_thoi_gian("Di chuyển", 50, bang)
them_thoi_gian("Thể dục", 60, bang)

print("\n--- Thống kê theo giờ ---")
gio = thong_ke_gio(bang)
for hd, h in gio.items():
print(f"{hd}: {h} giờ")

nhieu, it = hoat_dong_max_min(bang)
print("\n2 hoạt động nhiều thời gian nhất:")
for hd, p in nhieu:
print(f"{hd}: {p} phút")

print("\n2 hoạt động ít thời gian nhất:")
for hd, p in it:
print(f"{hd}: {p} phút")

main()
32 changes: 32 additions & 0 deletions Chuong05_Book/Chuong05_bai1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""
Nguyễn Thanh Hậu
MSSV: 24-0-00627
Chương 5 - Bài 1: Đếm số lần xuất hiện của các chữ cái trong một câu
"""

def dem_chu_cai(cau):
"""
Đếm số lần xuất hiện của các chữ cái trong câu (bỏ qua dấu câu và khoảng trắng).

Input:
- cau (str): chuỗi câu cần đếm ký tự.

Output:
- dict: dictionary chứa ký tự (chữ cái) làm key, số lần xuất hiện làm value.
"""
ket_qua = {}
for char in cau:
if char.isalpha(): # chỉ đếm chữ cái
if char in ket_qua:
ket_qua[char] += 1
else:
ket_qua[char] = 1
return ket_qua

def main():
cau = "An eye for an eye makes the whole world blind. – Mahatma Gandhi"
thong_ke = dem_chu_cai(cau)
for chu, so_lan in sorted(thong_ke.items()):
print(f"'{chu}': {so_lan} lần")

main()
Binary file added Chuong06_Book.rar
Binary file not shown.
32 changes: 32 additions & 0 deletions Chuong06_Book/Chuong06_Bai_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""
Nguyễn Thanh Hậu - Chương 6 - Bài 1

Chức năng:
- Kiểm tra một thiết bị có tiết kiệm điện hay không dựa trên điện năng tiêu thụ mỗi ngày.

Điều kiện:
- Thiết bị tiêu thụ < 10 kWh/ngày → được gọi là "tiết kiệm điện".
"""

def kiem_tra_tiet_kiem(p):
"""
Hàm kiểm tra thiết bị có tiết kiệm điện hay không.

Input:
p (float): Điện năng tiêu thụ mỗi ngày (kWh)

Output:
None: In ra thông báo kết luận
"""
if p < 10:
print("Thiết bị tiết kiệm điện.")
else:
print("Thiết bị không tiết kiệm điện.")

# Ví dụ sử dụng
def main():
dien_nang = float(input("Nhập điện năng tiêu thụ mỗi ngày (kWh): "))
kiem_tra_tiet_kiem(dien_nang)

# Gọi hàm chính
main()
43 changes: 43 additions & 0 deletions Chuong06_Book/Chuong06_Bai_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
"""
Nguyễn Thanh Hậu - Chương 6 - Bài 2

Chức năng:
- Trả về số sao tiết kiệm năng lượng dựa vào điện năng tiêu thụ mỗi ngày.

Quy định số sao:
+ P < 2 → 5 sao
+ 2 ≤ P < 4 → 4 sao
+ 4 ≤ P < 6 → 3 sao
+ 6 ≤ P < 10 → 2 sao
+ P ≥ 10 → 1 sao
"""

def tinh_so_sao(p):
"""
Tính số sao tiết kiệm năng lượng cho thiết bị.

Input:
p (float): Điện năng tiêu thụ mỗi ngày (kWh)

Output:
int: Số sao tiết kiệm (1 đến 5)
"""
if p < 2:
return 5
elif p < 4:
return 4
elif p < 6:
return 3
elif p < 10:
return 2
else:
return 1

# Ví dụ sử dụng
def main():
dien_nang = float(input("Nhập điện năng tiêu thụ mỗi ngày (kWh): "))
so_sao = tinh_so_sao(dien_nang)
print("Số sao tiết kiệm năng lượng:", so_sao)

# Gọi hàm chính
main()
70 changes: 70 additions & 0 deletions Chuong06_Book/Chuong06_Bai_3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
"""
Nguyễn Thanh Hậu - Chương 6 - Bài 3

Chức năng:
Kiểm tra một thiết bị có tiết kiệm điện hay không,
dựa vào số sao tiết kiệm năng lượng tính từ hàm bài 2.

Quy định:
- Gọi lại hàm tính số sao từ bài 2.
- Nếu số sao < 3 → không tiết kiệm điện.
- Ngược lại → tiết kiệm điện.

Input:
p (float): điện năng tiêu thụ mỗi ngày (kWh)

Output:
In ra thông báo tương ứng.
"""

def tinh_so_sao(p):
"""
Tính số sao tiết kiệm năng lượng.

Input:
p (float): điện năng tiêu thụ mỗi ngày (kWh)

Output:
(int): số sao tiết kiệm (1 đến 5)
"""
if p < 2:
return 5
elif p < 4:
return 4
elif p < 6:
return 3
elif p < 10:
return 2
else:
return 1

def kiem_tra_tiet_kiem(p):
"""
Kiểm tra thiết bị có tiết kiệm điện không,
dựa vào số sao trả về từ hàm tinh_so_sao().

Input:
p (float): điện năng tiêu thụ mỗi ngày (kWh)

Output:
In ra thông báo tiết kiệm hoặc không tiết kiệm.
"""
so_sao = tinh_so_sao(p)
if so_sao < 3:
print("Thiết bị KHÔNG tiết kiệm điện.")
else:
print("Thiết bị tiết kiệm điện.")

def main():
"""
Hàm chính: nhập vào điện năng tiêu thụ,
kiểm tra và in kết quả ra màn hình.
"""
try:
p = float(input("Nhập điện năng tiêu thụ mỗi ngày (kWh): "))
kiem_tra_tiet_kiem(p)
except ValueError:
print("Vui lòng nhập một số hợp lệ.")

# Gọi hàm main
main()
46 changes: 46 additions & 0 deletions Chuong06_Book/Chuong06_Bai_4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
"""
Nguyễn Thanh Hậu - Chương 6 - Bài 4

Chức năng:
Tìm các giá trị tốc độ quay nhỏ hơn một giá trị min trong danh sách,
và trả về cả giá trị đó lẫn chỉ số (index) tương ứng.

Input:
speeds (list of int): danh sách tốc độ quay của động cơ
min_value (int): giá trị tốc độ tối thiểu để so sánh

Output:
(list): danh sách tuple dạng (giá trị, chỉ số) với các tốc độ nhỏ hơn min
"""

def tim_toc_do_thap(speeds, min_value):
"""
Tìm các tốc độ quay nhỏ hơn min_value và chỉ số của chúng.

Input:
speeds (list of int): danh sách tốc độ quay
min_value (int): giá trị tối thiểu

Output:
result (list of tuple): mỗi tuple gồm (giá trị, chỉ số)
"""
result = []
for i in range(len(speeds)):
if speeds[i] < min_value:
result.append((speeds[i], i))
return result

def main():
"""
Hàm chính để nhập dữ liệu và hiển thị kết quả.
"""
speeds = [1000, 950, 1200, 850, 1100, 800]
min_value = 1000
ket_qua = tim_toc_do_thap(speeds, min_value)

print("Các tốc độ quay nhỏ hơn", min_value, "và chỉ số tương ứng:")
for value, index in ket_qua:
print(f"Giá trị: {value} - Vị trí: {index}")

# Gọi hàm main
main()
Loading