SBT Tin học 10 trang 59 Kết nối tri thức

327

Với Giải SBT Tin học 10 trang 59 trong Bài 28: Phạm vi của biến Sách bài tập Tin học 10 Kết nối tri thức hay nhất, chi tiết sẽ giúp học sinh dễ dàng làm bài tập trong SBT Tin học 10.

SBT Tin học 10 trang 59 Kết nối tri thức

Câu 28.10 trang 59 SBT Tin học 10: Chương trình sau có lỗi không? Nếu có, làm thế nào để sửa hết lỗi?

def f():

 n = n + 1

 return n

n = 15

 

a = f()

print(a)

Lời giải:

Có lỗi. Có thể sửa cho hết lỗi theo nhiều cách. Ví dụ.

Cách 1. Đưa n vào hàm số khi khai báo hàm f().

def f(n):

 n = n + 1

 return n

n = 15

a = f(n)

print(a) 

Cách 2. Khai báo biến n là global trong hàm f().

def f():

 global n

 n = n + 1

 return n

n = 15

a = f()

print(a)

Câu 28.11 trang 59 SBT Tin học 10: Viết hàm với đầu vào là list A, số thực x. Hàm cần trả về một list B thu được từ list A bằng cách chỉ lấy các phần tử có giá trị ≥ x.

Lời giải:

Chương trình có thể viết như sau:

def Select(A,x):

 B = []

 for k in range(len(A)):

  if A[k] >= x:

   B.append(A[k])

return B

Câu 28.12 trang 59 SBT Tin học 10: Viết chương trình thực hiện các công việc sau, yêu cầu thực hiện lần lượt các công việc, mỗi công việc cần được triển khai thông qua một chương trình con:

1. Nhập từ bàn phím một dãy các số nguyên, mỗi số cách nhau bởi dấu cách. Chuyển các số này vào một dãy (list A) các số và in dãy A ra màn hình.

2. Tách từ dãy A ra một dãy B bao gồm các phần tử có giá trị > 0 của dãy A. In dãy B ra màn hình.

3. Tách từ dãy A ra một dãy C bao gồm các phần tử có giá trị < 0 của dãy A. In dãy C ra màn hình.

Cuối cùng chương trình sẽ đưa ra kết quả tổng số các lệnh cơ bản (phép gán, phép so sánh) đã thực hiện trong toàn bộ chương trình.

Lời giải:

Với mỗi nhiệm vụ trên sẽ được viết riêng thành một hàm. Để tính số các phép gán và so sánh cần một biến tổng thể t. Biến nhớ này sẽ được khai báo lại trong mỗi chương trình con với từ khoá global. Toàn bộ chương trình như sau: 

t = 0

def Nhap_Dulieu():

 global t

 s = input("Nhập các số nguyên cách nhau bởi dấu cách: ")

 A = s.split()

 t = t + 2

 for k in range(len (A)):

  A[k] = int(A[k])

  t = t + 1

 return A

def getB(A):

 global t

 B = []

 t = t + 1

 for x in A:

  if x > 0:

   B.append(x)

   t = t + 1

 return B

def getC(A):

 global t

 C = []

 t = t + 1

 for x in A:

  if x < 0:

   C.append(x)

   t = t + 1

 return C

# Chương trình chính

A = Nhap_Dulieu()

print("Dãy A:",A)

B = getB(A)

C = getC(A)

print("Dãy B:",B)

print("Dãy С:",C)

print("Số lượng phép gán và so sánh:",t)

Từ khóa :
Giải bài tập
Đánh giá

0

0 đánh giá