In tên biến trong vòng lặp for Python

Bạn có thể sử dụng vòng lặp

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
05 để lặp qua bất kỳ khả năng lặp nào [iter-able]. Bất kỳ thứ gì bạn có thể lặp lại đều có thể được lặp lại bằng vòng lặp
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
05

Danh sách trong Python có thể lặp lại. Ở đây chúng ta có một biến

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
07 trỏ đến danh sách các chuỗi

>>> favorite_fruits = ["jujube", "pear", "watermelon", "apple", "blueberry"]

Chúng ta có thể lặp lại [còn gọi là "lặp lại"] danh sách

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
07 này bằng cách sử dụng vòng lặp
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
05

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry

Trong khi thực hiện vòng lặp đó, Python lấy từng thứ bên trong danh sách

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
07 và cấp cho chúng tôi quyền truy cập vào từng mục đó theo thứ tự, sử dụng tên biến
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
0. Chúng tôi đang sử dụng tên biến đó để in từng đối tượng [tất cả các chuỗi trong trường hợp này] ra ngoài

Bạn có thể sử dụng cái này cho bất cứ thứ gì có thể lặp lại. Một iterable là bất cứ thứ gì có thể được lặp lại bằng cách sử dụng vòng lặp

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
05

Vòng lặp sử dụng các chỉ mục, sai cách [đừng làm điều này]

Đôi khi mọi người viết các vòng lặp

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
05 của họ như thế này

>>> for i in range[len[favorite_fruits]]:
..     print[favorite_fruits[i]]
...
jujube
pear
watermelon
apple
blueberry

Có một vài lý do tôi không khuyến nghị điều này. Đầu tiên là PEP 8, hướng dẫn phong cách Python chính thức, khuyến nghị chống lại điều này. Một lý do khác là điều này chỉ hoạt động với trình tự

Trình tự là một trình tự có thể lặp lại mà bạn có thể lập chỉ mục [sử dụng dấu ngoặc vuông] bắt đầu từ 0 cho đến 1 nhỏ hơn độ dài của trình tự. Chuỗi, bộ dữ liệu và danh sách đều là ví dụ về trình tự. Bộ, từ điển, tệp, trình tạo và nhiều lần lặp khác không phải là trình tự

Lý do lớn nhất để không sử dụng điều này là chúng tôi đang làm rất nhiều công việc không cần thiết ở đây. Chúng tôi đang sử dụng các số

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
3, đại diện cho các chỉ mục, trong biến
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
4, sau đó sử dụng các chỉ mục đó để tra cứu từng mục trong danh sách của chúng tôi. Công việc làm thêm này giống như đi vào cửa sau của tòa nhà thay vì cửa trước. bạn vẫn đang đi vào một cánh cửa trong cả hai trường hợp nhưng bạn phải đi bộ xa hơn nhiều để đi qua cửa sau

Không chỉ vậy, chúng ta còn đang tập trung vào điều sai trái. chúng tôi đang tập trung vào chỉ số. Chúng tôi đang đặt một tên biến,

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
4, cho chỉ mục. Chúng tôi sẽ không đặt tên biến cho điều quan trọng nhất ở đây. mặt hàng thực tế chúng tôi đang làm việc với

Các vòng lặp
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
05 của Python không có [hoặc không cần] chỉ mục

Vòng lặp

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
05 của Python đặt tên cho từng mục thực tế mà chúng tôi đang làm việc [
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
0 trong trường hợp của chúng tôi]

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry

Nếu một cái gì đó quan trọng, nó xứng đáng được đặt tên. Các vòng lặp

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
05 của Python tự đặt tên cho các mục, không phải chỉ mục

Tóm lược

Khi bạn đang viết một vòng lặp

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
05 bằng Python, hãy làm cho nó đơn giản, càng đơn giản càng tốt. Nếu bạn cần đếm ngược khi lặp, chức năng trợ giúp tích hợp sẵn có thể giúp bạn làm điều đó và chúng ta có thể nói thêm về điều đó sau

Máy tính hiện đại có thể thực hiện hàng triệu hoặc thậm chí hàng tỷ lệnh trong một giây. Với các kỹ thuật được thảo luận cho đến nay, thật khó để có được một chương trình tự chạy trong hơn một phần giây.

Thực tế, chúng ta không thể viết hàng triệu lệnh để máy tính luôn bận. Để giữ cho máy tính thực hiện công việc hữu ích, chúng ta cần lặp đi lặp lại, lặp đi lặp lại cùng một khối mã. Có hai loại câu lệnh Python để làm điều đó. các vòng lặp

1
2
3
8 đơn giản hơn, chúng tôi sẽ thực hiện ngay và
1
2
3
9 vòng lặp, chúng tôi sẽ thực hiện sau, trong

Hai vòng sơ loại

  1. Giá trị của các biến đã được xác định có thể được cập nhật. Điều này sẽ đặc biệt quan trọng trong các vòng lặp. Để chuẩn bị cho điều đó, trước tiên chúng tôi theo dõi cách các biến có thể được cập nhật trong một tình huống thậm chí còn đơn giản hơn, trong đó các câu lệnh chỉ được thực hiện theo thứ tự văn bản
  2. Các loại trình tự được sử dụng trong vòng lặp
    1
    2
    3
    8. Chúng ta sẽ xem xét một loại trình tự cơ bản.
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    21

Sau đó, chúng tôi kết hợp tất cả lại với nhau. Đây là một phần dài. Đi chậm và cẩn thận

1. 13. 1. Cập nhật biến

Các chương trình cho đến nay đã xác định và sử dụng các biến, nhưng khác với các ví dụ shell ban đầu, chúng tôi đã không thay đổi giá trị của các biến hiện có. Bây giờ hãy xem xét một ví dụ đặc biệt đơn giản, vừa được chọn làm minh họa, trong tệp ví dụ

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
22

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
4

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
5

Bạn có thể dự đoán kết quả? . Đặc biệt nếu bạn không đoán đúng, điều quan trọng là phải hiểu điều gì sẽ xảy ra, từng bước một. Điều đó có nghĩa là theo dõi những thay đổi đối với các biến được thực hiện bởi mỗi câu lệnh

