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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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ỉ địnhVấn đề. Hình chữ nhật 10 x 10 Sao
In 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]for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
7for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
7for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
7for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
7for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
7_______97
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
7for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
7for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
7for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
7Gợi ý và hướng dẫn
Ví dụ hoạt động như thế nào? . Giá trị mặc định của biến là
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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 for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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án
Kiểm tra giải pháp của bạn ở đây.
Vấn đề. Hình chữ nhật có N x N Sao
Viế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ị
InputOutputInputOutputInputOutput2for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
6for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
63for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
8for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
8for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
84for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
61for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
61for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
61for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
61Gợi ý và hướng dẫn
Nhiệm vụ tương tự như trước
Thử nghiệm trong Hệ thống Thẩm phán
Kiể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
- Khi các vòng lặp lồng nhau bắt đầu thực thi, vòng lặp bên ngoài bắt đầu trước. khởi tạo biến điều khiển của nó được thực hiện và sau khi kiểm tra kết thúc vòng lặp, mã trong phần thân của nó được thực thi
- Sau đó, vòng lặp bên trong được thực hiện. Vị trí bắt đầu của biến điều khiển được khởi tạo, việc kiểm tra kết thúc vòng lặp được thực hiện và mã trong phần thân của nó được thực thi
- Khi đạt đến giá trị đặt cho phần cuối của vòng lặp, chương trình sẽ quay lại một bước và tiếp tục thực hiện vòng lặp bên ngoài trước đó. Biến điều khiển của vòng lặp bên ngoài thay đổi theo một bước, kiểm tra được thực hiện để xem liệu điều kiện để kết thúc vòng lặp có được đáp ứng hay không và một lần thực hiện mới của vòng lặp lồng nhau [bên trong] được bắt đầu
- Việc này được lặp lại cho đến khi biến của vòng lặp ngoài thỏa mãn điều kiện kết thúc vòng lặp
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 [
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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ả for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
66, chúng tôi viết. for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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à for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
66** lầnVấn đề. Quảng trường Ngôi sao
In trên bàn điều khiển một hình vuông có N x N dấu hoa thị
InputOutputInputOutputInputOutput2for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
70______9703
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
72for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
72for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
724for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
75for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
75for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
75for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
75Gợi ý và hướng dẫn
Vấ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án
Kiểm tra giải pháp của bạn ở đây.
Vấn đề. Tam giác đô la
Viế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
InputOutputInputOutputInputOutput3for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
79for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
70for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
714for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
79for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
70for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
71for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
755for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
79for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
70for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
71for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
75for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
70Gợi ý và hướng dẫn
Bà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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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án
Kiểm tra giải pháp của bạn ở đây.
Vấn đề. khung vuông
Viế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
InputOutputInputOutput3for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
72for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
73for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
724for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
75for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
76for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
76for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
75InputOutputInputOutput5for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
79for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
70for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
70for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
70for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
796for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
74for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
75for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
75for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
75for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
75for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
74Gợi ý và hướng dẫn
Chúng ta có thể giải quyết vấn đề theo cách sau
- Chúng tôi đọc từ bảng điều khiển số
66for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Chúng tôi in phần trên. đầu tiên là dấu hiệu
71, sau đó là n-2 lầnfor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
72 và cuối cùng là dấu hiệufor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
71for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Chúng tôi in phần giữa. chúng tôi in n-2 hàng, như lần đầu tiên chúng tôi in ký hiệu
74, sau đó n-2 lầnfor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
72 và cuối cùng lại là ký hiệufor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
74. Chúng ta có thể làm điều này với các vòng lặp lồng nhaufor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Chúng tôi in phần dưới. đầu tiên là dấu hiệu
71, sau đó là n-2 lầnfor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
72 và cuối cùng là dấu hiệufor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
71for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
Đâ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án
Kiểm tra giải pháp của bạn ở đây.
Vấn đề. Hình thoi sao
Viế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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
702for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
71for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
72for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
71InputOutputInputOutput3
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
74for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
75for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
76for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
75for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
744for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
79for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
70for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
71for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
72for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
71for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
70for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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- Chúng tôi in khoảng trắng
77for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Chúng tôi in
70for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Chúng tôi in
79 lầnfor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
70for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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. for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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án
Kiểm tra giải pháp của bạn ở đây.
Vấn đề. cây giáng sinh
Viế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
InputOutputInputOutput1for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
03____0042
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
05for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
06for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
07InputOutputInputOutput3for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
08for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
09for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
10for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
114for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
12for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
13for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
14for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
15for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
16Gợi ý và hướng dẫn
Từ 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à
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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án
Kiểm tra giải pháp của bạn ở đây.
Vẽ các hình phức tạp hơn
Hã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âm
Viế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ụ
InputOutputInputOutput3for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
18for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
19for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
184for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
21for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
22for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
23for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
21InputOutput5
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
25for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
26for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
27for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
26for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
25Hints and Guidelines
Từ 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à
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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án
Kiể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ụ
InputOutputInputOutputInputOutput2for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
6for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
353
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
36for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
8for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
384for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
39for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
61for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
41for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
41InputOutputInputOutput5for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
43for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
44for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
45for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
46for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
468for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
48for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
49for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
50for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
51for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
52for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
52for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
52for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
52Hints and Guidelines
Từ phần mô tả vấn đề, chúng tôi hiểu rằng ngôi nhà có kích thước
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
66 x for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
66. Những gì chúng ta thấy từ đầu vào và đầu ra ví dụ là- Ngôi nhà được chia thành hai phần. mái nhà và cơ sở
- Khi
66 là số chẵn, điểm của nhà cái là "xỉu"for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Khi
66 là số lẻ, mái có đầu nhọn và lớn hơn chân đế một hàngfor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Nó bao gồm dấu hoa thị và dấu gạch ngang
- Ở phần cao nhất, có một hoặc hai dấu hoa thị, tùy thuộc vào n chẵn hay lẻ, cũng như các dấu gạch ngang
- Ở phần dưới cùng, có nhiều dấu hoa thị và ít hoặc không có dấu gạch ngang
- Với mỗi hàng thấp hơn, dấu hoa thị tăng thêm 2 và dấu gạch ngang cũng giảm 2
- Chiều cao là
66 hàngfor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Nó được tạo thành từ dấu hoa thị và dấu gạch chéo dọc
- Mỗi hàng bao gồm 2 dấu gạch chéo dọc – một ở đầu và một ở cuối hàng, đồng thời có dấu hoa thị giữa các dấu gạch chéo dọc với độ dài chuỗi là
61for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
Chúng tôi đọc số đầu vào
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
66 từ bảng điều khiển và viết giá trị của nó vào một biếnfor row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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à
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
64- Nếu
66 là số lẻ sẽ có 1 saofor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Nếu chẵn sẽ có 2
Tính chiều dài của mái nhà. Nó bằng một nửa của
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
66. Viết kết quả vào biến for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
67Ghi chú. Để sử dụng
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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 for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
69. Điều này được thực hiện bằng lệnh for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
70. Bạn nên viết for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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ử
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
74. for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
67. Trên mỗi lần lặp, chúng ta sẽ- Tính số gạch ngang cần vẽ. Số sẽ bằng
77. Chúng tôi lưu trữ nó trong biếnfor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
78for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Chúng tôi in trên bàn điều khiển. "dấu gạch ngang" [
78 lần] + "dấu hoa thị" [for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
64 lần] + "dấu gạch ngang" [for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
78 lần]for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Trước khi quá trình lặp kết thúc, chúng tôi thêm 2 vào
64 [số dấu hoa thị]for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
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
- Chúng tôi bắt đầu với một vòng lặp từ 0 đến
66 [độc quyền]for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Chúng tôi in trên bảng điều khiển.
74 +for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
70 [for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
61 lần] +for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
74for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
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án
Kiểm tra giải pháp của bạn ở đây.
Vấn đề. Kim cương
Viế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
InputOutputInputOutputInputOutput1for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
702
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
63for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
36for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
91for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
36InputOutputInputOutputInputOutput4for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
39for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
94for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
395for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
43for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
97for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
98for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
97for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
436
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
601for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
602for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
603for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
602for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
601InputOutputInputOutputInputOutput7
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
606for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
607for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
608for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
609for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
608for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
607for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
6068
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
48for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
614for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
615for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
616for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
615for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
614for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
489
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
620for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
621for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
622for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
623for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
624for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
623for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
622for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
621for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
620Gợi ý và hướng dẫn
Nhữ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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
66 x for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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. Nó bắt đầu từ đầu trên xuống giữa
- Phần dưới. Nó bắt đầu từ hàng bên dưới hàng giữa và đi xuống hàng dưới [bao gồm]
- Nếu n là số lẻ thì bắt đầu bằng 1 dấu hoa thị
- Nếu n là số chẵn thì bắt đầu bằng 2 dấu hoa thị
- Với mỗi hàng xuống, các dấu hoa thị sẽ cách xa nhau hơn
- Khoảng cách giữa, trước và sau dấu hoa thị được lấp đầy bằng dấu gạch ngang
- Với mỗi hàng xuống, các dấu hoa thị lại gần nhau hơn. Điều này có nghĩa là khoảng cách [dấu gạch ngang] giữa chúng ngày càng nhỏ hơn và khoảng cách [dấu gạch ngang] ở bên trái và bên phải ngày càng lớn hơn
- Phần dưới cùng có 1 hoặc 2 dấu hoa thị, tùy thuộc vào n là số chẵn hay số lẻ
- Trên mỗi hàng, ngoại trừ hàng ở giữa, các dấu hoa thị được bao quanh bởi các dấu gạch ngang bên trong và bên ngoài
- Trên mỗi hàng, có khoảng cách giữa hai dấu hoa thị, ngoại trừ hàng đầu tiên và hàng cuối cùng [đôi khi dấu hoa thị là 1]
Chúng tôi đọc giá trị của
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
66 từ bảng điều khiển, chuyển đổi nó thành loại for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
634 [các dấu gạch ngang ở bên ngoài các dấu hoa thị]. Nó bằng for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
635, làm tròn xuốngSau khi tính được
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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ừ for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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 in trên bảng điều khiển các dấu gạch ngang bên trái [có chiều dài
634] và dấu hoa thị đầu tiên ngay sau chúngfor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Ta sẽ tính khoảng cách giữa hai dấu hoa thị. Chúng ta có thể làm điều này bằng cách trừ đi từ n số dấu gạch ngang bên ngoài và số 2 [số dấu hoa thị, i. e. đường viền của viên kim cương]. Chúng ta cần lưu trữ kết quả của phép trừ trong một biến
639for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
Nếu
639 thấp hơn 0, chúng tôi biết rằng trên hàng chỉ nên có 1 sao. Nếu nó lớn hơn hoặc bằng 0 thì chúng ta phải in các dấu gạch ngang có độ dàifor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
639 và một dấu hoa thị sau chúngfor row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
Chúng tôi in trên bảng điều khiển các dấu gạch ngang bên ngoài bên phải có chiều dài
634for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
- Ở cuối vòng lặp, chúng tôi giảm
634 xuống 1 [các dấu hoa thị đang di chuyển ra xa nhau]for row in range[5]: print['*', end=''] for col in range[4]: print[' *', end=''] print[]
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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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 for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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án
Kiể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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
4Chúng tôi đã học cách vẽ hình bằng cách sử dụng vòng lặp
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
6 lồng nhaufor row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
phòng thí nghiệm. Vẽ hình trong môi trường web
Bâ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 Web
Phá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ỳ
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
6Gợi ý và hướng dẫn
Chú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
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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ườngfor row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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à
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
650, có nghĩa là hàm for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
651 trong tệp for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
652Mã từ hàm
for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
651 lấy số đã nhập for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
654 từ biểu mẫu và chuyển nó tới hàm for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
655. Hàm for row in range[5]:
print['*', end='']
for col in range[4]:
print[' *', end='']
print[]
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/