Bài tập Hàm trong Python có đáp án
9 câu hỏi
Các chương trình giải những bài toán thực tế phức tạp thường có rất nhiều dòng lệnh, trong đó có không ít những khối lệnh tương ứng với một số thao tác được lặp đi lặp lại nhiều lần ở những vị trí khác nhau. Để đỡ công viết đi viết lại các khối lệnh đó, trong tổ chức chương trình viết bằng ngôn ngữ lập trình bậc cao, người ta thường gom các khối lệnh như vậy thành những chương trình con. Khi đó, trong chương trình người ta chỉ cần thay cả khối lệnh bằng một lệnh gọi chương trình con tương ứng. Trong Python, các hàm chính là các chương trình con.
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ì?
- Một số hàm trong số các lệnh đã học: str(), len(), int(), float(), print(),…
- Đặc điểm chung: Các lệnh trên đều có dấu mở đóng ngoặc đi sau tên lệnh, bên trong ngoặc ghi thêm các tham số là các đại lượng, các biến hoặc biểu thức,…
Tìm hiểu một số hàm của Python
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ì.
Bảng 26.1. Một số lệnh trong Python

- Về hình thức: các lệnh đều có các dấu mở đóng ngoặc đi sau tên lệnh
- Bên trong dấu ngoặc, có thể ghi thêm tham số: các đại lượng, các biến, hoặc trong một số trường hợp, có cả biểu thức.
Mô tả tham số và giá trị trả lại của mỗi hàm sau: float(), str(), len(), list().
float(): tham số là một xâu kí tự hoặc số nguyên và trả về giá trị số thực
str(): tham số là các kiểu dữ liệu khác nhau và trả về xâu kí tự
len(): tham số là danh sách hoặc xâu kí tự và trả về giá trị kiểu số nguyên
list(): tham số là kiểu dữ liệu string, tuple,… và trả về kiểu danh sách
Cách thiết lập hàm trong Python
Quan sát các ví dụ sau để biết cách viết hàm.

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.
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)
- 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át 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
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.
Chương trình:
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=" ")
Viết hàm numbers(s) đếm số các chữ số có trong xâu s.
Ví dụ numbers(“0101abc”) = 4.
Chương trình:
def numbers(s):
t=0
for ch in s:
if '0'<=ch<='9':
t=t+1
return t
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.

- Ý nghĩa của các lệnh return: Trả về giá trị True hoặc False và thoát ra ngoài hàm ngay
- 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ể tra 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.
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.
Chương trình:
def 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))