Trong bảng bên dưới, các câu lệnh được gọi bằng các số ghi nhãn các dòng trong mã ở trên. Chúng ta có thể theo dõi trạng thái của từng biến sau khi mỗi dòng được thực thi. Một dấu gạch ngang được hiển thị khi một biến không được xác định. Chẳng hạn, sau khi dòng 1 được thực thi, một giá trị được gán cho x, nhưng y vẫn chưa được xác định. Sau đó, y nhận được một giá trị trong dòng 2. Nhận xét bên phải tóm tắt những gì đang xảy ra. Vì x có giá trị 3 khi dòng 2 bắt đầu, nên x+2 bằng 3+2. Trong dòng thứ ba, chúng tôi sử dụng thực tế là phía bên phải của câu lệnh gán sử dụng các giá trị của biến khi dòng bắt đầu thực thi [phần còn lại sau khi dòng trước của bảng được thực thi], nhưng việc gán cho biến y ở bên trái gây ra . Dòng 4 sau đó thay đổi x, sử dụng giá trị mới nhất của y [10, không phải giá trị ban đầu 5. ]. Kết quả từ dòng 5 xác nhận giá trị của x và y

LinexyComment13- 2355=3+2, sử dụng giá trị của x từ dòng trước331010=2*5 ở bên phải, sử dụng giá trị của y từ dòng trước47107=10-3 ở bên phải, sử dụng giá trị của x và y từ . 7 10

Khi chúng ta tạo một bảng như vậy thì thứ tự thực hiện sẽ luôn là thứ tự của các dòng trong bảng. Trong mã tuần tự đơn giản này, nó cũng tuân theo thứ tự văn bản của chương trình. Theo dõi từng dòng thực hiện chương trình theo đúng thứ tự thực hiện, cẩn thận, theo dõi các giá trị hiện tại của các biến, sẽ được gọi là chơi máy tính. Một bảng như trên là một cách có tổ chức để theo dõi

1. 13. 2. Loại
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
21

Danh sách được sắp xếp thứ tự các dữ liệu tùy ý. Danh sách là loại dữ liệu đầu tiên được thảo luận cho đến nay có thể thay đổi. độ dài của chuỗi có thể được thay đổi và các phần tử được thay thế. Chúng tôi sẽ trì hoãn cuộc thảo luận về các thay đổi đối với danh sách cho đến khi giới thiệu thêm về các đối tượng. Danh sách có thể được viết rõ ràng. Đọc các ví dụ sau

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
7

Định dạng cơ bản là một danh sách dữ liệu tùy ý được đặt trong dấu ngoặc vuông, được phân tách bằng dấu phẩy

1. 13. 3. Hàm
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
24, Phần 1

Có một chức năng tích hợp sẵn

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
24, có thể được sử dụng để tự động tạo các chuỗi số học thông thường. Hãy thử cách sau trong Shell

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
0

Mô hình chung để sử dụng là

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
26sizeOfSequence
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
27

Cú pháp này sẽ tạo ra các số nguyên, mỗi lần một số nguyên, khi cần. Nếu bạn muốn xem tất cả các kết quả cùng một lúc dưới dạng danh sách, bạn có thể chuyển đổi thành

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
21 như trong các ví dụ trên. Dãy kết quả bắt đầu từ 0 và kết thúc trước tham số. Chúng ta sẽ thấy có những lý do chính đáng để bắt đầu từ con số 0 trong Python. Một thuộc tính quan trọng của các chuỗi được tạo bởi
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
29 là tổng số phần tử là
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
50. Trình tự bỏ qua số
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
50 mà thay vào đó bao gồm 0

Với nhiều tham số hơn, hàm

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
24 có thể được sử dụng để tạo ra nhiều chuỗi khác nhau hơn. Các chi tiết được thảo luận trong và

Trong thuật ngữ máy tính, việc tạo ra các giá trị của một chuỗi chỉ khi cần thiết được gọi là đánh giá lười biếng

1. 13. 4. Vòng lặp
1
2
3
8 cơ bản

Hãy thử cách sau trong Shell. Bạn nhận được một chuỗi các dòng tiếp tục trước khi Shell phản hồi. Sau khi nhìn thấy dấu hai chấm ở cuối dòng đầu tiên, Shell biết các dòng sau sẽ được thụt vào

Đảm bảo nhập một dòng trống khác. [Chỉ cần nhấn

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
54. ] ở cuối để Shell phản hồi.

1
2
3

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
2

Đây là một vòng lặp

1
2
3
8. Nó có tiêu đề bắt đầu bằng
1
2
3
8, tiếp theo là tên biến [trong trường hợp này là
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
57], từ
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
58, một chuỗi nào đó và dấu hai chấm cuối cùng. Như với các định nghĩa hàm và các dòng tiêu đề khác, dấu hai chấm ở cuối dòng cho biết rằng một khối câu lệnh được thụt lề nhất quán theo sau để hoàn thành vòng lặp
1
2
3
8

1
2
3
8 mục
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
58 trình tự
>>> for i in range[len[favorite_fruits]]:
..     print[favorite_fruits[i]]
...
jujube
pear
watermelon
apple
blueberry
92

câu lệnh thụt lề để lặp lại;

Khối các dòng được lặp lại một lần cho mỗi phần tử của chuỗi, vì vậy trong ví dụ này, hai dòng trong khối thụt lề được lặp lại ba lần. Hơn nữa, biến trong tiêu đề [

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
57 ở đây] có thể được sử dụng trong khối và mỗi lần nó nhận giá trị tiếp theo trong chuỗi, vì vậy lần đầu tiên qua vòng lặp
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
57 là 1, sau đó là 2 và cuối cùng là 3. Nhìn lại đầu ra và thấy rằng nó khớp với trình tự này. Một trình tự chi tiết hơn được đưa ra, chơi máy tính, trong bảng

Số dòngbình luận11bắt đầu với phần tử đầu tiên của danh sách21print 131‘yes’ * 1 is ‘yes’;

Khi thực hiện từng bước, lưu ý rằng tiêu đề vòng lặp

1
2
3
8 phục vụ hai mục đích

  • Mỗi khi dòng tiêu đề thực thi, nó ngầm gán một giá trị mới cho tên biến mà bạn sử dụng thay cho mục
  • Sau mỗi lần thực hiện dòng tiêu đề, các câu lệnh trong khối thụt lề được thực thi, thường sử dụng giá trị mới cho biến được gán trong tiêu đề

