Em hãy quan sát chương trình bên và cho biết kết quả hiển thị trên màn hình là gì?

Em hãy quan sát chương trình bên và cho biết kết quả hiển thị trên màn hình là gì?

Hãy cho biết sự khác biệt khi dùng từ khoá global cho biến toàn cục.
Thảo luận (1)Hướng dẫn giải- Biến cục bộ (Local Variable): Không sử dụng từ khóa global, biến được khai báo trong hàm chỉ có hiệu lực trong hàm đó. Thay đổi giá trị của biến cục bộ không ảnh hưởng đến biến toàn cục.
- Biến toàn cục (Global Variable): Sử dụng từ khóa global, em có thể truy cập và sửa đổi giá trị của biến toàn cục từ bên trong hàm. Điều này cho phép em duy trì trạng thái của biến toàn cục trong suốt chương trình.
(Trả lời bởi Nguyễn Quốc Đạt)
Hãy cho biết kết quả in ra màn hình của chương trình sau:

Thảo luận (1)Hướng dẫn giải-Phân tích từng bước chương trình này để xác định kết quả in ra màn hình:
1. def f(x, y):: Định nghĩa một hàm tên là f nhận vào hai tham số x và y.
2. n = 3: Gán giá trị 3 cho biến n bên trong hàm f. Đây là một biến cục bộ, chỉ tồn tại trong phạm vi hàm f.
3. a = n + 2*x + y: Tính giá trị của a dựa trên các tham số x, y và biến cục bộ n.
4. print(n): In ra giá trị của biến cục bộ n (lúc này là 3).
5. return a: Trả về giá trị của a.
6. n = 7: Gán giá trị 7 cho biến n bên ngoài hàm f. Đây là một biến toàn cục.
7. print(f(2, 3)): Gọi hàm f với x = 2 và y = 3.
Trong hàm f, n được gán bằng 3.
a được tính: a = 3 + 2*2 + 3 = 10.
Hàm f in ra n (3) và trả về a (10).
Lệnh print bên ngoài in ra giá trị trả về của f, tức là 10.
8.print(n): In ra giá trị của biến toàn cục n (lúc này là 7).
- Kết quả in ra màn hình:
3
10
7
(Trả lời bởi Nguyễn Quốc Đạt)
Hãy nêu ví dụ về một bài toán trong thực tế có sử dụng hàm để viết chương trình.
Thảo luận (1)Hướng dẫn giảiGiải quyết bằng hàm:
def tinh_tien_dien(so_kwh):
"""Tính tiền điện dựa trên số kWh tiêu thụ."""
if so_kwh <= 50:
tien = so_kwh * 1678
elif so_kwh <= 100:
tien = 50 * 1678 + (so_kwh - 50) * 1734
elif so_kwh <= 200:
tien = 50 * 1678 + 50 * 1734 + (so_kwh - 100) * 2014
# ... (xử lý các bậc khác)
else :
tien = 0
return tien
# Chương trình chính
kwh = int(input("Nhập số kWh tiêu thụ: "))
tien_dien = tinh_tien_dien(kwh)
print("Tiền điện cần thanh toán:", tien_dien, "đồng")
Giải thích:
Hàm tinh_tien_dien(so_kwh):
Nhận vào số kWh tiêu thụ (so_kwh) làm đầu vào.
Sử dụng cấu trúc if-elif-else để xác định bậc thang giá điện phù hợp.
Tính toán số tiền điện tương ứng và gán cho biến tien.
Trả về giá trị của biến tien.
Chương trình chính:
Nhập số kWh tiêu thụ từ người dùng.
Gọi hàm tinh_tien_dien để tính tiền điện.
In kết quả ra màn hình.
Lợi ích của việc sử dụng hàm:
Tái sử dụng mã: Hàm tinh_tien_dien có thể được sử dụng lại nhiều lần với các giá trị so_kwh khác nhau.
Dễ đọc và bảo trì: Chương trình trở nên dễ đọc và dễ hiểu hơn nhờ việc chia nhỏ thành các phần có chức năng rõ ràng.
Chia để trị: những bài toán phức tạp có thể chia nhỏ thành các bài toán nhỏ hơn, và mỗi bài toán nhỏ hơn có thể được giải quyết bằng một hàm.
(Trả lời bởi Nguyễn Quốc Đạt)
Biến được khai báo trong hàm gọi là:
A. Tham số. B. Đối số.
C. Biến cục bộ. D. Biến toàn cục.
Thảo luận (1)Hướng dẫn giảiC. Biến cục bộ
(Trả lời bởi Nguyễn Quốc Đạt)
Giá trị truyền cho hàm khi gọi hàm được gọi là:
A. Tham số. B. Đối số.
C. Biến cục bộ. D. Biến toàn cục.
Thảo luận (1)Hướng dẫn giảiB. Đối số
(Trả lời bởi Nguyễn Quốc Đạt)
Hãy xác định biến toàn cục, biến cục bộ, tham số, đối số của chương trình sau:
1 def giaiThua(n):
2 gt = 1
3 for i in range(2,n+1):
4 gt *= i
5 return gt
6 n = int(input("Nhập số n: "))
7 print(f"Giai thừa của {n} là {giaiThua(n)}.")
Thảo luận (1)Hướng dẫn giải*Chương trình:
def giaiThua(n):
gt = 1
for i in range(2, n+1):
gt *= i
return gt
n = int(input("Nhập số n: "))
print(f'Giai thừa của {n} là {giaiThua(n)}.')
*Giải thích:
- Biến toàn cục:
n (dòng 6): Biến này được khai báo bên ngoài hàm giaiThua và có thể được truy cập từ bất kỳ đâu trong chương trình.
- Biến cục bộ:
gt (dòng 2): Biến này được khai báo bên trong hàm giaiThua và chỉ có thể được truy cập bên trong hàm đó.
i (dòng 3): Biến này được khai báo trong vòng lặp for bên trong hàm giaiThua và chỉ có thể được truy cập bên trong vòng lặp đó.
- Tham số:
n (dòng 1): Tham số là biến được khai báo trong định nghĩa hàm giaiThua. Nó đại diện cho giá trị được truyền vào hàm.
- Đối số:
n (dòng 7): Đối số là giá trị thực tế được truyền cho hàm giaiThua khi hàm được gọi. Trong trường hợp này, đó là giá trị của biến n đã được nhập từ người dùng.
(Trả lời bởi Nguyễn Quốc Đạt)
Sau khi đã được học về biến toàn cục và biến cục bộ, Khánh muốn sử dụng biến toàn cục trong chương trình tính tổng các số nguyên tố nhỏ hơn hoặc bằng n, với n là số tự nhiên lớn hơn 2. Ví dụ, với n = 10, các số nguyên tố nhỏ hơn hoặc bằng 10 là 2, 3, 5, 7. Tổng các số nguyên tố này là 17.
Yêu cầu: Viết chương trình tính tổng các số nguyên tố nhỏ hơn hoặc bằng n, với n là số tự nhiên lớn hơn 2, có sử dụng biến toàn cục.
Dữ liệu vào: Số tự nhiên n > 2.
Dữ liệu ra: Tổng S của các số nguyên tố nhỏ hơn hoặc bằng n.
Thảo luận (1)Hướng dẫn giải*Chương trình:
# Biến toàn cục để lưu tổng các số nguyên tố
tong_so_nguyen_to = 0
def la_so_nguyen_to(k):
"""Kiểm tra xem k có phải là số nguyên tố không."""
if k < 2:
return False
for i in range(2, int(k**0.5) + 1):
if k % i == 0:
return False
return True
def tinh_tong_so_nguyen_to(n):
"""Tính tổng các số nguyên tố nhỏ hơn hoặc bằng n."""
global tong_so_nguyen_to # Sử dụng biến toàn cục
for i in range(2, n + 1):
if la_so_nguyen_to(i):
tong_so_nguyen_to += i
# Chương trình chính
n = int(input("Nhập số tự nhiên n (n > 2): "))
tinh_tong_so_nguyen_to(n)
print("Tổng các số nguyên tố nhỏ hơn hoặc bằng", n, "là:", tong_so_nguyen_to)
*Giải thích:
- Biến toàn cục tong_so_nguyen_to:
+ Được khai báo bên ngoài các hàm, do đó nó là biến toàn cục.
+ Ban đầu được gán giá trị 0.
+ Sẽ được sử dụng để lưu tổng các số nguyên tố.
- Hàm la_so_nguyen_to(k):
+ Kiểm tra xem một số k có phải là số nguyên tố hay không.
+ Trả về True nếu k là số nguyên tố, ngược lại trả về False.
- Hàm tinh_tong_so_nguyen_to(n):
+ Nhận vào số n làm tham số.
+ Sử dụng global tong_so_nguyen_to để khai báo rằng hàm này sẽ sử dụng biến toàn cục tong_so_nguyen_to.
+ Duyệt qua các số từ 2 đến n.
+ Với mỗi số, gọi hàm la_so_nguyen_to để kiểm tra xem nó có phải là số nguyên tố hay không.
+ Nếu là số nguyên tố, cộng nó vào biến tong_so_nguyen_to.
- Chương trình chính:
+ Nhập giá trị n từ người dùng.
+ Gọi hàm tinh_tong_so_nguyen_to(n) để tính tổng các số nguyên tố.
+ In kết quả ra màn hình.
*Lưu ý:
- Việc sử dụng global cho phép hàm tinh_tong_so_nguyen_to thay đổi giá trị của biến toàn cục tong_so_nguyen_to.
- Sử dụng biến toàn cục có thể giúp chương trình ngắn gọn hơn trong một số trường hợp, nhưng cũng có thể làm cho chương trình khó hiểu và khó bảo trì hơn nếu lạm dụng.
(Trả lời bởi Nguyễn Quốc Đạt)