1 | 10 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Bài 21: NHẬP XUẤT TRONG PYTHON - HÀM XUẤT Xem học website để ủng hộ Kteam: Nhập xuất Python – Hàm xuất Mọi vấn đề lỗi website làm ảnh hưởng đến bạn thắc mắc, mong muốn khóa học mới, nhằm hỗ trợ cải thiện Website Các bạn vui lòng phản hồi đến Fanpage How Kteam nhé! Dẫn nhập Trong trước, Kteam giới thiệu đến bạn ITERATION & MỘT SỐ HÀM HỖ TRỢ CHO ITERABLE OBJECT Python Ở Kteam giới thiệu với bạn việc Nhập xuất Python Một điều cần thiết! Nội dung Để đọc hiểu tốt bạn cần: Cài đặt sẵn MÔI TRƯỜNG PHÁT TRIỂN CỦA PYTHON Xem qua CÁCH CHẠY CHƯƠNG TRÌNH PYTHON Nắm CÁCH GHI CHÚ BIẾN TRONG PYTHON KIỂU DỮ LIỆU LIST, KIỂU DỮ LIỆU TUPLE, KIỂU DỮ LIỆU SET, KIỂU DỮ LIỆU DICT Python Biết cách XỬ LÍ FILE TRONG PYTHON Copyright © Howkteam.com | 10 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Trong này, bạn Kteam tìm hiểu nội dung sau Vì cần hàm print? Tìm hiểu cách sử dụng hàm print thơng qua parameter Print Python 3.X Python 2.X có khác nhau? Vì cần hàm print Nếu bạn hay dùng interactive prompt bạn nhân rằng, kết ln xuất sau dịng code bạn Tuy nhiên, khơng bạn viết dòng code vào file Python chạy chương trình Bạn cần hàm giúp bạn xuất nội dung mà bạn muốn cụ thể xuất Shell (terminal, command prompt, powershell,…) Đó lí hàm print đời! Tìm hiểu cách sử dụng hàm print thơng qua parameter Hàm print có cú pháp sau Cú pháp: print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) Chúng ta tìm hiểu parameter Copyright © Howkteam.com | 10 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM *objects * packing argument Ở hiểu nơm na sẽ gom lại argument bạn lại thành Tuple >>> packing = 1, 2, 3, # giống gọi hàm function(1, 2, 3, 4) >>> packing (1, 2, 3, 4) Khi bạn truyền argument vào hàm (giá trị 1, giá trị 2, giá trị 3,…) gói lại thành Tuple giống >>> print('Kteam') Kteam >>> print('Kteam', 'Free Education') Kteam Free Education >>> print('Kteam', 'Free Education', 'one more argument') Kteam Free Education one more argument Nhờ vậy, bạn truyền argument vào hàm print với số lượng Điều giúp bạn khơng phải ép kiểu liệu, để nối chúng lại với thành giá trị truyền cho hàm print >>> print('Kteam' + 69) Traceback (most recent call last): File "", line 1, in TypeError: must be str, not int >>> print('Kteam' + str(69)) Kteam69 >>> print('Kteam', 69) Kteam 69 >>> print(123, [1, 2, 3], 'Kteam') 123 [1, 2, 3] Kteam Chắc bạn nhận chút khác biệt hai trường hợp bên >>> print('Kteam' + 'Python') Copyright © Howkteam.com | 10 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM KteamPython >>> print('Kteam', 'Python') Kteam Python Để hiểu điều đó, tới với parameter sep (separate – chia ra, phân ra) Giá trị mặc định parameter khoảng trắng Khi argument bạn ném vào cho hàm print để hàm print in nội dung, biết gói vào Tuple Các giá trị Tuple nối với parameter sep Lưu ý: Khi truyền giá trị vào cho parameter theo cách keyword argument khơng bị packing Nghĩa khơng bị gói vào giá trị parameter object >>> print('Kteam', 'Python', 'Course') # sep mặc định khoảng trắng Kteam Python Course >>> print('Kteam', 'Python', 'Course', sep=' -') Kteam -Python -Course >>> print('Kteam', 'Python', 'Course', sep='|||') Kteam|||Python|||Course >>> print('Kteam', 'Python', 'Course', sep='\n') Kteam Python Course >>> print('Kteam', 'Python', 'Course', sep='') KteamPythonCourse Tiếp theo parameter rắc rối Copyright © Howkteam.com | 10 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM end (kết thúc bằng) Đầu tiên, chạy file Python với nội dung sau print('line 1') print('line 2') print('line 3') Kết bạn nhận chắn line line line Nếu bạn học qua ngơn ngữ lập trình C C++ Java C# Bạn nhận thấy, lần print, chúng tự xuống dịng Đó nhờ parameter end Nó tự thêm kí tự newline (\n) vào cuối để đưa trỏ xuống dịng thay bạn phải tự thêm \n số ngơn ngữ lập trình khác (một số ngơn ngữ lập trình có hỗ trợ thêm phương thức giúp xuất nội dung tự động xuống dịng) Và đương nhiên, thay đổi giá trị parameter >>> print('a line without newline', end='') a line without newline>>> print('a line without newline', end='|||') a line without newline|||>>> print() >>> Bạn thấy khơng có end kí tự newline interactive prompt lộn xộn Nhưng khơng phải vấn đề Hãy cẩn thận sử dụng print mà khơng có newline Hãy tạo file Python có nội dung sau: Copyright © Howkteam.com | 10 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM from time import sleep # nhập hàm sleep từ thư viện time print('start ') sleep(3) # dừng chương trình giây print('end ') Khi chạy chương trình, bạn thấy xuất dịng `start ` sau giây sau xuất tới dịng `end ` Kết hồn tồn bình thường dự đốn Nhưng thử thay đổi tí: from time import sleep # nhập hàm sleep từ thư viện time print('start ', end='') # in nội dung kết thúc bới chuỗi rỗng sleep(3) # dừng chương trình giây print('end ') Lần có khác biệt Bạn khơng thấy xuất ban đầu, đến giây sau bạn thấy dịng `start end ` Kết đúng, cách kết xuất khơng giống bạn nghĩ Vì lại vậy? Đó lần hàm print nhận giá trị bạn muốn in Các giá trị gói Tuple Tiếp đến, hàm print nạp giá trị Tuple vào nhớ đệm Nếu giá trị chuỗi có kí tự newline (ở vị trí bất kì) hàm print yêu cầu nhớ đệm xuất có nhớ đệm từ nạp đến Hoặc kết thúc chương trình, cịn đệm xuất Một số ví dụ Ví dụ 1: Hãy thử vài ví dụ khác để hiểu thêm from time import sleep # nhập hàm sleep từ thư viện time Copyright © Howkteam.com KHĨA PYTHON CƠ BẢN HOWKTEAM.COM | 10 print('line 1\n', 'line2', end='') sleep(3) # dừng chương trình giây print('end ') Kết xuất `line1` > đợi giây > xuất nội dung cịn lại Vì chuỗi 'line 1\n' có kí tự newline nên chuỗi xuất Cịn chuỗi 'line 2' khơng nên nằm nhớ đệm.Ví dụ 2: from time import sleep # nhập hàm sleep từ thư viện time print('line 1', 'lin\ne2', end='') sleep(3) # dừng chương trình giây print('end ') Kết xuất in hai chuỗi `line 1` `line 2` > đợi giây > xuất nội dung lại Quy trình nạp chuỗi line vào nhớ đêm, nạp tiếp chuỗi line vào nhớ đệm, thấy chuỗi line có kí tự newline, xuất có nhớ đệm Sau đợi giây xuất nội dung lại file Mặc định hàm print ghi nội dung vào file sys.stdout Cũng nhờ vậy, bạn thấy nội dung shell Đương nhiên, dựa vào đây, ta sử dụng hàm print phương thức write việc ghi file >>> with open('printtext.txt', 'w') as f: print('printed by print function', file=f) >>> with open('printtext.txt') as f: f.read() 'printed by print function\n' Copyright © Howkteam.com KHĨA PYTHON CƠ BẢN HOWKTEAM.COM | 10 flush Parameter cuối - flush Giá trị mặc định giá trị False Liên quan nhiều đến parameter end lúc nên ta quay lại ví dụ lúc from time import sleep # nhập hàm sleep từ thư viện time print('start ', end='') sleep(3) # dừng chương trình giây print('end ') Sau giây chương trình có kết Bạn biết rồi, chứ? Nào, parameter flush giá trị True from time import sleep # nhập hàm sleep từ thư viện time print('start ', end='', flush=True) sleep(3) # dừng chương trình giây print('end ') Kết vậy, trình xuất kết có chút khác biệt Bạn nhìn thấy nội dung dịng print Đó nhờ parameter flush Nếu True, yêu cầu đệm xuất có đệm Print Python 3.X Python 2.X có khác nhau? Print Python 3.X hàm, giới thiệu Cịn với Python 2.X câu lệnh # print Python 2.X Copyright © Howkteam.com | 10 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM print 'Kteam' print 'Kteam', 'Free Education' # tương tự với Python 3.X print('Kteam') print('Kteam', 'Free Education') Một số bạn nhầm lần Print Python 2.X sử dụng Python 3.X # print Python 2.X print('Kteam') # nhận kết giống Python 3.X print('Kteam') Nhưng chất khác # print Python 2.X print('Kteam') # tương đương với Python 3.X print(('Kteam')) Đây interactive prompt Python 2.X Ta thử ví dụ để làm rõ điều >>> print('Kteam') Kteam >>> print('Kteam', 'Free Education') ('Kteam', 'Free Education') Bạn thấy, cặp dấu () cặp dấu ngoặc cách gọi hàm Đó giống việc bạn đặt giá trị cặp dấu ngoặc đơn mà thơi Và có giá trị nên khơng có khác biệt Cịn bạn đặt hai giá trị trở lên, Python hiểu Tuple Một đoạn code nhỏ dành cho bạn tự nhiên cứu: Copyright © Howkteam.com 10 | 10 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM from time import sleep your_name = "Henry" your_great = "Hello! My name is " for c in your_great + your_name: print(c, end='', flush=True) sleep(0.1) print() Kết luận Qua viết này, Bạn biết việc xuất nội dung Python Ở viết sau Kteam nói NHẬP XUẤT TRONG PYTHON – HÀM NHẬP Cảm ơn bạn theo dõi viết Hãy để lại bình luận góp ý để phát triển viết tốt Đừng quên “Luyện tập – Thử thách – Không ngại khó” Copyright © Howkteam.com ... bạn nhân rằng, kết ln xuất sau dịng code bạn Tuy nhiên, khơng bạn viết dòng code vào file Python chạy chương trình Bạn cần hàm giúp bạn xuất nội dung mà bạn muốn cụ thể xuất Shell (terminal,... sleep(3) # dừng chương trình giây print('end ') Kết xuất `line1` > đợi giây > xuất nội dung cịn lại Vì chuỗi 'line 1 ' có kí tự newline nên chuỗi xuất Cịn chuỗi 'line 2' khơng nên nằm nhớ đệm.Ví... print('end ') Kết xuất in hai chuỗi `line 1` `line 2` > đợi giây > xuất nội dung lại Quy trình nạp chuỗi line vào nhớ đêm, nạp tiếp chuỗi line vào nhớ đệm, thấy chuỗi line có kí tự newline, xuất có nhớ