Ghi chú

Khi chơi máy tính với một vòng lặp, các số dòng giống nhau có thể xuất hiện lặp đi lặp lại, bởi vì dòng tiêu đề vòng lặp

1
2
3
8 và phần thân thụt vào bên dưới mỗi dòng được thực hiện lặp đi lặp lại. Mỗi khi một trong những dòng này được thực hiện, nó phải được liệt kê riêng, theo trình tự thời gian

Vòng lặp

1
2
3
8 về mặt kỹ thuật là một câu lệnh ghép đơn. Mức thụt đầu dòng của nó được coi là mức độ thụt đầu dòng của tiêu đề

Khi bạn sử dụng Shell để nhập một vòng lặp, có một lý do khiến trình thông dịch đợi phản hồi cho đến khi bạn nhập một dòng trống. Thông dịch viên không biết khối vòng lặp sẽ kéo dài bao lâu. Dòng trống là tín hiệu cho trình thông dịch biết rằng bạn đã hoàn thành khối vòng lặp và do đó sẵn sàng thực hiện câu lệnh vòng lặp phức hợp hoàn chỉnh

Hãy xem chương trình ví dụ sau

>>> for i in range[len[favorite_fruits]]:
..     print[favorite_fruits[i]]
...
jujube
pear
watermelon
apple
blueberry
98 và chạy nó

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
5

Trong một tệp mà người phiên dịch không cần trả lời ngay thì không cần dòng trống. Thay vào đó, như với một định nghĩa hàm hoặc bất kỳ định dạng nào khác có khối thụt lề, bạn cho biết đã vượt qua khối được thụt lề bằng cách thụt lề. Ở đây, câu lệnh

>>> for i in range[len[favorite_fruits]]:
..     print[favorite_fruits[i]]
...
jujube
pear
watermelon
apple
blueberry
99 sau đây có cùng mức thụt đầu dòng như tiêu đề vòng lặp
1
2
3
8. Vì chúng có cùng mức thụt đầu dòng nên chúng được thực hiện theo thứ tự. Do đó trong đoạn mã trên, “Đếm xong. ” được in một lần sau khi vòng lặp đầu tiên hoàn thành tất cả các lần lặp lại của nó. Việc thực thi chương trình kết thúc bằng một vòng lặp đơn giản khác

Đối với khối thụt lề trong một hàm, điều quan trọng là phải thụt lề đúng cách. Thay đổi mã ở trên, để dòng thứ tư được thụt vào

>>> for i in range[len[favorite_fruits]]:
..     print[favorite_fruits[i]]
...
jujube
pear
watermelon
apple
blueberry
9

Dự đoán thay đổi và chạy lại mã để kiểm tra

Vòng lặp là một trong những tính năng quan trọng nhất trong lập trình. Mặc dù cú pháp vòng lặp

1
2
3
8 khá đơn giản, nhưng việc sử dụng chúng một cách sáng tạo để giải quyết vấn đề [thay vì chỉ xem minh họa] là một trong những thách thức lớn nhất đối với nhiều người học ở cấp độ nhập môn. Một cách để đơn giản hóa đường cong học tập là phân loại các tình huống và mẫu thông thường và đặt tên cho chúng. Một trong những mẫu đơn giản nhất được minh họa trong tất cả các ví dụ về vòng lặp
1
2
3
8 cho đến nay, một vòng lặp for-each đơn giản. Đối với mỗi phần tử của chuỗi, hãy làm điều tương tự với nó. Được nêu dưới dạng mã giả Pythonic hơn

1
2
3
8 mục
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
58 trình tự
>>> for i in range[len[favorite_fruits]]:
..     print[favorite_fruits[i]]
...
jujube
pear
watermelon
apple
blueberry
92

làm điều gì đó với mục hiện tại

[Nó thậm chí còn giống tiếng Anh hơn nếu thay thế

1
2
3
8 bằng
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
67, nhưng phiên bản ngắn hơn là phiên bản được sử dụng bởi Python. ]

Trong các ví dụ về vòng lặp

1
2
3
8 ở trên, nội dung nào đó được in ra có liên quan đến từng mục trong danh sách. In chắc chắn là một hình thức “làm gì đó”, nhưng khả năng “làm gì đó” là hoàn toàn chung chung

Chúng ta có thể sử dụng vòng lặp for-each để sửa lại ví dụ đầu tiên trong Hướng dẫn. Nhớ lại mã từ madlib. py

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
6

Mỗi dòng đang thực hiện chính xác cùng một việc, ngoại trừ việc thay đổi chuỗi được sử dụng làm gợi ý, trong khi lặp lại phần còn lại của dòng. Đây là mẫu cho từng mẫu, nhưng chúng ta cần liệt kê trình tự mà các tín hiệu đến từ. Đọc phương án thay thế

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
9

Xem tính năng này đòi hỏi khả năng trừu tượng hóa mẫu chung từ nhóm các ví dụ. Điều này là cần thiết để sử dụng các vòng lặp một cách hiệu quả

Nếu bạn muốn xem hoặc chạy toàn bộ chương trình với sửa đổi nhỏ này, hãy xem ví dụ

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
69. Một quy ước đặt tên phổ biến được sử dụng trong chương trình. Mỗi phần tử trong danh sách là một
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
90, trong khi danh sách có tất cả các phần tử được đặt tên bằng số nhiều
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
91. Trong các tình huống sau này, tôi đặt tên danh sách là số nhiều của tên biến được sử dụng cho một mục riêng lẻ của danh sách

Lưu ý logic chuyển đổi giữa hai phiên bản chương trình. Các phần dữ liệu thay thế được thu thập trong danh sách trong tiêu đề vòng lặp

1
2
3
8. Một tên biến duy nhất [ở đây tôi chọn
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
90] được sử dụng trong tiêu đề làm trình giữ chỗ để chỉ lựa chọn hiện tại đang được xử lý và phần thân đề cập đến biến này
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
90 thay cho các giá trị dữ liệu rõ ràng được đưa vào mỗi lần trong phần gốc

