Lập trình Python cơ bản

Lập trình Python cơ bản

Kiểu dữ liệu Function trong Python - Return Kiểu dữ liệu Function trong Python - Return Kiểu dữ liệu Function trong Python - Return Kiểu dữ liệu Function trong Python - Return Kiểu dữ liệu Function trong Python - Return 0/5 (113 reviews)

Kiểu dữ liệu Function trong Python - Return

Đã đăng 2018-06-27 14:07:22 bởi I Hate Python Team
10 bình luận 3531 lượt xem
Kiểu dữ liệu Function trong Python - Return 0 /5 stars (0 reviews)
 

Dẫn nhập

Trong bài trước, Kteam đã giới thiệu đến bạn KIỂU DỮ LIỆU FUNCTION TRONG PYTHON – BIẾN LOCALS & GLOBALS.

Và ở bài này Kteam sẽ lại tìm hiểu với các bạn KIỂU DỮ LIỆU FUNCTION TRONG PYTHON – Return.


Nội dung

Để đọc hiểu bài này tốt nhất bạn cần:

Bạn và Kteam sẽ cùng tìm hiểu những nội dung sau đây

  • Vấn đề
  • Giới thiệu lệnh return
  • Dùng return để trả về nhiều giá trị một lúc

Vấn đề

Giả sử bạn viết một hàm xử lí một công việc và bạn muốn sao lưu kết quả sau khi xử lí xong ra một biến. Nhưng bạn lại không thể làm điều đó. Vì nếu tạo ra một biến và lưu ngay trong hàm thì như ta đã biết, nó không thể sử dụng được ở mức toàn chương trình (global).

Giá mà bạn có thể ném cái dữ liệu sau khi xử lí xong ra ngoài nhỉ?

Có đấy, hầu như mọi ngôn ngữ lập trình bây giờ điều cho phép làm điều đó và đương nhiên Python không phải ngoại lệ.


Giới thiệu lệnh return

Đây là lệnh chỉ sử dụng được ở trong hàm (nếu sử dụng ở ngoài hàm sẽ có nhắc lỗi)

SyntaxError: 'return' outside function

Lệnh return có cú pháp như sau

return [object]

Ở đây, object là một đối tượng bất kì của một lớp nào đó, có thể là số (number), chuỗi (string), list, tuple, hàm (sẽ biết rõ hơn khi tìm hiểu decorator), lớp (class) hoặc thậm chí là bỏ trống – trường hợp bỏ trống thì object return về được tính là None.

Khi return được gọi, hàm được kết thúc và kết quả được trả ra ngoài. Kết quả trả ra ngoài nên được đưa cho một biến nào đó hứng, nếu không thì coi như bạn gọi hàm không để làm gì.

def cal_rec_per(width, height):
    per = (width + height) * 2
    return per

rec_1_width = 5
rec_1_height = 3

# khởi tạo một biến để hứng kết quả
rec_1_per = cal_rec_per(rec_1_width, rec_1_height)

print(rec_1_per)

# trường hợp này là khi bạn không cần tái sử dụng nó ở lần sau
print(cal_rec_per(7, 4))

def _return_ter_func():
    print('chúng ta sử dụng return để ngắt hàm')
    # dòng dưới đây tương tự như bạn viết return None
    return
    print('Hàm print này dĩ nhiên không được gọi')

none = _return_ter_func()
print(type(none))


Dùng return để trả về nhiều giá trị một lúc

Với Python, việc bạn có thể return nhiều giá trị một lúc bản chất nó không nằm ở câu lệnh Python, mà là do Python thiết kế đặc biệt để có thể unpack các object trả về. Bạn hãy xem ví dụ về khai báo sau đây

>>> one, two, three = 'how', 'Kteam', 69
>>> one
'how'
>>> two
'Kteam'
>>> three
69
>>> h, o, w = ('k', 'team', 96) # ở đây, cũng có thể sử dụng list hoặc một container bất kì
>>> h, o, w
('k', 'team', 96)

