Em hãy quan sát và cho nhận xét về các cách viết chương trình tìm ước số chung lớn nhất của hai số nguyên dương a, b cho trước sau đây:

Em hãy quan sát và cho nhận xét về các cách viết chương trình tìm ước số chung lớn nhất của hai số nguyên dương a, b cho trước sau đây:

Quan sát đoạn lệnh sau và cho biết kết quả in ra màn hình.
# Các hàm tính CV
def tinhCV1(a, b):
cV = (a + b) * 2
return cV
def tinhCV2(a):
cV = a * 4
return cV
# Chương trình chính
print(tinhCV1(5, 10))
print(tinhCV2(5))
Thảo luận (1)Hướng dẫn giải- Chương trình này định nghĩa hai hàm tính chu vi (CV):
+ tinhCV1(a, b): Tính chu vi hình chữ nhật với chiều dài a và chiều rộng b.
+ tinhCV2(a): Tính chu vi hình vuông với cạnh a.
- Sau đó, chương trình gọi hai hàm này và in kết quả ra màn hình:
print(tinhCV1(5, 10)):
+ Gọi hàm tinhCV1 với a = 5 và b = 10.
+ Hàm này tính CV = (5 + 10) * 2 = 30.
+ In ra 30.
print(tinhCV2(5)):
+ Gọi hàm tinhCV2 với a = 5.
+ Hàm này tính CV = 5 * 4 = 20.
+ In ra 20.
- Vậy kết quả in ra màn hình là:
30
20
(Trả lời bởi Nguyễn Quốc Đạt)
Em hãy cho biết kết quả của các hàm có sẵn trong thư viện math: pow(2, 3), gcd(8, 16), sqrt(16)
Thảo luận (1)Hướng dẫn giảimath.pow(2, 3):
1. Hàm pow(x, y) trả về giá trị của x mũ y.
2. Trong trường hợp này, math.pow(2, 3) sẽ trả về 2 mũ 3, tức là 8.0. Lưu ý rằng kết quả trả về là một số thực dấu phẩy động (float).
math.gcd(8, 16):
1. Hàm gcd(a, b) trả về ước số chung lớn nhất (GCD) của a và b.
2. Trong trường hợp này, math.gcd(8, 16) sẽ trả về 8, vì 8 là ước số chung lớn nhất của 8 và 16.
math.sqrt(16):
1. Hàm sqrt(x) trả về căn bậc hai của x.
2. Trong trường hợp này, math.sqrt(16) sẽ trả về 4.0. Lưu ý rằng kết quả trả về là một số thực dấu phẩy động (float).
Tóm lại, kết quả của các hàm là:
- math.pow(2, 3): 8.0
- math.gcd(8, 16): 8
- math.sqrt(16): 4.0
(Trả lời bởi Nguyễn Quốc Đạt)
Quan sát hàm tinhTongSo() và hàm tinhTichSo() dưới đây, em hãy giải thích mỗi câu lệnh của hàm sẽ thực hiện công việc gì và ý nghĩa giá trị trả về của mỗi hàm.
def tinhTongSo(n):
tongSo = 0
m = len(str(n))
for i in range(m):
if i % 2 == 0 and len(str(i)) == m:
tongSo += i
return tongSo
def tinhTichSo(s):
tichSo = 1
kt = len(str(s))
for i in str(s):
tichSo = tichSo * int(i)
tichSo = tichSo * int(kt)
return tichSo
Thảo luận (1)Hướng dẫn giải*Hàm tinhTongSo(n)
+ def tinhTongSo(n):: Định nghĩa một hàm tên là tinhTongSo nhận vào một tham số n.
+ tongSo = 0: Khởi tạo biến tongSo với giá trị ban đầu là 0, biến này dùng để lưu tổng các số thỏa mãn điều kiện.
+ m = len(str(n)): Chuyển n thành chuỗi, lấy độ dài của chuỗi đó và gán cho biến m. m ở đây là số chữ số của n.
+ for i in range(n):: Bắt đầu vòng lặp for từ 0 đến n-1.
+ if i % 2 == 0 and len(str(i)) < m:: Kiểm tra hai điều kiện:
i % 2 == 0: i là số chẵn.len(str(i)) < m: Số chữ số của i nhỏ hơn số chữ số của n.+ tongSo = tongSo + i: Nếu cả hai điều kiện trên đều đúng, cộng i vào biến tongSo.
+ return tongSo: Trả về giá trị của biến tongSo.
=> Ý nghĩa giá trị trả về: Hàm này trả về tổng của tất cả các số chẵn nhỏ hơn n và có số chữ số ít hơn số chữ số của n.
*Hàm tinhTichSo(n)
+ def tinhTichSo(n):: Định nghĩa một hàm tên là tinhTichSo nhận vào một tham số n.
+ tichSo = 1: Khởi tạo biến tichSo với giá trị ban đầu là 1, biến này dùng để lưu tích các chữ số của n.
+ s = str(n): Chuyển n thành chuỗi và gán cho biến s.
+ for kt in s:: Bắt đầu vòng lặp for duyệt qua từng ký tự kt trong chuỗi s.
+ tichSo = tichSo * int(kt): Chuyển ký tự kt thành số nguyên và nhân vào biến tichSo.
+ return tichSo: Trả về giá trị của biến tichSo.
=> Ý nghĩa giá trị trả về: Hàm này trả về tích của tất cả các chữ số trong số n.
(Trả lời bởi Nguyễn Quốc Đạt)
Viết chương trình nhập ba số nguyên dương từ bàn phím, tìm ước chung lớn nhất của ba số nguyên dương này và in kết quả ra màn hình.
Dữ liệu vào: Ba số nguyên dương.
Dữ liệu ra: Số là ước chung lớn nhất của ba số nguyên dương.
Ví dụ minh hoạ cho kết quả chạy chương trình:
| Thông tin nhập | Kết quả hiển thị |
|---|---|
| Nhập ba số nguyên dương: 12 21 18 | Ước chung lớn nhất là: 6 |
Gợi ý: Sử dụng hàm gcd() trong thư viện math để tìm ước chung lớn nhất của hai số nguyên. Nhập vào ba số nguyên dương a, b và c. Tìm ước chung lớn nhất của a, b và gọi là d. Cuối cùng, tìm ước chung lớn nhất của d, c và in kết quả ra màn hình.
Thảo luận (1)Hướng dẫn giải*Chương trình:
import math
# Nhập ba số nguyên dương
a = int(input("Nhập số nguyên dương a: "))
b = int(input("Nhập số nguyên dương b: "))
c = int(input("Nhập số nguyên dương c: "))
# Tìm ƯCLN của a và b
d = math.gcd(a, b)
# Tìm ƯCLN của d và c
uoc_chung_lon_nhat = math.gcd(d, c)
# In kết quả ra màn hình
print("ƯCLN của ba số", a, ",", b, "và", c, "là:", uoc_chung_lon_nhat)
*Giải thích chương trình:
- Nhập số: Chương trình sử dụng input() để nhận ba số nguyên dương từ người dùng.
- Tìm ƯCLN:
+ Đầu tiên, tìm ƯCLN của hai số a và b bằng cách sử dụng hàm math.gcd().
+ Sau đó, tìm ƯCLN của kết quả d và số c.
+ In kết quả: Kết quả cuối cùng được in ra màn hình, cho biết ƯCLN của ba số đã nhập.
*Ghi chú: Đảm bảo rằng người dùng nhập vào các số nguyên dương, nếu không, có thể thêm kiểm tra để đảm bảo tính hợp lệ của dữ liệu đầu vào.
(Trả lời bởi Nguyễn Quốc Đạt)
Để tính diện tích của một khu đất có hình dạng bất kì, ta chia nhỏ khu đất này thành các hình tam giác. Sử dụng công thức Heron để tính diện tích từng tam giác dựa trên độ dài các cạnh. Cuối cùng, tổng diện tích của các hình tam giác này là diện tích của khu đất.
Dưới đây là công thức Heron để tính diện tích S của hình tam giác với độ dài ba cạnh a, b, c và p là nửa chu vi của hình tam giác: \(S=\sqrt{\text{(p(p – a)(p – b)(p – c))}}\)
Yêu cầu: Viết chương trình tính diện tích của hình tam giác khi biết độ dài của ba cạnh.
Dữ liệu vào: Ba số thực dương là độ dài của ba cạnh.
Dữ liệu ra: Diện tích của hình tam giác.
Ví dụ minh hoạ cho kết quả chạy chương trình:
| Thông tin nhập | Kết quả hiển thị |
|---|---|
| Nhập độ dài cạnh a: 3Nhập độ dài cạnh b: 4Nhập độ dài cạnh c: 5 | Diện tích của tam giác là: 6.00 |
Gợi ý: Sử dụng hàm sqrt() trong thư viện math để tính căn bậc 2 của các số thực dương. Để a, b, c là ba cạnh của tam giác thì: a > 0, b > 0, c > 0 và tổng 2 cạnh bất kì phải lớn hơn cạnh còn lại. Áp dụng công thức Heron để tính diện tích và in kết quả ra màn hình.
Thảo luận (1)Hướng dẫn giải*Chương trình:
import math
# Nhập độ dài của ba cạnh
a = float(input("Nhập độ dài cạnh a (dương): "))
b = float(input("Nhập độ dài cạnh b (dương): "))
c = float(input("Nhập độ dài cạnh c (dương): "))
# Kiểm tra điều kiện để a, b, c có thể tạo thành tam giác
if a <= 0 or b <= 0 or c <= 0:
print("Độ dài các cạnh phải là số thực dương.")
elif a + b <= c or a + c <= b or b + c <= a:
print("Ba cạnh nhập vào không thể tạo thành một tam giác.")
else:
# Tính nửa chu vi p
p = (a + b + c) / 2
# Tính diện tích S theo công thức Heron
S = math.sqrt(p * (p - a) * (p - b) * (p - c))
# In kết quả ra màn hình
print("Diện tích của hình tam giác là:", S)
*Giải thích chương trình:
- Nhập độ dài các cạnh: Chương trình sử dụng input() để nhập độ dài của ba cạnh a, b, c và chuyển đổi chúng thành số thực.
- Kiểm tra điều kiện:
+ Đảm bảo rằng các cạnh a, b, c đều là số thực dương.
+ Kiểm tra điều kiện tam giác: tổng của hai cạnh bất kỳ phải lớn hơn cạnh còn lại.
+ Tính nửa chu vi: Sử dụng công thức p=(a+b+c)/2
+ Tính diện tích: Sử dụng công thức Heron để tính diện tích S=√p(p−a)(p−b)(p−c)
+ In kết quả: Kết quả diện tích được in ra màn hình.
- Ghi chú: Chương trình đã bao gồm các kiểm tra cần thiết để đảm bảo rằng các cạnh nhập vào có thể tạo thành một hình tam giác hợp lệ.
(Trả lời bởi Nguyễn Quốc Đạt)