Điều quan trọng là phải hiểu chuỗi hoạt động, cách thực hiện qua lại giữa tiêu đề và nội dung. Đây là những thông tin chi tiết

  1. đánh đầu lần đầu tiên. biến
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    90 được đặt thành phần tử đầu tiên của chuỗi,
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    96
  2. cơ thể lần đầu tiên. vì
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    90 bây giờ là
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    96, hãy thực thi hiệu quả
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    99 [Bỏ qua chi tiết về lệnh gọi hàm trong phác thảo này. ]
  3. đánh đầu lần thứ hai. biến
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    90 được đặt thành phần tử tiếp theo của chuỗi,
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    501
  4. cơ thể lần thứ hai. vì
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    90 bây giờ là
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    501, thực hiện hiệu quả
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    504
  5. đánh đầu lần thứ ba. biến
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    90 được đặt thành phần tử tiếp theo [cuối cùng] của chuỗi,
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    506
  6. cơ thể lần thứ ba. vì
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    90 bây giờ là
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    506, thực hiện hiệu quả
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    509
  7. tiêu đề được thực hiện. Vì không còn phần tử nào trong chuỗi, nên toàn bộ vòng lặp
    1
    2
    3
    8 được thực hiện và việc thực thi sẽ tiếp tục với câu lệnh sau nó [không thụt vào]

Trong ví dụ này, các giá trị dữ liệu chỉ là một vài chữ nhất định và chỉ có một dòng trong mẫu lặp lại. Do đó, việc sử dụng vòng lặp

1
2
3
8 không phải là vấn đề lớn, nhưng nó là một ví dụ đơn giản. Cấu trúc vòng lặp này sẽ thuận tiện hơn nhiều nếu bạn sửa đổi ví dụ mad lib ban đầu và có một câu chuyện với nhiều gợi ý hơn. Ngoài ra, bản sửa đổi này sẽ cho phép cải tiến thêm về , sau khi chúng tôi giới thiệu thêm về thao tác chuỗi

1. 13. 4. 1. Bài tập vòng lặp mẫu

Viết một vòng lặp for-each hai dòng trong tệp

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
512 chứa lệnh gọi hàm
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
513, sao cho mã này với vòng lặp for-each tạo ra đầu ra được in chính xác giống như mã trong tệp ví dụ
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
514. Mã
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
514 được hiển thị bên dưới

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
50

Thực thi cả hai phiên bản để tự kiểm tra. gợi ý 1. gợi ý 2.

1. 13. 4. 2. Ba bài tập

Hoàn thành chức năng sau. Mã bắt đầu này là trong

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
516. Lưu nó vào tên mới
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
517. Lưu ý cách một ví dụ được đưa ra trong chuỗi tài liệu. Nó mô phỏng việc sử dụng hàm trong Shell. Đây là quy ước chung

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
51

Các phần tử của danh sách trong tiêu đề vòng lặp
1
2
3
8 không phải cùng loại. Bạn cần sử dụng biến vòng lặp hai lần trong thân vòng lặp

1. 13. 5. Vòng lặp đơn giản

Các ví dụ trên đều sử dụng giá trị của biến trong tiêu đề vòng lặp

1
2
3
8. Cách sử dụng vòng lặp
1
2
3
8 thậm chí còn đơn giản hơn là khi bạn chỉ muốn lặp lại chính xác điều tương tự trong một số lần cụ thể. Trong trường hợp đó, chỉ độ dài của chuỗi chứ không phải các phần tử riêng lẻ là quan trọng. Chúng ta đã thấy rằng hàm
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
24 cung cấp một cách dễ dàng để tạo ra một chuỗi với một số phần tử xác định. Đọc và chạy chương trình ví dụ
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
522

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
52

Trong tình huống này, biến

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
523 không được sử dụng bên trong phần thân của vòng lặp for

Người dùng có thể chọn số lần lặp lại. Đọc và chạy chương trình ví dụ

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
524

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
53

Khi bạn đang đọc mã, bạn nhìn vào các tên biến khi chúng được giới thiệu và xem chúng được sử dụng ở đâu sau này. Trong các vòng lặp đơn giản ở trên, biến vòng lặp

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
523 được giới thiệu, bởi vì phải có một tên biến ở đó, nhưng nó không bao giờ được sử dụng

Một quy ước để chỉ ra biến vòng lặp đơn giản không bao giờ được sử dụng nữa, đó là sử dụng tên biến đặc biệt

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
526 [chỉ là dấu gạch dưới], như trong

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
54

1. 13. 6. Vòng lặp sửa đổi liên tiếp

Giả sử tôi có một danh sách các mục có tên là

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
527 và tôi muốn in ra từng mục và đánh số chúng liên tiếp. Chẳng hạn, nếu
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
527 là
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
529, tôi muốn xem đầu ra

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
55

Đọc về quá trình suy nghĩ sau đây để phát triển điều này

Nếu tôi cho phép mình bỏ qua những con số, nó rất dễ dàng. Đối với bất kỳ

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
530 nào trong danh sách, tôi có thể xử lý nó bằng

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
56

và tôi chỉ xem qua danh sách và làm điều đó cho từng người. [Copy và chạy nếu bạn thích. ]

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
57

Rõ ràng phiên bản phức tạp hơn với các con số có hoa văn nhất quán, mỗi dòng ít nhất là ở dạng

mục số

nhưng số thay đổi mỗi lần và các số không xuất hiện trực tiếp từ danh sách các mục

Một biến có thể thay đổi, do đó, thật hợp lý khi có một biến

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
531, vì vậy chúng tôi có khả năng làm cho nó thay đổi một cách chính xác. Chúng tôi có thể dễ dàng đạt được ngay lần đầu tiên và sau đó lặp lại cùng một con số. Đọc và chạy chương trình ví dụ
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
532

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
58

Tất nhiên điều này vẫn chưa hoàn toàn chính xác, vì ý tưởng là đếm. Sau khi số lần đầu tiên được in, nó cần được thay đổi thành 2, để đúng trong lần tiếp theo thông qua vòng lặp, như trong đoạn mã sau. Đọc và chạy chương trình ví dụ

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
533

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
59

