Menu

Python: Một số ví dụ về hàm

Hàm
Bài trước, ta đã viết ba chương trình đơn giản đó là kiểm tra một số xem có phải là số nguyên tố, chính phươnghoàn hảo hay không? Tuy nhiên, đó là các chương trình rất đơn giản. Bài này, chúng ta sẽ sử dụng hàm để thực hiện công việc như bài trước.
Khái niệm hàm trong ngôn ngữ lập trình thì mình không phải giới thiệu lại. Bạn chỉ cần hiểu đơn giản hàm là một hộp đen thực hiện một công việc nào đó. Với đầu vào như thế nào thì sẽ được đầu ra tương ứng. Ví dụ, đầu vào của hộp đen số nguyên tố là 11 sẽ có kết quả là True, còn đầu vào là 12 sẽ có đầu ra là False. Vậy, chúng ta sẽ đi tìm hiểu cách chế tạo hộp đen bằng Python nhé.
Vẫn như yêu cầu của bài trước, ta sẽ đi viết các hàm kiểm tra một số có phải là số nguyên tố, hoàn hảo và chính phương hay không?

Số nguyên tố

Ta sẽ viết lại chương trình số nguyên tố của bài trước. Hàm kiểm tra một số nguyên tố sẽ trả về True nếu số cần kiểm tra đúng là số nguyên tố, ngược lại, trả về là False. Ta quan sát hàm như sau:

def isPrimerNumber(num):
    if num < 2:
        return False
    elif num == 2:
        return True
    else:
        isPrimeNum = True;
        for i in range(2, num):
            if num % i == 0:
                isPrimeNum = False;
                break
        
        if isPrimeNum == True:
            return True
        else:
            return  False
  • Từ khóa def: dùng để khai báo hàm. Trong Python hàm có thể trả về giá trị hoặc không, nhưng ta không quan tâm đến kiểu giá trị trả về vì trong hàm sẽ tự động nhận biết dữ liệu trả về.
  • Tiếp theo là tên hàm: ở đây là isPrimerNumber , bạn nên đặt một cái tên phù hợp.
  • Tham số num chính là số mà ta cần kiểm tra. Hàm có thể không có hoặc có nhiều tham số.
  • Nội dung của hàm hoạt động giống như bài trước (thực ra là mình copy từ bài trước.
Sau khi định nghĩa hàm xong, ta sẽ gọi hàm và truyền giá trị thực sự cần kiểm tra.

number = int(input("Nhap vao mot so nguyen: "))

result = isPrimerNumber(number)
if result == True:
    print(number, " la so nguyen to")
else:
    print(number, " khong la so nguyen to")
Trong đoạn code này, chúng ta thực hiện 3 việc:
  1. Nhập dữ liệu từ bàn phím và gán vào biến number
  2. Gọi hàm (dòng result = isPrimerNumber(number)), với số number vừa nhập từ bàn phím ta sẽ kiểm tra xem nó là nguyên tố hay không. Kết quả tra về được gán vào biến result.
  3. Kiểm tra giá trị của biến result và đưa ra kết luận number là số nguyên tố hay không.
Các bạn thấy đơn giản chứ? File mã nguồn ở đây nhé.

Số hoàn hảo

Ta viết lại chương trình kiểm tra số hoàn hảo dưới dạng hàm. Bạn xem đoạn mã kiểm tra xem một số có phải là số hoàn hảo hay không sau đây nhé:

def isPerfectNumber(num):
    if num <= 1:
        return False;
    else:
        sumDivision = 0
        for i in range(1, num):
            if num % i == 0:
                sumDivision += i    #sumDivision = sumDivision + i
    
        return True if sumDivision == num else False
Ta thấy, về hình thức cũng giống như hàm kiểm tra số nguyên tố ở trên. So với chương trình của bài trước ta thấy ở dòng code cuối cùng có điều đặc biệt. Thông thường ta sẽ viết như sau:

if sumDivision == num:
        return True
else:
        return False
Ta thấy, 4 dòng lệnh trên rất đơn giản. Vì vậy ta sử dụng biểu thức điều kiện như trong dòng cuối cùng. Ta nhập một giá trị và gọi hàm như sau:

number = int(input("Nhap vao mot so: "))

result = isPerfectNumber(number);

if result:
    print(number, " la so hoan hao")
else:
    print(number, " khong la so hoan hao")
Như vậy, ta đã viết được chương trình kiểm tra một số có phải là số hoàn hảo hay không dưới dạng hàm. Bạn có thể xem code chi tiết tại đây.

Số chính phương

Tương tự như hai ví dụ trên, mình sẽ viết lại chương trình để kiểm tra một số có phải là số chính phương hay không? Sau đây là đoạn mã hàm kiểm tra một số có phải là số chính phương hay không:

def isSquareNumber(num):
    if number <= 0:
        return False
    else:
        isSquareNum = False
        for i in range(1, number + 1):
            if i * i == number:
                isSquareNum = True
                break
        
        if isSquareNum == True:
            return True
        else:
            return False
Chúng ta định nghĩa hàm def isSquareNumber(num)và còn nội dung chương trình thì giữ nguyên nguyên như bài trước. Bây giờ, ta sẽ nhập giá trị và gọi hàm để kiểm tra một số có phải là số chính phương không nhé.

number = int(input("Nhap vao mot so nguyen:"))

result = isSquareNumber(number)

if result == True:
    print( number, " la so chinh phuong")
else:

    print(number, " khong phai la so chinh phuong")
Kết quả của hàm isSquareNumber trả True nếu number đúng là số chính phương, ngược lại, nó trả về False. Bạn xem code chi tiết tại đây nhé.

Kết luận

Trong bài này là ba ví dụ đơn giản được viết dưới dạng hàm. Bạn có thể xem code dấy đủ ở đây nhé.

Không có nhận xét nào:

Đăng nhận xét