SBT Tin học 10 Kết nối tri thức Bài 20: Câu lệnh lặp For

595

Toptailieu biên soạn và giới thiệu giải sách bài tập Tin học 10 trang 42,43 Bài 20: Câu lệnh lặp For 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 các bài tập từ đó nâng cao kiến thức và biết cách vận dụng phương pháp giải vào các bài tập trong SBT Tin học 10 Bài 20.

Tin học 10 Kết nối tri thức Bài 20: Câu lệnh lặp For

Câu 20.1 trang 42 SBT Tin học 10: Hãy viết câu lệnh range cho kết quả là các dãy số sau:

a) 0, 1, 2, 3, ..., 11.

b) -2, -1, 0, 1, 2, ..., 8.

c) 5, 6, 7, ..., 20. 

Lời giải:

a) range(12)

b) range(-2,9)

c) range(5, 21)

Câu 20.2 trang 42 SBT Tin học 10: Kết quả thực hiện câu lệnh for dưới đây là gì?

for i in range(10):

  print(i*i)

Lời giải:

Dãy 0, 1, 4, 9, ..., 81 (bình phương các số 0, 1, 2, ...,9).

 (ảnh 1)

Câu 20.3 trang 42 SBT Tin học 10: Cho đoạn chương trình sau:

sum=0

for i in range(1,11):

 sum=sum+i*i

print(sum)

 

a) Kết quả thực hiện các câu lệnh trên là gì?

b) Nếu thay câu lệnh for i in range(1,11) bằng câu lệnh for i in range(11) thì kết quả thu được có thay đổi không? Vì sao?

Lời giải:

a) Giá trị trong sum là tổng các bình phương của 1, 2, 3, ..., 10 (= 385).

 (ảnh 1)

b) Kết quả không thay đổi. Vì giá trị i khi đó sẽ bắt đầu từ 0, tổng các bình phương của các số 0, 1, 2, ..., 10 vẫn chính là tổng các bình phương của các số 1, 2, ..., 10.

Câu 20.4 trang 42 SBT Tin học 10: Viết chương trình nhập vào từ bàn phím số tự nhiên n và tính tổng:

S = 1 + 1/2 + 1/3 + ... + 1/n

Lời giải:

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

S = 0

n = int(input("Nhập số tự nhiên n: "))

for i in range(1, n + 1):

  S = S + 1/i

print("Tổng nghịch đảo các số từ 1 tới ",n," là: ", S)

Câu 20.5 trang 42 SBT Tin học 10: Viết chương trình nhập vào từ bàn phím số tự nhiên n và tính tổng:

S = 1 × 2 + 2 × 3 + 3 × 4 + ... + (n − 1) × n.

Lời giải:

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

S = 0

n = int(input("Nhập số tự nhiên n: "))

for i in range(2, n + 1):

  S = S + (i - 1)*i

print("Với n = ", n, "tổng cần tìm là: ", S)

Câu 20.6 trang 42 SBT Tin học 10: Viết chương trình tính tổng các số tự nhiên chẵn và tổng các số tự nhiên lẻ không vượt quá n (n là một số tự nhiên được nhập vào từ bàn phím).

Lời giải:

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

#Tổng các số lẻ và tổng các số chẵn không lớn hơn n

tong_sole = 0

 

tong_sochan = 0

n = int(input("Nhập số tự nhiên n:"))

for i in range(1, n + 1):

 if i%2==0:       # i là số chẵn: thêm i vào tong_sochan 

  tong_sochan=tong_sochan + i

 else:       #i là số lẻ: thêm i vào tong_sole

  tong_sole=tong_sole + i

print("Tổng các số chẵn và các số lẻ không lớn hơn", n, "tương ứng là", tong_sochan, "và", tong_sole)

Câu 20.7 trang 42 SBT Tin học 10: Viết chương trình nhập số tự nhiên n từ bàn phím rồi tính tổng và tích các số thực sự của n (số k là ước số thực sự của n nếu n%k = 0, k < n).