Điều này gần hơn, nhưng vẫn không hoàn toàn chính xác, vì chúng tôi không bao giờ đạt đến 3. Chúng tôi cần một cách để thay đổi giá trị của số sẽ hoạt động mỗi lần qua vòng lặp. Mô hình đếm rất đơn giản, đơn giản đến mức bạn có thể không suy nghĩ một cách có ý thức về cách bạn đi từ số này sang số tiếp theo. Bạn có thể mô tả mô hình bằng cách nói rằng mỗi số tiếp theo nhiều hơn một số so với số trước đó. Chúng tôi cần có khả năng thay đổi

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
531 để nó nhiều hơn một lần so với trước đây. Đó là ý tưởng bổ sung chúng ta cần. Thay đổi dòng cuối cùng của thân vòng lặp để lấy chương trình ví dụ numberEntries3. py. Xem phần bổ sung và chạy nó

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
4

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
71

Điều quan trọng là phải hiểu các thay đổi từng bước trong quá trình thực hiện. Dưới đây là một bảng khác hiển thị kết quả chơi máy tính. Các số dòng quan trọng hơn nhiều ở đây để theo dõi luồng điều khiển, do nhảy xung quanh ở cuối vòng lặp

Một lần nữa lưu ý rằng các số dòng chương trình trong cột Dòng của bảng máy tính chơi không được liệt kê theo thứ tự, bởi vì dòng tiêu đề vòng lặp

1
2
3
8 và phần thân thụt vào bên dưới mỗi dòng được thực hiện lặp đi lặp lại

Để cho gọn, biến

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
527 không lấy cột riêng vì nó luôn lấy giá trị như trong chú thích ở dòng 1

lineitemnumbercomment1--đặt các mục thành ['đỏ', 'cam','vàng', 'xanh lá cây']2-1 3'đỏ'1bắt đầu với mục đầu tiên trong chuỗi4'đỏ'1in. 1 red5'red'22 = 1+13'orange'2vào phần tử tiếp theo trong dãy4'orange'2in 2 orange5'orange'33=2+13'yellow'3vào phần tử tiếp theo trong dãy4'yellow'3in 3 yellow5

Giá trị cuối cùng của số không bao giờ được sử dụng, nhưng điều đó không sao. Những gì chúng tôi muốn được in

Xem kỹ và đảm bảo rằng bạn hiểu ý nghĩa của từng mục trong bảng, lý do sắp xếp thứ tự và lý do vị trí chính xác của từng mục trong mỗi bước mà nó thay đổi. Cụ thể, hãy xem cách thức và lý do tại sao số dòng cho mỗi hàng kế tiếp không phải lúc nào cũng nhiều hơn hàng trước đó. Cụ thể, hãy xem cách lặp lại cùng một chuỗi các dòng được đánh số ở nhiều vị trí trong bảng. Nếu không có sự hiểu biết này, bạn sẽ không thể tự chơi máy tính và thực sự hiểu các vòng lặp

Ví dụ ngắn này minh họa rất nhiều ý tưởng quan trọng đối với các vòng lặp

  • Vòng lặp có thể chứa một số biến
  • Một cách mà biến có thể thay đổi là trở thành biến trong tiêu đề vòng lặp
    1
    2
    3
    8, tự động chuyển qua các giá trị trong danh sách vòng lặp
    1
    2
    3
    8
  • Một cách khác để các biến thay đổi trong một vòng lặp là có một câu lệnh rõ ràng làm thay đổi biến bên trong vòng lặp, gây ra các sửa đổi liên tiếp

Có một mô hình chung cho các vòng lặp với sự sửa đổi liên tiếp của một biến như

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
531 ở trên

  1. Các biến cần sửa đổi cần có giá trị ban đầu trước vòng lặp [dòng 1 trong ví dụ trên]
  2. Tiêu đề vòng lặp gây ra sự lặp lại. Trong một vòng lặp for, số lần lặp lại giống như kích thước của danh sách
  3. Phần thân của vòng lặp nói chung là "làm điều gì đó" [như in ở dòng 4] mà bạn muốn thực hiện lặp đi lặp lại
  4. Có mã bên trong phần thân của vòng lặp để thiết lập cho lần tiếp theo thông qua vòng lặp, trong đó biến cần thay đổi được chuyển thành giá trị tiếp theo của nó [dòng 5 trong ví dụ trên]

Thông tin này có thể được đưa vào một phác thảo mã

Khởi tạo các biến cần sửa đổi

Tiêu đề vòng lặp kiểm soát sự lặp lại

Thực hiện hành động mong muốn với các biến hiện tại

Sửa đổi các biến để sẵn sàng cho hành động vào lần tiếp theo

Nếu bạn so sánh mẫu này với các vòng lặp for-each và lặp lại đơn giản trong , bạn sẽ thấy rằng các ví dụ ở đó đơn giản hơn. Không cần sửa đổi biến rõ ràng để chuẩn bị cho lần tiếp theo thông qua vòng lặp. Chúng tôi sẽ đề cập đến mẫu mới nhất, tổng quát hơn như một vòng lặp sửa đổi liên tiếp

Các hàm tiện dụng để đóng gói một ý tưởng để sử dụng và tái sử dụng trong một chương trình cũng như để thử nghiệm. Chúng ta có thể viết một hàm để đánh số thứ tự một danh sách và dễ dàng kiểm tra nó với các dữ liệu khác nhau. Đọc và chạy chương trình ví dụ

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
540

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
72

Đảm bảo rằng bạn có thể làm theo toàn bộ trình tự, từng bước một. Chương trình này có luồng điều khiển phức tạp nhất từ ​​trước đến nay, thay đổi cả đối với lệnh gọi hàm và vòng lặp

  1. Thực thi bắt đầu với dòng cuối cùng, vì các dòng trước đó là định nghĩa

  2. Sau đó,

    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    541 bắt đầu thực thi

  3. Cuộc gọi đầu tiên đến

    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    542 đặt tham số chính thức một cách hiệu quả

    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    73

    và chức năng thực thi giống như quy trình tiếp theo trong

    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    543. Tuy nhiên, lần này, việc thực thi quay trở lại chính

  4. Một dòng trống được in trong dòng thứ hai của lệnh chính

  5. Cuộc gọi thứ hai đến

    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    542 có một tham số thực tế khác là
    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    545, vì vậy điều này đặt tham số chính thức một cách hiệu quả lần này

    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    74

    và hàm thực thi theo mẫu tương tự như trong

    >>> for fruit in favorite_fruits:
    ..     print[fruit]
    ...
    jujube
    pear
    watermelon
    apple
    blueberry
    
    543, nhưng với dữ liệu khác và vòng lặp ít hơn một lần

  6. Thực thi trở lại chính, nhưng không có gì khác để làm

