1 | 11 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Bài 26: VÒNG LẶP FOR TRONG PYTHON Xem học website để ủng hộ Kteam: Vòng lặp For Python 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 cấu trúc vòng lặp, VỊNG LẶP WHILE TRONG PYTHON Ở Kteam giới thiệu với bạn cơng phu vịng lặp Vịng lặp For Python 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 CÁC KIỂU DỮ LIỆU ĐƯỢC GIỚI THIỆU TRONG PYTHON CÂU ĐIỀU KIỆN IF TRONG PYTHON VÒNG LẶP WHILE TRONG PYTHON Bạn Kteam tìm hiểu nội dung sau Hạn chế vòng lặp while Cấu trúc vòng lặp for cách hoạt động Copyright © Howkteam.com | 11 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Sử dụng vòng lặp để xử lí iterator Dict Câu lệnh break continue Cấu trúc vòng lặp for-else cách hoạt động Hạn chế vịng lặp while Bạn sử dụng vịng lặp while để duyệt List, chuỗi Tuple Và chí iterator (một object không hỗ trợ indexing) biết số phần tử mà iterator chứa Ví dụ: >>> length = >>> iter_ = (x for x in range(length)) >>> c = >>> while c < length: print(next(iter_)) c += Nếu bạn trước số phần tử mà iterator có khơng Python cho phép bạn làm điều try-block (Kteam giới thiệu khác) Ví dụ: >>> iter_ = (x for x in range(3)) # giả sử ta khơng biết có phần tử >>> while 1: # expression True try: print(next(iter_)) except StopIteration: break Copyright © Howkteam.com KHÓA PYTHON CƠ BẢN HOWKTEAM.COM | 11 Nhưng “con trăn” Python khơng thích rườm rà Xưa vốn biết đến với danh hiệu one-liner* nên điều không chấp nhận Vậy nên Python có một vịng lặp khác giúp làm chuyện đơn giản ngắn gọn vịng lặp for Chú thích One-liner: Nhiều thuật tốn dài hàng chục dịng viết ngắn gọn Python dòng Điều phổ biến với nhiều ngơn ngữ scripting đặc biệt số Python Cấu trúc vòng lặp for cách hoạt động Chúng ta tìm hiểu phần cấu trúc trước: for variable_1, variable_2, variable_n in sequence: # for-block Sequence iterable object (có thể iterator dạng object cho phép sử dụng indexing chí khơng phải hai kiểu trên) Lưu ý: Nếu sequence iterator object việc dùng vịng lặp duyệt qua tương tự bạn sử dụng hàm next Ở cấu trúc vịng lặp này, bạn for biến theo sau Nhưng phải đảm bảm điều rằng, bạn for với n biến phần tử sequence phải bao gồm n (không lớn nhỏ hơn) giá trị để unpacking (gỡ) đưa cho n biến bạn Một ví dụ thực tế: Tiếp tục serial Kter “bờ rào” – Tèo Tèo dẫn hai người bạn gái ăn kem Tới quán kem Tèo phải kêu kem cho Tèo hai cô ghệ Nếu gọi hai Tèo phải nhịn cịn kêu bốn lúc có xung đột xảy ba người để tranh giành xem ăn hai Copyright © Howkteam.com | 11 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Giả sử bạn có sequence gồm phần tử Mỗi phần tử gồm giá trị Bạn đưa vào vòng for gồm biến h, k , t Bây nói cách hoạt động vịng lặp for Bước 1: Vòng for bắt đầu cách lấy giá trị sequence Bước 2: Giá trị có giá trị Bạn đưa vào biến Kiểm tra hợp lệ Bước 3: unpacking giá trị gán giá trị cho ba biến h, k, t Dưới ví dụ unpacking: >>> h = (1, 2, 3) # khởi tạo Tuple bình thường >>> type(h) >>> >>> h, k, t = (1, 2, 3) # unpacking >>> h >>> k >>> t Bước 4: Thực nội dung for-block Bước 5: Lấy giá trị sequence sau làm tương tự Bước 2, 3, Bước 6: Lúc này, sequence hết giá trị Kết thúc vòng lặp Copyright © Howkteam.com | 11 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Sử dụng vịng lặp để xử lí iterator Dict Lí thuyết thế! Giờ làm vài ví dụ cách bắt đầu với vấn đề lúc đầu: >>> iter_ = (x for x in range(3)) >>> iter_ = (x for x in range(3)) >>> for value in iter_: print('->', value) -> -> -> >>> value # biến value gián tiếp khai báo >>> next(iter_) # học cách tiếp kiệp Đây object dùng lần Traceback (most recent call last): File "", line 1, in StopIteration Tiếp đến dùng vòng lặp để duyệt Dict Nếu số ngôn ngữ khác phải có vịng lặp for-reach với Python lại không cần Trước tiên ôn lại cũ Bạn phương thức items lớp Dict chứ? (nếu khơng, bạn tham khảo lại KIỂU DỮ LIỆU DICT TRONG PYTHON) >>> howkteam = {'name': 'Kteam', 'kter': 69} >>> howkteam.items() dict_items([('name', 'Kteam'), ('kter', 69)]) Dict-items iterator object Cũng object cho phép bạn indexing Nhưng iterable, nên ta dùng Copyright © Howkteam.com KHÓA PYTHON CƠ BẢN HOWKTEAM.COM | 11 constructor để biến đổi thứ dễ xem xét Chẳng hạn >>> list_values = list(team.items()) >>> list_values [('name', 'Kteam'), ('kter', 69)] >>> list_values[0] ('name', 'Kteam') >>> list_values[-1] ('kter', 69) Từ đó, ta dễ dàng suy cách để có vịng lặp duyệt Dict Và ví dụ: >>> for key, value in team.items(): print(key, '=>', value) name => Kteam kter => 69 Câu lệnh break, continue Những câu lệnh có chức hồn tồn tương tự vịng lặp while Ví dụ câu lệnh break vịng lặp for: >>> s = 'How Kteam' >>> for ch in s: if ch == ' ': break else: print(ch) H o w Copyright © Howkteam.com | 11 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Ví dụ câu lệnh continue vòng lặp for >>> s = 'H o w K t e a m' >>> for ch in s: if ch == ' ': continue else: print(ch) H o w K t e a m Cấu trúc vòng lặp for-else cách hoạt động Cấu trúc: for variable_1, variable_2, variable_n in sequence: # for-block else: # else-block Copyright © Howkteam.com KHĨA PYTHON CƠ BẢN HOWKTEAM.COM | 11 Nếu bạn nắm rõ cách vịng lặp while-else hoạt động bạn tự đốn cách mà for-else làm việc Cũng tương tự while-else, vòng lặp hoạt động bình thường Khi vịng lặp kết thúc, khối else-block thực Và đương nhiên trình thực for-block mà xuất câu lệnh break vòng lặp kết thúc mà bỏ qua else-block For-else bình thường: >>> for k in (1, 2, 3): print(k) else: print('Done!') Done! For-else có break: >>> for k in (1, 2, 3): print(k) if k % == 0: break else: print('Done!') Copyright © Howkteam.com KHĨA PYTHON CƠ BẢN HOWKTEAM.COM | 11 Củng cố học Đáp án trước Bạn tìm thấy câu hỏi phần CÂU HỎI CỦNG CỐ VÒNG LẶP WHILE TRONG PYTHON five_even_numbers = [] k_number = while len(five_even_numbers) < 5: if k_number % == 0: five_even_numbers.append(k_number) k_number += with open('draft.txt') as f: # lấy nội dung file dạng list data = f.readlines() idx = # mốc bắt đầu length = len(data) # mốc kết thúc new_content = '' # nội dung ghi vào file while idx < length: # tách dòng thành list line_list = data[idx].split() idx_line = length_line = len(line_list) while idx_line < length_line: if line_list[idx_line] == 'Kteam': # thay chữ trước Kteam How line_list[idx_line - 1] = 'How' idx_line += # nối lại thành dòng chuỗi new_content += ' '.join(line_list) + '\n' idx += Copyright © Howkteam.com 10 | 11 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM with open('kteam.txt', 'w') as new_f: # ghi nội dung vào file kteam.txt new_f.write(new_content) lst = [56, 14, 11, 756, 34, 90, 11, 11, 65, 0, 11, 35] idx = max_idx = len(lst) - max_jdx = len(lst) while idx < max_idx: if lst[idx] == 11: idx += continue jdx = idx + while jdx < max_jdx: if lst[jdx] == 11: jdx += continue if lst[idx] > lst[jdx]: lst[idx], lst[jdx] = lst[jdx], lst[idx] jdx += idx += Câu hỏi củng cố Hãy dự đoán kết hàm next Giải thích sao? >>> iter_ = (x for x in range(3)) >>> for value in iter_: print(non_exist_variable) Traceback (most recent call last): Copyright © Howkteam.com 11 | 11 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM File "", line 2, in NameError: name 'non_exist_variable' is not defined >>> >>> next(iter_) # kết gì? Sử dụng vịng lặp để tính tổng số set sau >>> set_ = {5, 8, 1, 9, 4} Đáp án phần trình bày Tuy nhiên, Kteam khuyến khích bạn tự trả lời câu hỏi để củng cố kiến thức thực hành cách tốt nhất! Kết luận Qua viết này, Bạn biết sơ lược VÒNG LẶP FOR TRONG PYTHON Ở viết sau Kteam tiếp tục đề cập đến VÒNG LẶP FOR TRONG PYTHON 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 ... cách tốt nhất! Kết luận Qua viết này, Bạn biết sơ lược VÒNG LẶP FOR TRONG PYTHON Ở viết sau Kteam tiếp tục đề cập đến VÒNG LẶP FOR TRONG PYTHON Cảm ơn bạn theo dõi viết Hãy để lại bình luận góp... vòng lặp for: >>> s = 'How Kteam' >>> for ch in s: if ch == ' ': break else: print(ch) H o w Copyright © Howkteam.com | 11 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Ví dụ câu lệnh continue vịng lặp for. .. m' >>> for ch in s: if ch == ' ': continue else: print(ch) H o w K t e a m Cấu trúc vòng lặp for- else cách hoạt động Cấu trúc: for variable_1, variable_2, variable_n in sequence: # for- block