Tận dụng điều trên, ta có thể “return nhiều giá trị cùng một lúc

def cal_rec_area_per(width, height):
    perimeter = (width + height) * 2
    area = width * height
    return perimeter, area

rec_width = 3
rec_height = 9
rec_per, rec_area = cal_rec_area_per(rec_width, rec_height)

print(rec_per, rec_area)


Câu hỏi củng cố

  1. Như các bạn đã biết khái niệm hàm số, với hàm số y = f(x) thì đồ thị hàm số y = f(x) đi qua điểm M(x0, y0) nếu như y0 = f(x0).

Cho một list, mỗi phần tử là một tuple gồm hoành độ (x0) và tung độ (y0), kiểm tra xem đồ thị hàm số y = f(x) có đi qua điểm đó hay không. Nếu có thì đưa sang list A, trường hợp không thì đưa phần tử đó sang list B.

Sau khi kết thúc, tính tổng các tung độ (y0) của hai list A và B rồi in ra trị tuyệt đối của hiệu tổng tung độ hai list đó.

Ví dụ: với hàm y = f(x) như sau

Và một List các điểm

Thì kết quả in ra là 21

 

  1. Cho 5 biến với giá trị mỗi biến là một số tự tự nhiên, gọi m là giá trị lớn nhất trong 5 số đó. In ra màn hình 2m -1

Ví dụ: Với 5 biến như sau, kết quả in ra sẽ là 117

Lưu ý: Không dùng các hàm tìm min max hỗ trợ bởi thư viện, chương trình có sẵn, không sử dụng bất kì container nào. Và chương trình không quá 3 câu lệnh điều kiện (if hoặc elif hoặc else)

Đáp án của phần này sẽ được trình bày ở bài tiếp theo. Tuy nhiên, Kteam khuyến khích bạn tự trả lời các câu hỏi để củng cố kiến thức cũng như thực hành một cách tốt nhất!   


Kết luận

Qua bài viết này, Bạn đã biết về lệnh return trong hàm – KIỂU DỮ LIỆU FUNCTION TRONG PYTHON – YIELD.

Ở bài tiếp theo, Kteam sẽ nói đến một câu lệnh nữa có cách sử dụng rất giống return nhưng phức tạp rất nhiều.

Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.

 


Tài liệu 

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Kiểu dữ liệu Function trong Python - Return dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên like hoặc +1 Google để ủng hộ Kteam và tác giả nhé! 


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng. 

 

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Kiểu dữ liệu Function trong Python - Return
Lufor Trần 2018-12-07 14:52:45

Bài 2:

a, b, c, d, e = 32, 59, 8, 4, 15
m = 0
#----------------
def soLN(check):
    global m
    if check > m:
        m = check
#----------------
soLN(a)
soLN(b)
soLN(c)
soLN(d)
soLN(e)
print(2*m - 1)

0 bình chọn
Reply
Kiểu dữ liệu Function trong Python - Return
Lufor Trần 2018-12-07 14:51:52

Bài 1:

def check_position(x):
    y = x**3 + 2*x**2 - 4*x + 1
    return y
#----------------------------------
lst_A = [(-5, -20), (-4, -15), (-3, 4), (-2, 9), (-1, 7), (0, 1), (1, -7), (2, -9), (4, 81), (5, 130)]
lst_temp = list(lst_A) #tạo lst tạm để tránh lỗi khi remove
lst_B = []
sum_A = 0
sum_B = 0
#----------------------------------
for x0, y0 in lst_temp:
    if check_position(x0) == y0: #kiểm tra điều kiện
        lst_B.append((x0, y0)) #thêm vào lstB
        lst_A.remove((x0, y0)) #xoá khỏi lstA
        sum_B += y0 #tổng y0 của lstB
    else:sum_A += y0 #tổng y0 của lstA
#----------------------------------
print('list B:', lst_B)
print('Exception: ',abs(sum_A - sum_B))

0 bình chọn
Reply
Kiểu dữ liệu Function trong Python - Return
Hung 2018-11-10 12:50:06