1. 13. 7. vòng tích lũy

Giả sử bạn muốn cộng tất cả các số trong một danh sách,

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
547. Hãy để chúng tôi lập kế hoạch này như một chức năng ngay từ đầu, vì vậy hãy đọc mã bên dưới. Chúng ta có thể bắt đầu với

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
75

Nếu bạn không biết phải làm gì ngay lập tức, điều hữu ích nên làm là viết ra một trường hợp cụ thể và nghĩ cách bạn sẽ giải quyết nó một cách chi tiết đầy đủ. Nếu

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
547 là
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
549, bạn có thể sẽ tính toán

2 + 6 là 8

8 + 3 là 11

11 + 8 là 19

19 là câu trả lời được trả lại

Vì danh sách có thể dài tùy ý, bạn cần một vòng lặp. Do đó, bạn phải tìm một mẫu để bạn có thể tiếp tục sử dụng lại các câu lệnh tương tự trong vòng lặp. Rõ ràng là bạn đang sử dụng từng số trong dãy theo thứ tự. Bạn cũng tạo ra một tổng trong mỗi bước, mà bạn sử dụng lại trong bước tiếp theo. Mô hình là khác nhau, tuy nhiên, ở dòng đầu tiên, 2 + 6 là 8. không có tổng trước đó và bạn sử dụng hai phần tử từ danh sách. 2 không được cộng vào tổng trước đó

Mặc dù đây không phải là cách ngắn nhất để tính toán bằng tay, nhưng 2 là tổng của 0 + 2. Chúng ta có thể làm cho mẫu nhất quán và tính toán

bắt đầu với tổng bằng 0

0 + 2 là 2

2 + 6 là 8

8 + 3 là 11

11 + 8 là 19

19 là câu trả lời

Sau đó, phần thứ hai của mỗi tổng là một số từ danh sách,

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
547. Nếu chúng ta gọi số từ danh sách
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
551, dòng tính toán chính trong vòng lặp có thể là

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
76

Bí quyết là sử dụng cùng một dòng mã vào lần tiếp theo thông qua vòng lặp. Điều đó có nghĩa là những gì là ________ 1552 trong một lượt sẽ trở thành ________ 1553 trong lượt tiếp theo. Một cách để xử lý đó là

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
77

Bạn có thấy mô hình?

khởi tạo

tiêu đề vòng lặp

công việc chính được lặp lại

chuẩn bị cho lần tiếp theo thông qua vòng lặp

Đôi khi hai bước lặp chung có thể được kết hợp. Đây là một trường hợp như vậy. Vì

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
552 chỉ được sử dụng một lần, chúng tôi chỉ có thể thay thế giá trị của nó [
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
553] nơi nó được sử dụng và đơn giản hóa thành

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
78

vì vậy toàn bộ chức năng, với câu lệnh

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
556 là

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
79

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
00

Chương trình ví dụ

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
557 có mã ở trên với dòng sau được thêm vào cuối để kiểm tra chức năng [không thụt lề]. Chạy
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
557

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
01

Mẫu được sử dụng ở đây chắc chắn là sửa đổi liên tiếp [của biến

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
553]. Sẽ rất hữu ích khi đặt tên chuyên biệt hơn cho phiên bản mẫu này tại đây. Nó tuân theo một mô hình tích lũy

khởi tạo sự tích lũy để không bao gồm chuỗi nào [

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
560 tại đây]

1
2
3
8 mục
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
58 trình tự
>>> for i in range[len[favorite_fruits]]:
..     print[favorite_fruits[i]]
...
jujube
pear
watermelon
apple
blueberry
92

giá trị tích lũy mới = kết quả của việc kết hợp vật phẩm với giá trị tích lũy cuối cùng

Mẫu này sẽ hoạt động trong nhiều tình huống khác ngoài việc thêm số

thuật ngữ vòng lặp tiếng anh. Tất nhiên, bạn cần có khả năng chuyển từ mô tả vấn đề bằng tiếng Anh sang kế hoạch và sau đó triển khai nó bằng Python. Đặc biệt, điều rất quan trọng là nhận ra khi nào bạn cần chương trình của mình có một vòng lặp thông qua một chuỗi. Một số từ hoặc cụm từ phổ biến gợi ý một vòng lặp là gì? .

Khi bạn thấy nhu cầu về vòng lặp này, bạn cần lập kế hoạch cho mã của mình. Có rất nhiều câu hỏi mà bạn có thể thường xuyên tự hỏi mình về việc hoàn thiện dàn ý cho phần vòng lặp trong mã của mình

khởi tạo

tiêu đề vòng lặp

công việc chính được lặp lại

chuẩn bị cho lần tiếp theo thông qua vòng lặp

  1. Trình tự là gì?
  2. Viết tiêu đề vòng lặp
    1
    2
    3
    8. Với quyết định này, bạn không còn cần phải suy nghĩ về toàn bộ chương trình cùng một lúc. Bạn có thể tập trung vào những gì bạn làm cho một phần tử, với tên bạn đã đặt trong tiêu đề vòng lặp
  3. Tôi cần làm gì cho một phần tử của chuỗi?
  4. Hành động chính có liên quan đến một biến, ngoài biến vòng lặp, cần thay đổi mỗi lần qua vòng lặp không? . Cuối cùng, mã cập nhật này

1. 13. 7. 1. Chơi máy tính sumList Bài tập

Giả sử hàm

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
565, được xác định ở trên, được gọi với tham số
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
566. Chơi máy tính trong cuộc gọi này, sử dụng tệp
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
567, được mở từ cửa sổ hệ điều hành cho thư mục ví dụ. Không mở ở chế độ Chờ. Tệp sẽ xuất hiện trong trình xử lý văn bản thông thường của bạn. Ngay lập tức lưu tệp dưới dạng
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
568 và điền vào các ô trống trong bảng

Đảm bảo rằng có một hàng trong bảng cho mỗi dòng được thực thi trong chương trình, với một mục nhập dòng riêng cho mỗi lần một dòng được thực thi. Trong mỗi hàng, hãy nhập dòng chương trình nào đang được thực thi và hiển thị tất cả các thay đổi gây ra cho các biến khi thực hiện một dòng đó. Hiển thị số dòng như được hiển thị ở lề bên cạnh mã ví dụ trong Hướng dẫn. [Bản thân các tệp Python riêng biệt không hiển thị số dòng. ] Một bảng được bắt đầu cho bạn dưới đây. Hàng cuối cùng mà bạn nhập trong bảng của mình phải dành cho việc thực thi dòng được đánh số 6 trong mã và nhận xét của bạn có thể là "return 18"

