Sự khác nhau giữa câu lệnh print và return trong hàm

Xin chào tát cả mọi người, hiện tại em đang gặp khó khăn khi chưa hiểu rõ về việc gọi hàm ra và print hàm ra ạ.

Cụ thể, khi em đang làm 1 bài tập trên CodeLearn :

``

Cho trước danh sách res gồm nhiều số nguyên được nhập từ bàn phím. Viết chương trình Python để chuyển đổi mỗi phần tử trong list thành số tự nhiên. Tiếp đến, in ra màn hình kết quả.

``

  • Vi dụ:
    • Với res = [3,4,5] thì hiển thị kết quả là 345
    • Với res = [9,10,11] thì hiển thị kết quả là 91011 ``

``

Em có làm theo thử 2 cách, và nó chỉ khác nhau ở đúng dòng cuối cùng trong code.

#Initial list
res = []

Input lengths

lengths = int(input())

Add element

for i in range(lengths):

Input elements

n = int(input())
res.append(n)

def convert_lst_to_int(res):
for i in res:
print(i, end = “”)
convert_lst_to_int(res) ================ > nếu mà là dòng này, khi em nhập thử số 3, 4, 5 vào sẽ ra kết quả là 345
nhưng nếu như thay bằng dòng code này print(convert_lst_to_int(res)) ====== > nó sẽ ra kết qua quả là 345None

Mong mọi người giúp đỡ em ạ

Thanks in advance !!!

1 Like

Chào bạn,
Điều này là dễ hiểu bởi vì hàm convert_lst_to_int() của bạn đang trả về None. Nên ngay sau khi nó thực thi hàm xong(in các phần tử liền trong mảng của bạn hàm print() sẽ in ra giá trị trả về.)
Ví dụ

def lam_gi_do(t):

    tmp = t

print(lam_gi_do(5))

Thì hàm print sẽ in ra None là kết quả trả về của hàm lam_gi_do().
Nếu bạn muốn dùng hàm print để in ra kết quả hàm convert_lst_to_int() trả về. Bạn có thể sử dụng return. Ví dụ:

# Initial list

res = []

lengths = int(input())

for i in range(lengths):

    n = int(input())

    res.append(n)

def convert_lst_to_int(res):

    tmp = ""

    for i in res:

        tmp = tmp + str(i)

    return tmp

print(convert_lst_to_int(res))

Kết quả trả về là 345 khi bạn nhập vào là 3 3 4 5.

Chúc bạn ngày mới tốt lành.