Tên hàm phải khớp công thức
Cho các điện trở `3 Ω, 6 Ω, 8 Ω`. Khi **nối tiếp**, điện trở tương đương là `3+6+8=17 Ω`. Khi **song song**, `1/R = 1/3+1/6+1/8 = 5/8`, nên `R=1.6 Ω`. Vì hai công thức khác nhau, tên hàm phải cho biết đúng cách mắc mà hàm đang tính. Mỗi điện trở của bài phải dương; dãy rỗng không mô tả mạch cần tính trong nhiệm vụ này.
Hai hàm cho hai công thức
```python
from math import isfinite
def mac_noi_tiep(ds_dien_tro):
if not ds_dien_tro or any(not isfinite(r) or r <= 0 for r in ds_dien_tro):
raise ValueError("Cần các điện trở dương")
return sum(ds_dien_tro)
def mac_song_song(ds_dien_tro):
if not ds_dien_tro or any(not isfinite(r) or r <= 0 for r in ds_dien_tro):
raise ValueError("Cần các điện trở dương")
return 1 / sum(1 / r for r in ds_dien_tro)
```
Đặt hai hàm trong tệp `cong_thuc_ly.py`, rồi `import cong_thuc_ly` ở chương trình chính. Với `ds = [3, 6, 8]`, `cong_thuc_ly.mac_noi_tiep(ds)` trả `17` và `cong_thuc_ly.mac_song_song(ds)` trả `1.6`. Có thể dùng `round(..., 2)` ở lệnh in để trình bày hai chữ số tối đa; hàm vẫn trả số thực để dùng tiếp.
Bài luyện
Ba điện trở 3, 6, 8 Ω mắc nối tiếp có điện trở tương đương nào?
Nối tiếp cộng các điện trở.
Đây là kết quả song song.
8 chỉ là một điện trở.
3 chỉ là một điện trở.
Lời giải
Mắc nối tiếp có R=3+6+8=17 Ω.
Bài luyện
Ba điện trở 3, 6, 8 Ω mắc song song có điện trở tương đương nào?
Đó là mắc nối tiếp.
1/R=1/3+1/6+1/8=5/8 nên R=8/5=1.6.
Không đúng phép nghịch đảo.
24 chỉ là mẫu chung.
Lời giải
Quy đồng các nghịch đảo được 5/8; lấy nghịch đảo ra 8/5=1.6 Ω.
Bài luyện
Vì sao hàm song song kiểm mọi r>0 trước khi tính?
r=0 gây chia cho 0; giá trị không dương ngoài phạm vi bài.
Nối tiếp dùng tổng.
Âm không tự đổi dấu.
Python cộng được 0.
Lời giải
Công thức song song lấy nghịch đảo từng r, nên r=0 gây lỗi; bài còn quy định điện trở dương.
Đang học