Câu hỏi về vòng lặp lồng nhau trong Python
Trong chương hiện tại, chúng ta sẽ xem xét các vòng lặp lồng nhau và cách sử dụng vòng lặp 6 để vẽ các hình khác nhau trên bảng điều khiển, chứa các ký hiệu và dấu hiệu, được sắp xếp theo hàng và cột trên bảng điều khiển. Chúng tôi sẽ sử dụng các vòng lặp đơn và lồng nhau (các vòng lặp nằm trong các vòng lặp khác), tính toán và kiểm tra, để in trên bảng điều khiển các số liệu đơn giản và không quá đơn giản theo các kích thước được chỉ định Show
Vấn đề. Hình chữ nhật 10 x 10 SaoIn trên bảng điều khiển một hình chữ nhật được tạo từ các dấu hoa thị 10 x 10 InputOutput(None) 7 7 7 7 7_______97 7 7 7 7Gợi ý và hướng dẫnVí dụ hoạt động như thế nào? . Giá trị mặc định của biến là 4. Với mỗi lần lặp của vòng lặp, biến tăng thêm 1 trong khi nó nhỏ hơn 10. Bằng cách này, mã trong phần thân của vòng lặp được thực thi 10 lần - bao gồm từ 0 đến 9. Trong phần thân của vòng lặp, chúng tôi in một dòng mới trên bàn điều khiển 5, dòng này tạo ra một chuỗi gồm 10 dấu hoa thịThử nghiệm trong Hệ thống Thẩm phánKiểm tra giải pháp của bạn ở đây. Vấn đề. Hình chữ nhật có N x N SaoViết chương trình nhận vào số dương n và in ra bàn điều khiển một hình chữ nhật được tạo từ N x N dấu hoa thị InputOutputInputOutputInputOutput2 6 63 8 8 84 61 61 61 61Gợi ý và hướng dẫnNhiệm vụ tương tự như trước Thử nghiệm trong Hệ thống Thẩm phánKiểm tra giải pháp của bạn ở đây. Một vòng lặp lồng nhau là một cấu trúc trong đó phần thân của một vòng lặp (vòng ngoài) nằm bên trong một vòng lặp khác (vòng trong). Trong mỗi lần lặp của vòng lặp bên ngoài, toàn bộ vòng lặp bên trong được thực hiện. Điều này xảy ra theo cách sau
Dưới đây là một ví dụ minh họa các vòng lặp lồng nhau. Mục đích là để in một hình chữ nhật có dấu hoa thị N x N, trong đó đối với mỗi hàng, một vòng lặp lặp lại từ 1 đến N và đối với mỗi cột, một vòng lặp lồng nhau được thực hiện từ 1 đến N Trong Python, khi giá trị ban đầu chuẩn của biến trong vòng lặp ( 4) không phù hợp với chúng ta, chúng ta có thể thay đổi nó bằng cú pháp trên. Tôi. e. khi chúng tôi muốn vòng lặp bắt đầu từ 1 và xoay vòng bao gồm cả 66, chúng tôi viết. 67. Giá trị đầu tiên trong ngoặc đơn cho biết phần đầu của vòng lặp và giá trị thứ hai - phần cuối của vòng lặp, nhưng không bao gồm, i. e. vòng lặp kết thúc trước khi đạt đượcHãy xem ví dụ trên. Sau khi khởi tạo vòng lặp đầu tiên (bên ngoài), phần thân của nó, chứa vòng lặp thứ hai (lồng nhau), bắt đầu chạy. Nó in một dòng 66 dấu hoa thị. Sau khi vòng lặp bên trong hoàn thành việc thực thi của nó trong lần lặp đầu tiên của vòng lặp bên ngoài, thì vòng lặp bên ngoài sẽ tiếp tục, tôi. e. sẽ in một dòng trống trên bàn điều khiển. Sau đó, vòng lặp đầu tiên sẽ được cập nhật và toàn bộ vòng lặp thứ hai (lồng nhau) sẽ được thực hiện lại. Vòng lặp bên trong sẽ được thực hiện nhiều lần như phần thân của vòng lặp bên ngoài được thực hiện, trong trường hợp này là 66** lầnVấn đề. Quảng trường Ngôi saoIn trên bàn điều khiển một hình vuông có N x N dấu hoa thị InputOutputInputOutputInputOutput2 70______9703 72 72 724 75 75 75 75Gợi ý và hướng dẫnVấn đề tương tự như vấn đề cuối cùng. Điểm khác biệt ở đây là chúng ta cần tìm cách thêm khoảng trắng sau dấu sao để không có bất kỳ khoảng trắng thừa nào ở đầu và cuối Thử nghiệm trong Hệ thống Thẩm phánKiểm tra giải pháp của bạn ở đây. Vấn đề. Tam giác đô laViết chương trình nhận số nguyên n và in ra hình tam giác làm bằng đô la kích thước n InputOutputInputOutputInputOutput3 79 70 714 79 70 71 755 79 70 71 75 70Gợi ý và hướng dẫnBài toán tương tự như bài vẽ hình chữ nhật và hình vuông. Một lần nữa, chúng ta sẽ sử dụng các vòng lặp lồng nhau, nhưng có một nhược điểm ở đây. Sự khác biệt là số lượng cột mà chúng ta cần in phụ thuộc vào hàng mà chúng ta đang ở trên đó chứ không phụ thuộc vào số đầu vào 66. Từ dữ liệu đầu vào và đầu ra ví dụ, chúng tôi thấy rằng số lượng đô la phụ thuộc vào hàng chúng tôi đang ở tại thời điểm in, tôi. e. 1 đô la có nghĩa là hàng đầu tiên, 3 đô la có nghĩa là hàng thứ ba, v.v. Hãy xem chi tiết ví dụ sau. Ta thấy rằng biến của vòng lặp lồng nhau được kết nối với biến của vòng lặp bên ngoài. Bằng cách này, chương trình của chúng tôi in hình tam giác mong muốnThử nghiệm trong Hệ thống Thẩm phánKiểm tra giải pháp của bạn ở đây. Vấn đề. khung vuôngViết chương trình nhận vào số nguyên dương n và vẽ lên console khung hình vuông có kích thước N x N InputOutputInputOutput3 72 73 724 75 76 76 75InputOutputInputOutput5 79 70 70 70 796 74 75 75 75 75 74Gợi ý và hướng dẫnChúng ta có thể giải quyết vấn đề theo cách sau
Đây là một ví dụ triển khai ý tưởng trên với các vòng lặp lồng nhau Thử nghiệm trong Hệ thống Thẩm phánKiểm tra giải pháp của bạn ở đây. Vấn đề. Hình thoi saoViết chương trình nhận vào số nguyên dương n và in ra hình thoi làm bằng các dấu hoa thị có kích thước N 702 71 72 71InputOutputInputOutput3 74 75 76 75 744 79 70 71 72 71 70 79Gợi ý và hướng dẫnĐể giải quyết vấn đề này, chúng ta cần chia hình thoi thành hai phần một cách tinh thần - phần trên, bao gồm cả hàng ở giữa và phần dưới. Để in từng phần, chúng tôi sẽ sử dụng hai vòng lặp riêng biệt, vì chúng tôi để độc giả quyết định sự phụ thuộc giữa 66 và các biến của các vòng lặp. Đối với vòng lặp đầu tiên, chúng ta có thể sử dụng các nguyên tắc sau
Phần thứ hai (dưới) sẽ được in tương tự, một lần nữa chúng tôi để người đọc làm 6 là dương và bằng 1. Nếu chúng ta muốn thay đổi nó, chúng ta phải sử dụng tham số thứ ba trong các đối số của vòng lặp. 02. Tham số thứ ba, trong trường hợp này, cho biết biến sẽ tăng từ 0 đến 99, với bước 2Thử nghiệm trong Hệ thống Thẩm phánKiểm tra giải pháp của bạn ở đây. Vấn đề. cây giáng sinhViết chương trình nhận vào số n (1 ≤ n ≤ 100) và in ra cây thông Noel có chiều cao là N+1 InputOutputInputOutput1 03____0042 05 06 07InputOutputInputOutput3 08 09 10 114 12 13 14 15 16Gợi ý và hướng dẫnTừ các ví dụ, chúng ta thấy rằng cây Giáng sinh có thể được chia thành ba phần hợp lý. Phần đầu tiên là dấu hoa thị và khoảng trắng trước và sau chúng, phần giữa là 74 và phần cuối cùng lại là dấu hoa thị, nhưng lần này chỉ có khoảng trắng trước chúng. Việc in có thể được thực hiện chỉ với một vòng lặp và phép nhân chuỗi hoạt động, mà chúng ta sẽ sử dụng một lần cho các dấu hoa thị và một lần cho các khoảng trắngThử nghiệm trong Hệ thống Thẩm phánKiểm tra giải pháp của bạn ở đây. Vẽ các hình phức tạp hơnHãy xem cách vẽ các hình bằng cách sử dụng các vòng lặp lồng nhau với logic phức tạp hơn mà chúng ta cần suy nghĩ nhiều hơn trước khi viết mã Vấn đề. Kính râmViết chương trình nhận số nguyên n (3 ≤ n ≤ 100) và in ra chiếc kính râm có kích thước 5*N x N như trong ví dụ InputOutputInputOutput3 18 19 184 21 22 23 21InputOutput5 25 26 27 26 25Hints and GuidelinesTừ các ví dụ, chúng ta có thể thấy rằng kính râm có thể được chia thành ba phần – trên, giữa và dưới. Dưới đây là một phần của mã mà vấn đề có thể được giải quyết. Khi vẽ các hàng trên và dưới, chúng ta cần in ________ 030 dấu sao, ________ 966 khoảng trắng và ________ 030 dấu sao Khi vẽ phần ở giữa, chúng ta cần kiểm tra xem hàng có phải là 33 hay không vì trong các ví dụ, chúng ta có thể thấy rằng ở hàng này, chúng ta cần in các dấu gạch chéo dọc thay vì khoảng trắngThử nghiệm trong Hệ thống Thẩm phánKiểm tra giải pháp của bạn ở đây. Vấn đề. Căn nhàViết chương trình nhận vào số n (2 ≤ n ≤ 100) và in ra ngôi nhà kích thước N x N như ví dụ InputOutputInputOutputInputOutput2 6 353 36 8 384 39 61 41 41InputOutputInputOutput5 43 44 45 46 468 48 49 50 51 52 52 52 52Hints and GuidelinesTừ phần mô tả vấn đề, chúng tôi hiểu rằng ngôi nhà có kích thước 66 x 66. Những gì chúng ta thấy từ đầu vào và đầu ra ví dụ là
mái nhà
cơ sở
Chúng tôi đọc số đầu vào 66 từ bảng điều khiển và viết giá trị của nó vào một biến 63 không phải là vấn đề, bởi vì người ta nói rằng chúng ta sẽ được cung cấp các số nguyên hợp lệ. Nếu bạn đang tạo các chương trình phức tạp hơn, bạn nên kiểm tra dữ liệu. Điều gì sẽ xảy ra nếu thay vì nhập số, người dùng nhập ký tự "A"?Để vẽ mái nhà, chúng tôi viết ra bao nhiêu dấu hoa thị mà chúng tôi bắt đầu bằng một biến có tên là 64
Tính chiều dài của mái nhà. Nó bằng một nửa của 66. Viết kết quả vào biến 67Ghi chú. Để sử dụng 68 làm tròn số nguyên lớn hơn, không phân biệt phần thập phân, cần nhập thư viện 69. Điều này được thực hiện bằng lệnh 70. Bạn nên viết 70 (cũng như tất cả các lần nhập khác) ở đầu tệpĐiều quan trọng cần lưu ý là khi 66 là một số lẻ, thì chiều dài của mái nhiều hơn chiều dài của chân đế một hàngTrong Python, khi 2 kiểu số nguyên chia hết và có dư thì kết quả trả về sẽ là một số có dư. Nếu chúng ta muốn thực hiện phép chia số nguyên thuần túy không có phần dư, thì cần sử dụng toán tử 73Ví dụ Nếu chúng ta muốn làm tròn đến số nguyên lớn nhất tiếp theo, chúng ta cần sử dụng phương pháp 74. 75Sau khi tính toán chiều dài của mái nhà, chúng tôi tạo một vòng lặp từ 0 đến 67. Trên mỗi lần lặp, chúng ta sẽ
Sau khi chúng tôi hoàn thành phần mái, đã đến lúc làm phần đế. Nó dễ dàng hơn để in
Nếu chúng tôi đã viết mọi thứ chính xác, vấn đề của chúng tôi sẽ được giải quyết Thử nghiệm trong Hệ thống Thẩm phánKiểm tra giải pháp của bạn ở đây. Vấn đề. Kim cươngViết chương trình nhận số nguyên n (1 ≤ n ≤ 100) và in ra viên kim cương size N như ví dụ sau InputOutputInputOutputInputOutput1 702 63 36 91 36InputOutputInputOutputInputOutput4 39 94 395 43 97 98 97 436 601 602 603 602 601InputOutputInputOutputInputOutput7 606 607 608 609 608 607 6068 48 614 615 616 615 614 489 620 621 622 623 624 623 622 621 620Gợi ý và hướng dẫnNhững gì chúng tôi biết từ mô tả của vấn đề là viên kim cương có kích thước 66 x 66. Từ ví dụ đầu vào và đầu ra, chúng ta có thể kết luận rằng tất cả các hàng chứa chính xác _______966 ký hiệu và tất cả các hàng, ngoại trừ hàng trên cùng và dưới cùng, đều có 2 dấu hoa thị. Chúng ta có thể chia viên kim cương thành 2 phần
Phần trên
Phần dưới
Phần trên và phần dưới của viên kim cương
Chúng tôi đọc giá trị của 66 từ bảng điều khiển, chuyển đổi nó thành loại 63Chúng tôi bắt đầu vẽ phần trên của viên kim cương. Điều đầu tiên chúng ta cần làm là tính số lượng các dấu gạch ngang bên ngoài 634 (các dấu gạch ngang ở bên ngoài các dấu hoa thị). Nó bằng 635, làm tròn xuốngSau khi tính được 634, chúng ta bắt đầu vẽ phần trên của viên kim cương. Chúng ta có thể bắt đầu bằng cách chạy một vòng lặp từ 637 (i. e. làm tròn xuống)Tại mỗi lần lặp của vòng lặp, các bước sau phải được thực hiện
Chúng tôi đã sẵn sàng với phần trên In phần dưới rất giống với phần trên. Sự khác biệt là thay vì giảm 634 với 1 ở cuối vòng lặp, chúng tôi sẽ tăng nó lên 1 ở đầu vòng lặp. Ngoài ra, vòng lặp sẽ lặp từ 0 đến 645Việc lặp lại mã được coi là thông lệ không tốt vì mã trở nên rất khó bảo trì. Hãy tưởng tượng rằng chúng ta có một đoạn mã (e. g. logic để vẽ một hàng từ viên kim cương) ở một vài chỗ nữa và chúng tôi quyết định thay đổi nó. Để làm điều này, chúng ta sẽ phải đi qua tất cả các nơi và thay đổi nó ở mọi nơi. Bây giờ, hãy tưởng tượng rằng bạn cần sử dụng lại một đoạn mã không phải 1, 2 hay 3 lần mà là hàng chục lần. Một cách để khắc phục vấn đề này là sử dụng hàm. Bạn có thể tìm kiếm thêm thông tin về chúng trên Internet hoặc xem Chương “10” (Chức năng) Nếu chúng tôi đã viết tất cả một cách chính xác, thì vấn đề đã được giải quyết Thử nghiệm trong Hệ thống Thẩm phánKiểm tra giải pháp của bạn ở đây. Chúng ta đã học được gì từ chương này?Chúng tôi đã tìm hiểu về một trong những cách để tạo chuỗi 4Chúng tôi đã học cách vẽ hình bằng cách sử dụng vòng lặp 6 lồng nhau
phòng thí nghiệm. Vẽ hình trong môi trường webBây giờ chúng ta đã quen với các vòng lặp lồng nhau và cách sử dụng chúng để vẽ các hình trên bảng điều khiển, chúng ta có thể tìm hiểu một thứ thậm chí còn thú vị hơn. chúng ta có thể thấy cách vòng lặp có thể được sử dụng để vẽ trong môi trường Web. Chúng tôi sẽ tạo một ứng dụng web trực quan hóa xếp hạng số (một số từ 0 đến 100) với các ngôi sao. Loại trực quan hóa này phổ biến trong các trang web thương mại điện tử, đánh giá sản phẩm, xếp hạng sự kiện, xếp hạng ứng dụng và các trang khác Đừng lo lắng nếu bạn không hiểu tất cả mã, nó được viết chính xác như thế nào và dự án hoạt động như thế nào. Đó là điều bình thường, bây giờ chúng tôi đang học viết mã và chúng tôi còn lâu mới đạt được các công nghệ phát triển web. Nếu bạn gặp khó khăn trong việc viết dự án của mình bằng cách làm theo các bước, hãy yêu cầu trợ giúp trong Cộng đồng Reddit của SoftUni. https. //www. reddit. com/r/softuni/ Vấn đề. Xếp hạng – Trực quan hóa trong môi trường WebPhát triển một ứng dụng web để đánh giá trực quan (số từ 0 đến 100). Vẽ từ 1 đến 10 sao (với một nửa). Các ngôi sao được tạo ra với chu kỳ 6Gợi ý và hướng dẫnChúng tôi bắt đầu bằng cách tạo một dự án mới trong PyCharm từ [Tệp] -> [Dự án mới] (hoặc từ cửa sổ bắt đầu) Chúng tôi đặt tên có ý nghĩa cho dự án, ví dụ: "Xếp hạng". Chúng tôi chọn loại trình thông dịch Python hiện tại. Hãy để điều này là mặc định Chúng tôi sẽ lại sử dụng thư viện Flask, được sử dụng để tạo các ứng dụng web. Trước khi có thể bắt đầu viết mã, chúng ta cần cài đặt Flask. Hãy nhớ lại làm thế nào để làm điều này. Chúng tôi chuyển đến cài đặt của PyCharm [Tệp] -> [Cài đặt] -> [Dự án. Xếp hạng] -> [Thông dịch viên dự án]. Ở đó, chúng tôi nhấn nút 71Tìm Flask trong cửa sổ xuất hiện và nhấp vào nút [Cài đặt gói] Chúng tôi hiện đang thêm cấu trúc của dự án (các tệp phân công cho dự án này có thể được tải xuống từ đây). Sao chép chúng từ Windows Explorer và dán chúng vào thư mục Dự án xếp hạng bằng Sao chép/Dán Để mọi thứ hoạt động, chúng ta cần thêm mã. Đầu tiên, chúng tôi đi đến chỉ mục tập tin. html (từ thư mục mẫu) và tìm phần CẦN LÀM. Ở vị trí của họ, chúng tôi nhập mã sau đây. Đoạn mã trên tạo một biểu mẫu web với một trường 649 để nhập một số trong khoảng [0… 100] và một nút [Tốc độ] để gửi dữ liệu từ biểu mẫu đến máy chủ. Sau đó, vẽ với ba vòng lặp for riêng biệt số lượng ngôi sao tương ứng - đầy, trống một nửa và trốngHành động sẽ xử lý dữ liệu được gọi là 650, có nghĩa là hàm 651 trong tệp 652Mã từ hàm 651 lấy số đã nhập 654 từ biểu mẫu và chuyển nó tới hàm 655. Hàm 655 tính toán và tính toán số ngôi sao đầy đủ, số ngôi sao trống và số nửa ngôi sao, sau đó tải lại trang, nhưng với những trang mới đã gửi giá trị của các biến cho các ngôi sao. Chúng tôi thực hiện nó như sauChúng tôi bắt đầu dự án bằng [Ctrl+Shift+F10] (hoặc bằng [Nút phải] -> [Chạy 'ứng dụng']) và đợi nó tải Chúng tôi đến địa chỉ được chỉ định và tận hưởng dự án đã hoàn thành Nếu bạn gặp vấn đề với dự án mẫu ở trên, bạn có thể đặt câu hỏi trong Cộng đồng Reddit của SoftUni. https. //www. reddit. com/r/softuni/ Vòng lặp lồng nhau hoạt động như thế nào trong Python?trả lời 2. Một vòng lặp while lồng nhau về cơ bản là một câu lệnh while bên trong một câu lệnh while khác. Trong một vòng lặp while lồng nhau, một lần lặp của vòng lặp bên ngoài sẽ thực hiện trước, sau đó vòng lặp bên trong sẽ thực hiện. Khi điều kiện của vòng lặp bên trong được thỏa mãn, chương trình sẽ chuyển sang lần lặp tiếp theo của vòng lặp bên ngoài
Có giới hạn nào đối với các vòng lặp lồng nhau trong Python không?Mặc dù Python không có giới hạn kỹ thuật để hiểu các vòng lặp for lồng nhau phức tạp, nhưng có giới hạn về con người . Nếu bạn có một đoạn mã phức tạp với nhiều vòng lặp for hoặc các hàm và điều kiện phức tạp, việc sử dụng vòng lặp for lồng nhau thực sự có thể khiến mã của bạn khó hiểu hơn.
Các vòng lặp lồng nhau khác nhau có sẵn trong Python là gì?Trong ngôn ngữ lập trình Python có hai loại vòng lặp là vòng lặp for và vòng lặp while .
3 loại vòng lặp trong Python là gì?Loại vòng lặp . cho vòng lặp. Vòng lặp for trong Python được sử dụng để lặp qua một chuỗi (danh sách, bộ dữ liệu, bộ, từ điển và chuỗi). Sơ đồ. . Trong khi lặp lại. Vòng lặp while được sử dụng để thực thi một tập hợp các câu lệnh miễn là một điều kiện là đúng. . Vòng lặp lồng nhau. Nếu một vòng lặp tồn tại bên trong phần thân của một vòng lặp khác, nó được gọi là vòng lặp lồng nhau |