Nếu cùng một giá trị biến trong một cột lặp lại qua một số hàng, sẽ thuận tiện hơn nếu chỉ để trống các mục nhập sau thay vì tiếp tục sao chép. Với quy ước này, giá trị hiện tại của một biến là giá trị cuối cùng được ghi ở dòng trước đó trong bảng

Đây là bài tập “Chơi máy tính” đầu tiên có vòng lặp. Hãy nhớ xem lại các ví dụ chơi trên máy tính trước đó. Các dòng trong vòng lặp [và do đó là số dòng của chúng] lặp lại nhiều lần dưới dạng các hàng trong bảng, khi bạn đi theo vòng lặp hết lần này đến lần khác

Tham số gốc, không thay đổi, không có cột trong bảng, cho gọn. Sự bắt đầu của bảng được hiển thị dưới đây. Như được hiển thị trong nhận xét đầu tiên, trong suốt cuộc gọi hàm,

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
547 là

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
02

Linesumnumcomment1--đặt số thành [5, 2, 4, 7];

1. 13. 7. 2. Kiểm tra sumList Bài tập

Viết chương trình

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
570 bao gồm hàm
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
541 để kiểm tra hàm sumList nhiều lần. Bao gồm một bài kiểm tra cho trường hợp cực đoan, với một danh sách trống

1. 13. 7. 3. Tham gia tất cả các bài tập

* Hoàn thành chức năng sau. Mã bắt đầu này là trong

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
572. Lưu nó với tên mới
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
573. Lưu ý cách một ví dụ được đưa ra trong chuỗi tài liệu. Nó mô phỏng việc sử dụng hàm trong Shell. Đây là quy ước chung

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
03

Gợi ý đầu tiên. Gợi ý thứ hai.

1. 13. 8. Chơi máy tính nhiều hơn

Kiểm tra mã bằng cách chạy nó cũng được, nhưng nhìn vào kết quả không có nghĩa là bạn thực sự hiểu chuyện gì đang xảy ra, đặc biệt nếu có lỗi. Những người không hiểu chuyện gì đang xảy ra có khả năng thực hiện các thay đổi ngẫu nhiên đối với mã của họ nhằm cố gắng sửa lỗi. Đây là một thói quen rất tồi tệ, ngày càng tự chuốc lấy thất bại, vì bạn có thể sẽ không bao giờ biết được vấn đề thực sự nằm ở đâu và vấn đề tương tự có thể sẽ quay lại cắn bạn.

Điều quan trọng là có thể dự đoán chính xác mã sẽ làm gì. Chúng tôi đã minh họa việc chơi máy tính trên nhiều đoạn mã nhỏ khác nhau

Chơi máy tính có thể giúp bạn tìm lỗi [lỗi trong mã của bạn]. Một số lỗi là lỗi cú pháp do trình thông dịch bắt được trong bản dịch. Một số lỗi chỉ được trình thông dịch bắt gặp trong khi thực thi, chẳng hạn như không có giá trị cho một biến bạn sử dụng. Các lỗi khác hoàn toàn không được thông dịch viên bắt được - bạn chỉ nhận được câu trả lời sai. Chúng được gọi là lỗi logic. Các lỗi logic trước đó cũng có thể gây ra lỗi thực thi sau này. Đây là khi chơi máy tính đặc biệt hữu ích

Một lỗi phổ biến khi cố gắng viết hàm

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
542 là có đoạn mã sau [trích từ
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
575]

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
79

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
05

Bạn có thể chạy mã này và thấy rằng nó tạo ra câu trả lời sai. Nếu bạn chơi máy tính trên cuộc gọi đến

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
576, bạn có thể thấy vấn đề

Số mục hàngNhận xét1--đặt các mục thành [‘apples’, ‘lê’, ‘chuối’]3‘apples’-bắt đầu với mục đầu tiên trong chuỗi 4‘apples’1 5‘apples’11 in. 1 quả táo6‘quả táo’22 = 1+13‘quả lê’2đến phần tử tiếp theo trong chuỗi4‘quả lê’1 5‘quả lê’1 bản in. 1 quả lê

Nếu bạn đi từng bước một, bạn sẽ thấy 1 cái sai đến từ đâu. việc khởi tạo được lặp lại mỗi lần trong vòng lặp ở dòng 4, hoàn tác việc tăng

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
531 ở dòng 6, làm xáo trộn số đếm của bạn

Cảnh báo

Luôn cẩn thận rằng việc khởi tạo một lần của bạn cho một vòng lặp diễn ra trước vòng lặp, không phải trong vòng lặp đó

Hàm cũng có thể trả về giá trị. Hãy xem xét Python cho chuỗi toán học này. xác định hàm m[x] = 5x, đặt y = 3;

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
4

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
07

Mã này là ví dụ

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
578. Một ví dụ tương tự đã được xem xét trong , nhưng bây giờ thêm ý tưởng chơi máy tính và ghi trình tự vào bảng. Giống như khi bạn đơn giản hóa một biểu thức toán học, Python phải hoàn thành những phần trong cùng trước. Theo dõi các thay đổi có nghĩa là tuân theo các lời gọi hàm một cách cẩn thận và sử dụng các giá trị được trả về. Một lần nữa, dấu gạch ngang '-' được sử dụng trong bảng để biểu thị một biến không xác định. Không chỉ các biến cục bộ như tham số chính thức không được xác định trước khi chúng được sử dụng lần đầu tiên, chúng cũng không được xác định sau khi kết thúc hàm,

LinexyComment1-3  Ghi nhớ định nghĩa của m4-3 5-3bắt đầu từ. in[m[y] + m[2*y-1]]; . print[15 + m[2*y-1]], muốn m[2*y-1], là m[2*3-1] = m[5]153 chuyển 5 cho hàm m, vì vậy x=5253return 5 . in [15 + 25], vì vậy hãy tính và in ra 40