Lưu ý: Không dùng các hàm tìm min max hỗ trợ bởi thư viện, chương trình có sẵn, không sử dụng bất kì container nào. Và chương trình không quá 3 câu lệnh điều kiện (if hoặc elif hoặc else)

- Không khai báo container có nghĩa là k sử dụng nha =)))) 

a, b, c, d, e = 32, 59, 8, 24, 15
def packing(*A):
    return A
A = list(packing(a, b, c, d, e))
for i in range(4):
    if A[i] < A[i+1]:
        A[i]=A[i+1]
print(A[0])

 

0 bình chọn
Reply
Kiểu dữ liệu Function trong Python - Return
Hung 2018-11-10 12:14:35
toado = [(-5, -20), (-4, -15), (-3, 4), (-2, 9), (-1, 7), (0, 1), (1, -7), (2, -9), (4, 81), (5, 130)]
B = [[None]*2 for b in range(len(toado))]
A = [[None]*2 for a in range(len(toado))]

def f(x):
    a = x**3 + 2*x**2 - 4*x + 1
    return a
for i in range(len(toado)):
    x, y = toado[i]
    if y==f(x):
        A[i]=x, y
    else:
        B[i]=x, y
def Ay():
    S = 0
    for i in range(len(A)):
        xA, yA = A[i]
        if yA!=None:
            S = S + yA
        else: continue
    return S
def By():
    SB = 0
    for i in range(len(B)):
        xB, yB = B[i]
        if yB!=None:
            SB = SB + yB
        else:  continue
    return SB
import math
result = math.fabs(Ay()-By())
print(result)

 

0 bình chọn
Reply
Kiểu dữ liệu Function trong Python - Return
lysonthach 2018-07-10 17:17:25

Bài 2:

lst = [22,33,44,2,4]
lst.sort()
print(lst[len(lst) -1]*2 -1 )

0 bình chọn
Reply
Kiểu dữ liệu Function trong Python - Return
lysonthach 2018-07-10 17:12:26

Bài 1:

lst = [(-5,-20), (-4,-15), (-3,4), (-2,9), (-1,7), (0,1), (1,-7),(2,-9),(4,81),(5,130)]

def lst_A():
    A = []
    for i in range(len(lst)):
        x = lst[i][0]
        y = lst[i][1]
        if y == ((x**3) + 2*(x**2) - (4*x) + 1):
            A.append(y)
            
    return A
def lst_B():
    B = []
    for i in range(len(lst)):
        x = lst[i][0]
        y = lst[i][1]
        if y != ((x**3) + 2*(x**2) - (4*x) + 1):
            B.append(y)
    return B            

def result():
    total_A = 0
    total_B = 0
    for w in lst_A():
        total_A += w
    for z in lst_B():
        total_B += z
    
    return (total_A - total_B)

print (abs(result()))       

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
MinhNT 2018-11-06 23:02:02
Cho một list, mỗi phần tử là một tuple gồm hoành độ (x0) và tung độ (y0), kiểm tra xem đồ thị hàm số y = f(x) có đi qua điểm đó hay không. Nếu có thì đưa sang list A, trường hợp không thì đưa phần tử đó sang list B.
0 bình chọn
Reply
Kiểu dữ liệu Function trong Python - Return
ducdh33 2018-07-06 14:08:07

Mình hỏi chút. Bạn nào giải thích cho mình về Class trong Python và tại sao Python lại được gọi là object-oriented programming language được không. :D

Video lâu lâu rồi chưa ra nhỉ

0 bình chọn
Reply
Kiểu dữ liệu Function trong Python - Return
powerbigsplash 2018-06-28 00:24:10

Ad ơi có nhiều ảnh bị die ạ, các ảnh bài khác vẫn load bình thường ạ

1 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
Phạm Tấn Thành 2018-07-01 07:21:30
bạn kiểm tra xem mạng có bị lag hong ak sợ lag ko load được
0 bình chọn
Reply
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education