Lời giải:

Có thể thấy rằng các ước số thật sự của n không vượt quá giá trị n//2.

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

#Tổng và tích các ước số thật sự của n

tong_uocso = 0

tich_uocso = 1

n = int(input("Nhập số tự nhiên n: "))

k = n//2+1

for i in range(1,k):

 if n%i==0:         # i là ước số của n

  tong_uocso = tong_uoc so + i

  tich_uocso = tich_uocso*i

print("Tổng và tích các ước số thực sự của", n, "tương ứng là", tong_uocso, "và", tich_uocso)

Câu 20.8 trang 42 SBT Tin học 10: Điểm tổng kết trung bình năm học được tính theo công thức có dạng:

(diem 1 × heso1 + diem2 × heso2 + ... + diemk × hesok)/(heso 1 + heso 2 + ... + hesok). Viết chương trình tính điểm trung bình của em, trong đó số môn học k, điểm số từng môn và hệ số tương ứng được nhập vào từ bàn phím.

Câu hỏi mở rộng: Có thể thay câu lệnh:

diem = float(input("Điểm môn thứ "+str(i)+ ": "))

bằng câu lệnh:

diem = float(input("Điểm môn thứ ", i , ": "))

được không?

Lời giải:

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

tong_diem = 0

tong_heso = 0

n = int(input("Nhập số môn học: "))

for i in range(1, n + 1):

  diem = float(input("Điểm môn thứ " + str(i) + ": "))

  heso = float(input("Hệ số môn thứ " + str(i) + ": "))

  tong_diem = tong_diem + diem*heso

  tong_he so = tong_heso + heso

print("Điểm trung bình cả năm học của em là:", tong_diem/tong_heso)

Câu hỏi mở rộng: Không thể thay thế được.

Câu 20.9 trang 43 SBT Tin học 10: Viết chương trình giải bài toán dân gian:

"Vừa gà vừa chó

Bó lại cho tròn

Ba mươi sáu (36) con

Một trăm (100) chân chẵn

Hỏi có mấy gà mấy chó?".

Lời giải:

Nếu kí hiệu k là số con gà thì số con chó sẽ là 36 – k và tổng số chân sẽ là:

so_chan = k × 2 + (36 – k) × 4

Rõ ràng k < 36. Như vậy, ta chỉ việc cho k nhận các giá trị lần lượt từ 0 tới 36 và kiểm tra nếu so_chan = 100 thì k và 36 – k chính là số gà và số chó cần tìm.

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

print("GIẢI BÀI TOÁN GÀ VÀ CHÓ")

print("Vừa gà vừa chó")

print("Bó lại cho tròn")

print("Ba mươi sáu (36) con")

print("Một trăm (100) chân chẵn")

print("Hỏi có mấy gà, mấy chó?")

for k in range(37) :

 if ((k * 2 + (36 - k) * 4) == 100):

  print("Số gà là: ", k)

  print("Số chó là: ", 36 - k)

Câu 20.10 trang 43 SBT Tin học 10: Lập trình giải bài toán dân gian TRĂM TRÂU TRĂM CỎ:

"Trâu đứng ăn năm

Trâu nằm ăn ba

Lụ khụ trâu già

Ba con một bó

 

Trăm con ăn cỏ

Trăm bó no nê.

Hỏi có bao nhiêu trâu đứng, trâu nằm, trâu già?".

Lời giải:

Bài toán có thể phát biểu lại như sau: Có một trăm con trâu ăn hết một trăm bó cỏ. Mỗi con trâu đứng ăn được 5 bó. Mỗi con trâu nằm ăn được 3 bó. Ba con trâu già ăn cùng nhau hết 1 bó. Hỏi có bao nhiêu con trâu đứng, bao nhiêu con trâu nằm và bao nhiêu con trâu già?

