Thực hành lập trình với hàm và thư viện sách bài tập Tin Học lớp 10 – Cánh Diều, mời các em tham khảo cùng Bumbii.
Chủ đề F. Giải quyết vấn đề với sự trợ giúp của máy tính. Bài 11. Thực hành lập trình với hàm và thư viện.
Câu F50
Sai số. Trong các hệ thống hoạt động độc lập (máy bay không người lái, hệ thống phòng không, các trạm tự hành, …) thời gian được tính độc lập trong sơ đồ điều khiển bằng giải thuật riêng. Giải thuật tính thời gian của một hệ thống phòng không cho kết quả trễ 10 – 6 giây cho mỗi giây hoạt động. Độ trễ này sẽ được tích luỹ trong quá trình hệ thống hoạt động liên tục. Như vậy nếu hệ thống hoạt động liên tục trong 8 giây thì thời gian tính được sẽ bị lệch đi 8 × 10 – 6 giây.
Em hãy xây dựng hàm delay với tham biến t là số giờ trả về kết quả số giây bị trễ dưới dạng số thực. Viết chương trình nhập từ bàn phím một số thực a là số giờ hoạt động liên tục của hệ thống, sử dụng hàm nói trên tính sai số khoảng cách (theo mét) khi xác định vị trí vật thể bay với tốc độ 1700 m/s. Đưa kết quả tính được ra màn hình với độ chính xác làm tròn tới mét.
Gợi ý:
Để làm tròn x tới k chữ số lẻ, dùng hàm round (x, k) của hệ thống.
Để dễ đọc số nguyên lớn có thể dùng dấu gạch dưới để tách các nhóm số, ví dụ 1000 có thể viết là 1_000.
Ví dụ:
Input | Output |
100 | 612 |
Đáp án:
Tham khảo chương trình sau:
def delay(a):
return a*3600/1_000_000
a = float(input())
print(round(delay(a)*1700))
Câu F51
Tổng hai số. Xây dựng hàm kiểm tra với 3 số a, b, c cho trước, trả về giá trị True nếu tồn tại một số là tổng của hai số còn lại, ngược lại trả về giá trị False.
Viết chương trình nhập từ bàn phím ba số nguyên trên cùng một dòng, các số cách nhau ít nhất một dấu cách, sử dụng hàm đã tạo để kiểm tra trong ba số này có số nào là tổng hai số còn lại hay không và đưa ra thông báo “Yes” hoặc “No” tương ứng.
Ví dụ:
Input | Output |
4 12 8 | Yes |
Gợi ý: Kiểm tra cả ba trường hợp có thể xảy ra (vét cạn): a = b + c hoặc b = a + c hoặc c = a + b.
Đáp án:
Tham khảo chương trình sau:
def Sum2(a,b,c):
return a==b+c or b==a+c or c==a+b
a,b,c = map(int,input().split())
if Sum2(a,b,c): print('Yes')
else: print('No')
Câu F52
Vị trí của hàm. Trong các câu sau, những câu nào đúng?
Vị trí có thể viết hàm trong chương trình là:
1) Viết ở đầu chương trình.
2) Viết bên trong một hàm khác.
3) Viết ở cuối chương trình.
4) Viết sau lời gọi tới nó trong chương trình chính.
5) Viết sau hàm có chứa lời gọi tới nó.
6) Viết trong chương trình chính, trước khi có lời gọi tới nó.
Đáp án:
Đáp án đúng 1, 2, 5, 6. Ví dụ về trường hợp đúng của câu 5
def Message():
CT1()
CT2()
def CT1():
print("Đã thực hiện CT1.")
def CT2():
print("Đã thực hiện CT2.")
Message()
Câu F53
Tìm lỗi. Xét bài toán: Nhiệt độ cảm nhận trên da người tỉ lệ nghịch với bình phương của tốc độ gió tính theo m/s thổi qua bề mặt da. Hãy viết chương trình nhập nhiệt độ thật t°C và tốc độ gió v m/s, tính nhiệt độ cảm nhận của con người dựa theo hàm xác định nhiệt độ cảm nhận theo t và v. Hãy thực hiện chương trình sau với t = 24°C và v = 2 m/s. Cho biết kết quả mà hệ thống đưa ra.
Tại sao có thông báo như vậy? Hãy chỉ một cách sửa chương trình để nhận được kết quả cần tìm.
t, v = map(float, input().split())
def Feel_t(t,v):
ft = t/(v*v)
print(Feel_t(t))
Đáp án:
Thông báo mà hệ thống đưa ra là
Tham số trong lời gọi hàm phải tương ứng với tham số trong chương trình con (CTC). Ở đây, CTC có 2 tham số là t, v nhưng trong lời gọi hàm chỉ có 1 tham số nên bị báo lỗi. Cách khắc phục
t, v = map(float, input().split())
def Feel_t(t,v):
ft = t/(v*v)
print(Feel_t(t,v))
Câu F54
Đọc hiểu. Ngày 01/7/1932, Collatz – nhà toán học Đức đề xuất thực hiện phép biến đổi sau với số nguyên dương a:
def Collatz(a):
if a%2 == 0:
return a//2
else return 3*a+1
Với phép biến đổi này, sau khi thực hiện một số lần từ số nguyên a bất kì ta sẽ nhận được 1. Cho đến nay người ta vẫn chưa chứng minh được tính đúng đắn của giả thuyết đó.
Em hãy cho biết:
Hàm đã viết đã đúng cú pháp Python hay chưa? Nếu chưa đúng hãy tìm và sửa lỗi.
Biến đổi Collatz (10) và Collatz (15) trả về các kết quả tương ứng là bao nhiêu?
Đáp án:
Hàm trên còn chứa lỗi cú pháp. Cần sửa lại như sau:
def Collatz(a):
if a%2 == 0:
return a//2
else: return 3*a+1
Collatz (10) trả về kết quả là 5.
Collatz (15) trả về kết quả là 46.
Câu F55
Tính giai thừa. Với n nguyên đương, theo định nghĩa n! = 1 × 2 × 3 × … × (n – 1) × n. Em hãy xây dựng hàm tính n! và viết chương trình gọi hàm đưa ra màn hình n! với n là các số nguyên dương được nhập vào từ bàn phím.
Đáp án:
Tham khảo chương trình:
def factorial(n):
t = 1
for i in range(1, n+1):
t = t * i
return t
k = int(input("Số lượng test: "))
for i in range(k):
n = int(input("n= "))
print(n, "! = ", factorial(n))
Kết quả thực hiện:
Câu F56
Tìm bội chung nhỏ nhất. Xây dựng hàm tìm bội chung nhỏ nhất (BCNN) của hai số nguyên dương x và y. Viết chương trình đưa ra bội chung nhỏ nhất của một số cặp số nguyên dương a, b với dữ liệu nhập vào từ bàn phím.
Đáp án:
Ta có BCNN(a,b) = a×b UCLN(a,b).
Tham khảo chương trình sau:
import math
def BCNN(x,y):
return x*y/math.gcd(x,y)
n = int(input("n = "))
for i in range(n):
s = input("a,b = ").split()
a,b = int(s[0]), int(s[1])
print("Bội chung nhỏ nhất: ", BCNN(a,b), end ="\n")
Ví dụ một kết quả thực hiện chương trình:
Xem thêm các bài khác tại Giải Sách bài tập Tin học Lớp 10 – Cánh Diều
Thông tin liên hệ & mạng xã hội:
Website: https://bumbii.com/
Facebook: https://www.facebook.com/bumbiiapp
Pinterest: https://www.pinterest.com/bumbiitech
Không bao giờ từ bỏ hy vọng. Cố gắng mỗi ngày.