Hướng dẫn giải SGK Tin học 10 KNTT – Bài 26 Hàm trong Python
LUYỆN TẬP
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
Trả lời:
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
def uocso_nto(n):
for k in range(2,n+1):
if n%k==0 and prime(k):
print(k)
2. Viết hàm numbers(s) đếm số các chữ số có trong xâu s
Ví dụ numbers (“0101abc”)=4
Trả lời:
def numbers(s):
dem=0
for k in s:
if k in '0123456789':
dem=dem+1
return dem
VẬN DỤNG
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
C=0
k=2
while k<n:
if n%k==0:
return False
k=k+1
return True
Trả lời:
– Hàm trên có 3 lệnh return:
+ Lệnh return thứ nhất trả về False và kết thúc hàm nếu n<2 (n không phải số nguyên tố)
+ Lệnh return thứ 2 trả về False và kết thúc hàm nếu có 1 giá trị k là ước của n (khi đó n không phải số nguyên tố)
+ Lệnh return thứ 3 trả về True và kết thúc hàm (khi lệnh return thứ 3 được thực hiện tức là 2 lệnh return trên không xảy ra), khi đó n là số nguyên tố.
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.
Trả lời:
def numbers(s):
dem=0
for k in s:
if k in '0123456789':
dem=dem+1
return dem
def english(s):
dem=0
for k in s:
if 'a'<=k<='z' or 'A'<=k<='Z':
dem=dem+1
return dem
s=input('Nhập 1 xâu: ')
print('Số chữ số: ',numbers(s))
print('Số chữ cái tiếng Anh: ',english(s))