Cho đoạn chương trình, hãy cho biết biến nào là biến địa phương?
a = [3, 4, 5,…
a = [3, 4, 5, 6, 7, 8]
def findX(x):
i = 0
while i < len(a):
if a[i] == x:
return i
i = i+1
return -1
k = 6
print(findX(k))
A. biến a B. biến k C. biến x D. biến i
Để giải được bài tập này, trước hết chúng ta cần ôn lại kiến thức về biến toàn cục và biến địa phương.
1. Lý thuyết cần nhớ
Trong một chương trình, chúng ta có hai loại biến chính dựa vào phạm vi hoạt động của chúng:
Biến toàn cục (global variable):
– Là biến được khai báo bên ngoài tất cả các hàm.
– Có thể được sử dụng và truy cập từ bất kỳ đâu trong chương trình, cả ở bên ngoài và bên trong các hàm.
Biến địa phương (local variable):
– Là biến được khai báo ở bên trong một hàm, bao gồm cả các tham số của hàm.
– Chỉ tồn tại và có thể được sử dụng ở bên trong hàm mà nó được khai báo. Khi hàm thực thi xong, biến địa phương sẽ bị hủy.
2. Phân tích đoạn chương trình
Bây giờ, chúng ta sẽ áp dụng lý thuyết trên để phân tích từng biến trong đoạn chương trình đã cho.
– Phân tích biến \(a\):
Biến \(a\) được khai báo bằng câu lệnh \(a = [3, 4, 5, 6, 7, 8]\) ở ngay dòng đầu tiên, bên ngoài hàm \(findX\). Do đó, \(a\) là một biến toàn cục.
– Phân tích biến \(k\):
Biến \(k\) được khai báo bằng câu lệnh \(k = 6\). Câu lệnh này cũng nằm ở bên ngoài hàm \(findX\). Vì vậy, \(k\) cũng là một biến toàn cục.
– Phân tích biến \(x\):
Biến \(x\) xuất hiện trong câu lệnh định nghĩa hàm: \(def findX(x):\). Biến nằm trong cặp dấu ngoặc đơn của định nghĩa hàm được gọi là tham số của hàm. Tham số của hàm được xem là một biến địa phương, nó chỉ tồn tại và có tác dụng bên trong hàm đó thôi.
– Phân tích biến \(i\):
Biến \(i\) được khai báo và gán giá trị lần đầu tiên bằng câu lệnh \(i = 0\). Câu lệnh này nằm ở bên trong hàm \(findX\). Do đó, \(i\) là một biến địa phương. Nó chỉ được tạo ra khi hàm \(findX\) được gọi và sẽ bị hủy khi hàm này kết thúc.
3. Kết luận
Dựa trên phân tích ở trên, chúng ta thấy rằng trong đoạn chương trình này có hai biến địa phương là \(x\) và \(i\).
Bây giờ chúng ta xét các phương án lựa chọn:
A. biến \(a\) -> là biến toàn cục.
B. biến \(k\) -> là biến toàn cục.
C. biến \(x\) -> là biến địa phương (vì là tham số của hàm).
D. biến \(i\) -> là biến địa phương (vì được khai báo bên trong hàm).
Cả C và D đều là các biến địa phương. Tuy nhiên, trong các bài tập trắc nghiệm chỉ có một lựa chọn, chúng ta thường cần xác định biến được khai báo và sử dụng hoàn toàn bên trong thân hàm. Trong trường hợp này, biến \(i\) là một ví dụ rất điển hình cho biến địa phương được tạo ra và sử dụng trong một hàm.
Như vậy, đáp án phù hợp nhất cho câu hỏi này là D.
Đáp án đúng: D. biến i
Đáp án:
D. biến i
Giair thích:
Trong đoạn chương trình trên, biến “a”, “k”, và “x” không được khai báo hoặc sử dụng trong hàm “findX”. Vì vậy, chúng không phải là biến địa phương trong hàm này.
Biến “i” là biến địa phương trong hàm “findX” vì nó được khai báo bên trong hàm và chỉ được sử dụng trong phạm vi của hàm đó.
biến i nhé bạn
biến địa phương là biến được khai báo bên trong hàm và được sử dụng chỉ trong hàm đó