Cho đến nay, hầu hết các mã được cung cấp đã được thúc đẩy trước, vì vậy bạn có thể biết những gì sẽ xảy ra. Bạn có thể cần đọc mã do người khác viết [hoặc thậm chí là chính bạn trước đây. ] nơi bạn không chắc chắn những gì được dự định. Ngoài ra, bạn có thể mắc lỗi và vô tình viết mã làm điều gì đó ngoài ý muốn. Nếu bạn thực sự hiểu cách thức hoạt động của Python, từng dòng một, bạn sẽ có thể chơi máy tính và làm theo ít nhất các chuỗi mã ngắn chưa được giải thích trước đây. Sẽ rất hữu ích khi đọc mã của người khác và cố gắng làm theo nó. Các bài tập tiếp theo cũng cung cấp các mã chưa được giải thích trước hoặc có lỗi

1. 13. 8. 1. Chơi bài tập vòng lặp lẻ trên máy tính

* Làm việc trong trình xử lý văn bản [không phải Idle. ], bắt đầu từ ví dụ

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
579 và lưu tệp dưới dạng
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
580. Trong file có lập bảng cho bài này và 2 bài tập sau

Chơi máy tính trên đoạn mã sau

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
79

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
09

Kiểm tra thực tế. 31 được in khi dòng 6 cuối cùng thực thi. Bắt đầu bảng cho bài tập này được hiển thị dưới đây

LinexynBình luận10

1. 13. 8. 2. Chơi bài tập lỗi máy tính

* Trong trình xử lý văn bản, hãy thêm vào tệp

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
580, đã bắt đầu trong bài tập trước

Đoạn mã sau được cho là tính tích của các số trong danh sách. Ví dụ:

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
582 sẽ tính và trả về 5*4*6=120 theo các bước, tính 5, 5*4=20 và 20*6=120

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
4

1
2
3
1

Mã cho bài tập này xuất hiện trong tệp ví dụ

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
583

Công dụng chính của việc chơi máy tính là để xem chính xác nơi dữ liệu mà bạn mong đợi bị xáo trộn. Chơi máy tính trên một cuộc gọi tới

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
582 cho đến khi bạn thấy rằng nó mắc lỗi và tạo ra một số sai. Sau đó, bạn có thể ngừng mở rộng bảng, chỉ cần kết thúc bằng nhận xét về cách hiển thị lỗi hiện tại

Tiêu đề bảng và hàng đầu tiên của bảng cho bài tập này được hiển thị bên dưới

LinenprodComment1--Đặt số thành [5, 4, 6]2

Sau đó, bạn có thể dừng lại và sửa chữa nó. Đầu tiên sao chép

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
583 sang
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
586 và sửa tệp mới [và lưu lại. ]

1. 13. 8. 3. Chơi bài tập chức năng máy tính

* Trong trình xử lý văn bản, thêm một lần nữa vào tệp

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
580, đã bắt đầu trong các bài tập trước

Chơi máy tính trên đoạn mã sau

1
2
3

1
2
3
3

Kiểm tra thực tế. 70 được in

Tiêu đề bảng và hàng đầu tiên của bảng cho bài tập này được hiển thị bên dưới

LinexComment1-2 Ghi nhớ định nghĩa f3

Bạn sẽ xem lại dòng 3 nhiều lần, với các dòng bảng thực thi hàm

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
588 xen kẽ. Nhìn vào ví dụ trên có bảng hiển thị hàm
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
589 trả về giá trị hai lần

1. 13. 9. Từ khóa hàm
>>> for i in range[len[favorite_fruits]]:
..     print[favorite_fruits[i]]
...
jujube
pear
watermelon
apple
blueberry
99
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
591

Theo mặc định, chức năng in thêm một dòng mới vào cuối chuỗi được in. Điều này có thể được ghi đè bằng cách bao gồm tham số từ khóa

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
591. Kết thúc từ khóa có thể được đặt bằng bất kỳ chuỗi nào. Các thay thế phổ biến nhất là chuỗi trống hoặc một ô trống. Nếu bạn cũng sử dụng tham số từ khóa
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
593, thì các tham số từ khóa này có thể theo một trong hai thứ tự, nhưng tham số từ khóa phải ở cuối danh sách tham số. Đọc hình ảnh minh họa

1
2
3
4

tương đương với

1
2
3
5

Điều này không hoạt động trực tiếp trong trình bao [nơi bạn luôn bị buộc phải chuyển sang một dòng mới ở cuối]. Nó hoạt động trong một chương trình, nhưng nó không hữu ích lắm ngoại trừ trong một vòng lặp

Giả sử tôi muốn in một dòng có tất cả các thành phần của danh sách, được phân tách bằng dấu cách, nhưng không phải trên các dòng riêng biệt. Tôi có thể sử dụng từ khóa

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
591 được đặt thành khoảng trắng trong vòng lặp. Bạn có thể hình dung trong đầu tệp ví dụ này
>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
595 làm gì không?

1
2
3
6

Nếu bạn vẫn muốn chuyển sang một dòng mới ở cuối vòng lặp, bạn phải bao gồm chức năng in chuyển sang dòng tiếp theo, một lần, sau vòng lặp. Hãy thử biến thể này,

>>> for fruit in favorite_fruits:
..     print[fruit]
...
jujube
pear
watermelon
apple
blueberry
596

Bạn có thể đặt biến trong vòng lặp for Python không?

Một vòng lặp for trong Python có hai thành phần. Một thùng chứa, trình tự hoặc trình tạo chứa hoặc tạo ra các phần tử được lặp lại. Nói chung, bất kỳ đối tượng nào hỗ trợ giao thức lặp của Python đều có thể được sử dụng trong vòng lặp for. Biến chứa từng phần tử từ vùng chứa/trình tự/trình tạo .

Bạn có thể gọi các biến trong vòng lặp for không?

Bất kỳ biến nào được khai báo bên trong vòng lặp for hoặc while hoặc bên trong dấu ngoặc đơn của câu lệnh for chỉ có thể được sử dụng trong phần thân của vòng lặp .

Có thể sử dụng chữ in làm tên biến trong Python không?

print chỉ là một từ dành riêng trong Python 2, Python 3 đã thay đổi nó thành một hàm, về cơ bản là một biến mà bạn có thể gọi. Vì vậy, có, bạn có thể tạo một biến có tên print và thậm chí thay thế hàm mặc định trong Python 3 .

Chủ Đề