Em có thể kể tên một số hàm trong số các lệnh đã học không? Các hàm đó có những đặc điểm chung gì?
Em có thể kể tên một số hàm trong số các lệnh đã học không? Các hàm đó có những đặc điểm chung gì?
Quan sát một số câu lệnh trong bảng 26.1 và cho biết những câu lệnh có điểm chung gì.
Thảo luận (1)Hướng dẫn giải
Mô tả tham số và giá trị trả lại của mỗi hàm sau: float(), str(), len(), list().
Thảo luận (1)Hướng dẫn giải
Quan sát các ví dụ sau để biết cách viết hàm.
VD1:
VD2:
Thảo luận (1)Hướng dẫn giảiTrả lời:
Cách viết: Hàm được định nghĩa bằng từ khoá def, theo sau là tên hàm (tên hàm sẽ theo quy tắc đặt tên định danh)
Hàm có thể có hoặc không có tham số.
Khối lệnh mô tả hàm được viết sau dấu “:” và viết lùi vào, thẳng hàng.
Hàm có thể có hoặc không có giá trị trả lại sau từ khoá return.
(Trả lời bởi Toru)
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.
Thảo luận (1)Hướng dẫn giảiTrả lời:
a) - Cách thiết lập: Hàm được định nghĩa bằng từ khoá def, theo sau là tên hàm Nhap_xau(). Hàm không có tham số, khối lệnh mô tả hàm được viết sau dấu “;”. Hàm trả về giá trị msg.
- Chức năng: Nhập và trả về một xâu kí tự.
b) - Cách thiết lập: Hàm được định nghĩa bằng từ khoá def, theo sau là tên hàm Inday(n). Hàm có tham số, khối lệnh mô tả hàm được viết sau dấu “;”. Hàm không có giá trị trả về.
- Chức năng: Hiển thị ra màn hình một dãy số từ 0 tới n - 1.
(Trả lời bởi Toru)
Viết hàm với tham số là số tự nhiên n in ra tất cả 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.
Thảo luận (1)Hướng dẫn giảiTrả 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
n=int(input("Nhập số tự nhiên n:"))
for i in range(1,n+1):
if n%i==0 and prime(i)==True:
print(i, end=" ")
(Trả lời bởi Toru)
Viết hàm numbers(s) đếm số các chữ số có trong xâu s.
Ví dụ numbers(“0101abc”) = 4.
Thảo luận (1)Hướng dẫn giảiTrả lời:
s=input("Nhập vào xâu s:")
def numbers(s):
c=0
for i in s:
if i.isdigit():
c=c+1
return c
print(numbers(s))
(Trả lời bởi Toru)
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=2
k=2
while k < n:
if n%k == 0:
return False
k = k + 1
return True
Thảo luận (1)Hướng dẫn giảiPhương pháp giải:
Quan sát hàm và nội dung mô tả hàm prime() trong phần thực hành
Trả lời:
Hàm này có ba lần thực hiện lệnh return.
- Lần return thứ nhất kiểm tra nếu n < 2 thì dừng ngay và trả về False
- Lần return thứ hai nếu tìm ra số k là ước của n thì dừng lại ngay và trả về False
- Cuối cùng mới return True thông báo n là số nguyên tố
Hàm này tối ưu hơn so với hàm prime đã được mô tả trong phần thực hành do có thể trả về giá trị True hoặc False ngay mà không cần thực hiện hết các câu lệnh tới cuối.
(Trả lời bởi Toru)
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.
Thảo luận (1)Hướng dẫn giảidef numbers(s):
t=0
for ch in s:
if '0'<=ch<='9':
t=t+1
return t
def characters(s):
t=0
for ch in s:
if 'a'<=ch<='z' or 'A'<=ch<='Z':
t=t+1
return t
s=input("Nhập xâu kí tự: ")
print("Số kí tự chữ số trong xâu s là: ", numbers(s))
print("Số kí tự chữ cái trong xâu s là: ", characters(s))
(Trả lời bởi Toru)