Mỗi trâu đứng ăn 5 bó cỏ nên tối đa số trâu đứng chỉ có thể là 100/5 tức là 20 con.

Mỗi trâu nằm ăn 3 bó cỏ nên số trâu nằm nhỏ hơn hoặc bằng 100/3 tức là 33 con.

Số trâu già = 100 – Số trâu đứng - Số trâu nằm

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

#Trăm trâu, trăm cỏ

for i in range(1, 21):

 for j in range(1, 34):

  k = 100 – I - j

  if 5*i + 3*j + k/3 == 100 :

   print("Trâu đứng ",i," trâu nằm ",j," trâu già " ,k)

Câu 20.11 trang 43 SBT Tin học 10: Dựa vào lời giải của Câu 20.9, em hãy viết chương trình giải bài toán gà và chó tổng quát với tổng số gà và chó là m và tổng số chân là n được nhập vào từ bàn phím. Lưu ý: Trong trường hợp tổng quát, không phải với bất kì cặp số m và n nào bài toán cũng có lời giải. Ví dụ nếu m = 2, n = 10 bài toán vô nghiệm.

Lời giải:

Nếu kí hiệu k là số gà thì số chó sẽ là m – k. Lời giải của bài toán chính là giá trị k thoả mãn điều kiện k × 2 + (m – k) × 4 = n. Trong chương trình, ta sẽ sử dụng biến co_nghiem để ghi nhận việc xác định được lời giải. Giá trị ban đầu của co_nghiệm được gán bằng False, khi tìm ra nghiệm thì giá trị của nó được đổi thành True.

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

print("GIẢI BÀI TOÁN GÀ VÀ CHÓ TỔNG QUÁT")

print("Vừa gà vừa chó")

print("Bó lại cho tròn")

print("Có đúng m con")

print("Tròn n chân chẵn")

print("Hỏi có mấy gà, mấy chó?")

co_nghiem=False

m = int(input("Tổng số gà và chó là: "))

n = int(input("Tổng số chân là: "))

for k in range(m + 1) :

 if ((k * 2 + m - k) * 4) == n):

  print("Số gà là: ", k)

  print("Số chó là: ", m - k)

  co_nghiem = True

 if co_nghiem==False:

  print("Bài toán có " , m, "gà và chó với ", n, " chân vô nghiệm!")

Câu 20.12 trang 43 SBT Tin học 10: Em hãy viết chương trình giải bài toán có m trâu, n bó cỏ, mỗi trâu đứng ăn k1 bó cỏ, trâu nằm ăn k2 bó cỏ, k3 trâu già ăn 1 bó cỏ.

Lời giải:

Tương tự Câu 20.10, cần sử dụng một biến để ghi nhận tình huống tìm ra nghiệm.

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

#Bài toán trăm trâu, trăm cỏ tổng quát

m = int(input("Số trâu: "))

n = int(input("Số bó cỏ: "))

k1 = int(input("Số bó cỏ 1 trâu đứng ăn: "))

k2 = int(input("Số bó cỏ 1 trâu nằm ăn: "))

k3 = int(input("Số trâu già ăn chung 1 bó cỏ: "))

co_nghiem = False

max_traudung = m // k1 + 1

max_traunam = m // k2 + 1

for i in range(1, max_traudung) :

 for j in range(1, max_traunam) :

  k = m – i – j

  if k1*i + k2*j + k/k3 == n :

   print("Trâu đứng ",i," trâu nằm ",j," trâu già " , k)

   co_nghiem = True

if co_nghiem==False:

 print("Bài toán vô nghiệm")

Xem thêm lời giải SBT Tin học 10 Kết nối tri thức hay, chi tiết khác:

Bài 19: Câu lệnh điều kiện If

Bài 21: Câu lệnh lặp while

Bài 22: Kiểu dữ liệu danh sách

Bài 23: Một số lệnh làm việc với dữ liệu danh

Bài 24: Xâu kí tự

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

0

0 đánh giá