Giải Tin học 10 – Bài 26. Hàm trong Python – KNTT
1. Một số hàm thiết kế sẵn của Python
Câu hỏi: Mô tả tham số và giá trị trả lại của mỗi hàm sau: float(), str(), len(), list()
Hướng dẫn giải:
+ float(giá trị): Dùng để chuyển giá trị sang kiểu số thực, trả về số thực
+ str(giá trị): Dùng để chuyển giá trị sang kiểu xâu, trả về xâu, (đầy đủ thì hàm str() có 3 tham số nhưng chủ yếu dùng một tham số bắt buộc này).
+ len(đối tượng): trả về số phần tử của đối tượng (có thể là xâu, danh sách,…), trả về số nguyên
+ list(dãy giá trị): trả về danh sách tương ứng với dãy giá trị, trả về danh sách
2. Thiết lập các hàm tự định nghĩa
Câu hỏi: Quan sát các hàm sau, giải thích cách thiết lập và chức năng của mỗi hàm
a. Hàm Nhap_xau()
def Nhap_xau():
msg = input("Nhập một xâu: ")
return msg
b. Hàm Inday(n)
def Inday(n):
for k in range(n):
print(k,end=" ")
Hướng dẫn giải:
a. Hàm Nhap_xau() không có tham số, hàm trả về giá trị kiểu xâu do người dùng nhập vào từ bàn phím
b. Hàm Inday(n) có một tham số n, hàm không trả về giá trị, chức năng in ra dãy các số từ 0 đến n-1 trên một dòng.
3. Luyện tập
Câu 1. Viết hàm với tham số là số tự nhiên n in ra các số là ước nguyên tố của n
Gợi ý: Sử dụng hàm prime() trong phần thực hành
Câu 2. Viết hàm numbers(s) đếm số các chữ số có trong xâu s
Ví dụ: numbers(“0101abc”) = 4
Hướng dẫn giải:
Câu 1: Chương trình như sau
#Hàm kiểm tra n có phải là số nguyên tố
def prime(n):
C = 0; k = 1
while k < n:
if n%k == 0:
C = C + 1
k = k + 1
if C == 1: return True
else: return False
#Hàm in ra các số nguyên tố là ước của n
def print_prime(n):
for i in range(1,n+1):
if prime(i) and n%i==0:
print(i,end=" ")
n = int(input("Mời nhập số tự nhiên n: "))
print_prime(n)
Câu 2: Chương trình như sau
def numbers(s):
dayso = "0123456789"
dem = 0
for ch in s:
if ch in dayso:
dem = dem + 1
return dem
s = input("Mời nhập xâu: ")
print("Có",numbers(s),"số trong xâu vừa nhập")
4. Vận dụng
Câu 1. Trong khi viết hàm có thể có nhiều lệnh return. Quan sát hàm sau và giải thích ý nghĩa của những lệnh return. Hàm này có điểm gì khác so với hàm prime() đã được mô tả trong phần thực hành.
def prime(n):
if n < 2:
return False
k = 2
while k < n:
if n%k == 0:
return False
k = k + 1
return True
Câu 2. Viết chương trình yêu cầu nhập từ bàn phím một xâu kí tự, sau đó thông báo:
– Tổng số các kí tự là chữ số của xâu.
– Tổng số các kí tự là chữ cái tiếng Anh trong xâu.
Viết hàm cho mỗi yêu cầu trên.
Hướng dẫn giải:
Câu 1: Trong hàm trên có 3 câu lệnh return
– Câu lệnh return thứ nhất để trả về False và thoát khỏi hàm khi n có giá trị bé hơn 2 vì 2 là số nguyên tố nhỏ nhất.
– Câu lệnh return thứ hai để trả về False và thoát khỏi hàm khi n chia hết cho giá trị k bất kỳ vì nếu n chia hết cho k với $k \geq 2$ thì n không phải là số nguyên tố.
– Câu lệnh return thứ ba để trả về True và thoát khỏi hàm khi không tồn tại $k \geq 2$ mà n $(n \neq 2$) chia hết.
Câu 2: Chương trình như sau
#Hàm đếm số kí tự số trong xâu
def numbers(s):
dayso = "0123456789"
dem = 0
for ch in s:
if ch in dayso:
dem = dem + 1
return dem
#Hàm đếm số kí tự tiếng Anh trong xâu
def countEng(s):
dem = 0
s = s.upper()
for ch in s:
if ch>="A" and ch<="Z" :
dem = dem + 1
return dem
s = input("Mời nhập xâu: ")
print("Có",numbers(s),"số trong xâu vừa nhập")
print("Có",countEng(s),"chữ tiếng Anh trong xâu vừa nhập")
Xem thêm Bài 27. Tham số của hàm