Hướng dẫn for loop not looping python - vòng lặp for not looping python

Tôi đang viết một chức năng loại bỏ tất cả các nguyên âm khỏi một từ. Có vẻ như thế này:

def remove_vowels[word]:

    vowels = ['a', 'e', 'i', 'o', 'u']

    word = list[word]

    for letter in word:
        print['Looking for letter {}'.format[letter]]

        if letter.lower[] in vowels:
            try: 
                word.remove[letter]
            except ValueError:
                pass

    return ''.join[word]

Tôi hy vọng nó sẽ đi qua tất cả các chữ cái trong từ, kiểm tra từng chữ cái nếu nó nằm trong mảng nguyên âm và, nếu vậy, hãy xóa nó.

Tuy nhiên, dường như nó không kiểm tra tất cả các chữ cái. Ví dụ: cho cuộc gọi sau:

print[remove_vowels['perception']]

Tôi đang nhận được đầu ra sau:

Looking for letter p
Looking for letter e
Looking for letter c
Looking for letter e
Looking for letter t
Looking for letter i
Looking for letter n
prcpton

Vì một số lý do, nó bỏ qua

for i in range[3, int[121**.5] + 1, 2]:
    print i
2,
for i in range[3, int[121**.5] + 1, 2]:
    print i
3 và
for i in range[3, int[121**.5] + 1, 2]:
    print i
4 thứ hai. Tôi đang nhận được một kết quả tương tự với các từ khác. Tại sao chuyện này đang xảy ra?

0 điểm

Khoảng 9 năm

def is_prime[x]:
    if x < 2:
        return False
    elif x == 2:
        return True
    elif x % 2 == 0:
        return False
    else:
        for i in range[3, int[x**.5] + 1, 2]:
            ans = x % i     # This line and next are to
            print x, "%", i, "=", ans    # print test runs
            if x % i == 0:
                return False
            else:
                return True

Tôi nhận được một chức năng của người Viking không thành công trên 121, trả về đúng khi nó sẽ trả về sai. Bản in đầu ra thử nghiệm của tôi cho thấy nó chỉ kiểm tra x % 3, tại sao không phải là vòng lặp của tôi cho vòng lặp chạy qua 3, 5, 7, 9 và 11 [căn bậc hai của 121]? Nghĩ rằng phạm vi của tôi sẽ kiểm tra tất cả các số nguyên lẻ từ 3 đến sqrt của x.

Trả lời 52148EFC548C358FDE00189B

for i in range[3, int[121**.5] + 1, 2]:
    print i

đầu ra

3
5
7
9
11

Có lẽ bạn trở lại quá sớm, hãy xem xét điều đó đối với If-Else, một trong số họ sẽ luôn thực hiện

điểm

Khoảng 9 năm

Tôi nhận được một chức năng của người Viking không thành công trên 121, trả về đúng khi nó sẽ trả về sai. Bản in đầu ra thử nghiệm của tôi cho thấy nó chỉ kiểm tra x % 3, tại sao không phải là vòng lặp của tôi cho vòng lặp chạy qua 3, 5, 7, 9 và 11 [căn bậc hai của 121]? Nghĩ rằng phạm vi của tôi sẽ kiểm tra tất cả các số nguyên lẻ từ 3 đến sqrt của x.

  • Trả lời 52148EFC548C358FDE00189B

    đầu ra

    Có lẽ bạn trở lại quá sớm, hãy xem xét điều đó đối với If-Else, một trong số họ sẽ luôn thực hiện

    điểm

  • Trả lời 52148EFC548C358FDE00189B

    đầu ra

    Có lẽ bạn trở lại quá sớm, hãy xem xét điều đó đối với If-Else, một trong số họ sẽ luôn thực hiện

    điểm

  • Trả lời 52148EFC548C358FDE00189B

    đầu ra

    Có lẽ bạn trở lại quá sớm, hãy xem xét điều đó đối với If-Else, một trong số họ sẽ luôn thực hiện

    điểm

Các khóa học miễn phí phổ biến

Tôi có một danh sách các chuỗi. Tôi muốn xóa tất cả các mục khỏi danh sách bắt đầu bằng ký tự '#'. Nhưng chạy vòng lặp của tôi chỉ quản lý để loại bỏ một tập hợp các mục được nhắm mục tiêu. Sau đó, tôi chạy lại vòng lặp trong cùng một danh sách và nó loại bỏ một bộ khác. Nhưng tôi phải làm điều này nhiều lần trước khi nó thông qua toàn bộ danh sách.

Đây là mã của tôi:

for item in list:

    if item[0] == "#":
        
        list.remove[item]
	
        print["item removed: ", item]

Khi tôi chạy mã này lần đầu tiên nó sẽ không xóa tất cả các mục tôi muốn xóa. Chỉ 9. Vì vậy, tôi sao chép và dán cùng một mã vào nhàn rỗi và chạy lại và nó sẽ loại bỏ thêm 4 mục, nhưng vẫn không phải tất cả. Vì vậy, tôi dán và chạy nó một lần nữa và 2 cái khác được gỡ bỏ, nhưng không phải tất cả. Vì vậy, tôi chạy nó một lần nữa và nó loại bỏ 1, sau đó một lần nữa và nó loại bỏ 1. Điều này thực sự lạ. Điều gì đang xảy ra?

Lưu ý: Tôi dự định mở rộng phần này một chút, nhưng bạn cũng có thể đọc bài học xuất sắc ở đây: Chương 2: Điều khiển dòng chảy - cho các vòng lặp và hàm phạm vi []Chapter 2: Flow Control – for Loops and the range[] Function

Tại sao lại lặp?

Một vòng lặp là một cấu trúc lập trình trong đó chúng tôi xác định một khối mã mà chúng tôi muốn máy tính thực thi nhiều lần, cũng như số lần máy tính nên thực thi khối mã đó.loop is a programming construct in which we define a block of code that we want the computer to execute repeatedly, as well as how many times the computer should execute that block of code.

Theo "khối mã", ý tôi là, bất kỳ mã nào. Ví dụ: đây là mã Python để in

for i in range[3, int[121**.5] + 1, 2]:
    print i
5:

print["hello world"]

Và đây là tập lệnh lặp lại "khối mã" 5 lần:

print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]

Đủ đơn giản. Nhưng điều gì sẽ xảy ra nếu tôi muốn chạy khối mã đó 50 lần. Hoặc 5.000.000 lần? Sao chép và dán chỉ có thể giúp chúng tôi cho đến nay.

Nhưng với một vòng lặp, chúng ta có thể ra lệnh cho máy tính thực thi khối mã đó bao nhiêu lần tùy thích, mà không viết mã đó, lặp đi lặp lại.loop, we can command the computer to execute that block of code as many times as we want, without physically writing that code, over and over.

Đây là những gì mà tập lệnh in-hello-5-Times trước đó trông giống như một vòng lặp cơ bản trong Python:for-loop in Python:

for x in range[5]:
    print["hello world"]

Giải phẫu của một vòng lặp rất nhàm chán

Dù bạn có tin hay không, có rất nhiều điều để hiểu trong đoạn trích hai dòng nhàm chán đó. Dưới đây là những điểm nổi bật, mà tôi sẽ giải thích trong suốt bài học này.

  1. Hàm phạm vi [] đó tạo ra một trong các kiểu dữ liệu của Python. Việc giải thích chính xác và hoàn toàn hơn là chỉ để chỉ Intuit: hàm phạm vi [] có một đối số và tạo ra một chuỗi các số từ
    for i in range[3, int[121**.5] + 1, 2]:
        print i
    6 cho đến đối số đó. Bản thân hàm phạm vi [] không phải là một phần cơ bản của _for-loop-Tôi chỉ sử dụng nó trong ví dụ cơ bản này vì đó là cách dễ nhất trong Python để nói: Này, lặp lại 5 lần.range[] function takes creates one of Python's data types. It's harder to accurately and completely explain than it is to just intuit: the range[] function takes one argument and produces a sequence of numbers from
    for i in range[3, int[121**.5] + 1, 2]:
        print i
    6 up until that argument. The range[] function itself is not a fundamental part of the _for-loop – I just use it in _this basic example as it's the easiest way in Python to say: hey, iterate 5 times.
  2. Tuy nhiên, những gì
    for i in range[3, int[121**.5] + 1, 2]:
        print i
    7 đại diện cho-một điều kiện biên-là nền tảng cho vòng lặp for: nó chỉ định số lần vòng lặp nên thực thi.
  3. Từ khóa cho là một trong số ít từ khóa đặc biệt của Python, tức là bạn không thể đặt tên cho một biến
    for i in range[3, int[121**.5] + 1, 2]:
        print i
    8 và trong một trình soạn thảo văn bản, nó nên được tô sáng.for is one of Python's few special keywords, i.e. you can't name a variable
    for i in range[3, int[121**.5] + 1, 2]:
        print i
    8, and in a text-editor, it should be highlighted.
  4. Từ khóa trong cũng là một từ khóa dành riêng đặc biệt khác.in is also another special reserved keyword.
  5. Đó là
    for i in range[3, int[121**.5] + 1, 2]:
        print i
    9 không phải là một từ khóa. Đó là một tên biến. Và một thứ không cần thiết vì nó không thực sự được sử dụng như bất cứ thứ gì ngay bây giờ mà là một trình giữ chỗ.
  6. Đại tràng đó vào cuối của tuyên bố là bắt buộc. Về cơ bản, nó cho biết trình thông dịch python: mọi thứ sau dòng này là khối mã được thực thicolon at the end of the for statement is required. It basically tells the Python interpreter: everything after this line is the block of code to be executed
  7. Khối mã được thực thi, ví dụ: Đó là tuyên bố
    3
    5
    7
    9
    11
    0, được thụt vào 4 không gian. Đây là một yêu cầu của Python, không chỉ là một điều thẩm mỹ.requirement by Python, not just an aesthetic thing.

Thực hiện một vòng lặp nhàm chán trong Python tương tác

Trước khi chúng tôi bị sa lầy vào các chi tiết, hãy gõ và thực hiện mã trên trong trình thông dịch Pythong tương tác [tức là ipython]. Một vài sắc thái sẽ xuất hiện ngay cả trong việc thực hiện hai dòng đó.interactive Pythong interpreter [i.e. ipython]. A few nuances will come up even in the execution of those two lines.

Lưu ý: Nếu bạn đang sử dụng ipython - điều mà bạn nên làm - ngay khi bạn nhấn Enter để đi đến dòng tiếp theo, trình thông dịch sẽ tự động thêm một vết lõm cho bạn. Nếu bạn đang sử dụng Python__Preter thông thường, bạn sẽ phải thực hiện điều này theo cách thủ công, bằng cách nhấn __tab một lần hoặc vũ trụ 4 lần.ipython – which you should be doing – as soon as you hit Enter to go to the next line, the interpreter will automatically add an indentation for you. If you are using the regular python__interpreter, you will have to do this manually, either by hitting __Tab once, or the Spacebar 4 times.

Một lưu ý khác: Khi bạn nhập dòng

3
5
7
9
11
1 và sau đó nhấn Enter - sẽ không có gì xảy ra. Đó là, trình thông dịch Python sẽ nhắc bạn cho một dòng mã khác thực thi dưới dạng một khối thay vì in ra,
for i in range[3, int[121**.5] + 1, 2]:
    print i
5. Chỉ cần nhấn nhập thêm một lần nữa.
When you type in the
3
5
7
9
11
1 line and then hit Enter – nothing will happen. That is, the Python interpreter will prompt you for another line of code to execute as a block instead of printing out,
for i in range[3, int[121**.5] + 1, 2]:
    print i
5. Just hit Enter one more time.

Đây là mã trông như thế nào khi bạn gõ nó vào Ipython-Lưu ý cách các hình elip được sử dụng để chỉ ra sự tiếp tục của khối mã bên trong vòng lặp:ipython – note how ellipses are used to indicate the continuation of the code block inside the for-loop:

Biến thể trên một vòng lặp rất nhàm chán

Vì vậy, đó là một vòng lặp rất nhàm chán. May mắn thay, việc xây dựng một vòng lặp không phức tạp hơn những gì tôi đã nêu ở trên. Tuy nhiên, điều quan trọng là bạn phải hiểu các yếu tố cơ bản của vòng lặp trước khi tiếp tục-tức là việc sử dụng các từ khóa

for i in range[3, int[121**.5] + 1, 2]:
    print i
8 và
3
5
7
9
11
4,
3
5
7
9
11
5 ở cuối câu lệnh và cách thực hiện khối mã .for-loop. Luckily, the construction of a for-loop doesn't get more complicated than what I've outlined above. However, it is critical that you understand the basic elements of a for-loop before moving on – i.e. the use of the keywords
for i in range[3, int[121**.5] + 1, 2]:
    print i
8 and
3
5
7
9
11
4, the
3
5
7
9
11
5 at the end of the statement, and how the block of code to be executed is indented.

Trước khi tiếp tục, hãy thử các biến thể này:

  1. Thay thế
    for i in range[3, int[121**.5] + 1, 2]:
        print i
    9 bằng
    3
    5
    7
    9
    11
    7 [hoặc một số tên biến đáng ghét nhưng hợp lệ khác] để xác nhận rằng ký tự
    for i in range[3, int[121**.5] + 1, 2]:
        print i
    9 theo nghĩa đen không có tầm quan trọng.
  2. Thay thế
    3
    5
    7
    9
    11
    9 bên trong hàm
    for i in range[3, int[121**.5] + 1, 2]:
        print i
    7 bằng
    for item in list:
    
        if item[0] == "#":
            
            list.remove[item]
    	
            print["item removed: ", item]
    
    1 hoặc thậm chí
    for item in list:
    
        if item[0] == "#":
            
            list.remove[item]
    	
            print["item removed: ", item]
    
    2. Đừng lo lắng, điều này không nên phá vỡ máy tính của bạn. Mặc dù có thể mất vài phút để hoàn thành. Nhấn Ctrl-C để phá vỡ thực thi nếu bạn cảm thấy buồn chán.Ctrl-C to break execution if you get bored.
  3. Thêm dòng thứ hai - ví dụ:
    for item in list:
    
        if item[0] == "#":
            
            list.remove[item]
    	
            print["item removed: ", item]
    
    3 trong khối mã thụt.

Giải phẫu của vòng lặp ít nhàm chán

Các vòng lặp trở nên thú vị hơn một chút khi bạn có thể tạo một nhiệm vụ thay đổi theo từng lần lặp. Hãy nhớ rằng biến

for i in range[3, int[121**.5] + 1, 2]:
    print i
9 chưa sử dụng trong ví dụ nhàm chán đầu tiên? Chúng ta hãy đưa nó vào câu lệnh
3
5
7
9
11
0 để xem nó chứa những gì:

print[remove_vowels['perception']]
0

Đầu ra:

print[remove_vowels['perception']]
1

Thay vì in cùng một

for i in range[3, int[121**.5] + 1, 2]:
    print i
5, lặp đi lặp lại, chúng tôi đã xoay sở để nói với máy tính in một cái gì đó khác nhau với mỗi lần lặp. Lưu ý rằng chúng tôi không làm tăng sự phức tạp của tuyên bố cho tất cả. Mặc dù, thành thật mà nói, chúng tôi cũng không làm tăng sự phức tạp của giá trị thế giới thực của chương trình.for statement at all. Though, to be honest, we haven't increased the complexity of the program's real world value by much either.

Nhưng chúng ta hãy có một sự khác biệt ngắn gọn và tưởng tượng làm thế nào thậm chí chỉ tăng lên bởi một người có thể rất hữu ích trong thế giới thực. Điều gì sẽ xảy ra nếu có một bộ sưu tập các tệp hoặc trang web mà tất cả đều có liên quan hoặc rất giống nhau, ngoại trừ một chữ số trong URL?

Ví dụ, Wikipedia có các trang cho rất nhiều thứ, bao gồm cả số. Đây là trang cho số 1. Trên thực tế, đó là trang cho năm 1 A.D. - Nếu bạn muốn số 1, bạn muốn URL này: //en.wikipedia.org/wiki/1_[number]year 1 A.D. – if you want the number 1, you want this URL: //en.wikipedia.org/wiki/1_[number]

OK, điều gì sẽ xảy ra nếu chúng tôi muốn in các URL cho các trang Wikipedia trong 10 năm đầu tiên [a.d.], bắt đầu từ năm 1 a.d.? Mã và đầu ra của nó sẽ trông như thế này, nếu bạn thử nó ở Shell Python tương tác:1 A.D.? The code and its output would look like this, if you try it at the interactive Python shell:

[Lưu ý rằng hàm

for i in range[3, int[121**.5] + 1, 2]:
    print i
7 có thể lấy đối số thứ hai, tạo ra một chuỗi các số từ đối số thứ nhất đến thứ hai]

[Cũng lưu ý rằng chúng ta phải chuyển đổi số được biểu thị bởi biến

for item in list:

    if item[0] == "#":
        
        list.remove[item]
	
        print["item removed: ", item]
8 thành một chuỗi theo nghĩa đen để "thêm" nó vào URL cơ sở]

print[remove_vowels['perception']]
2

Điều gì sẽ xảy ra nếu bạn muốn các URL cho các trang Wikipedia có số lượng từ 1 đến 10? Chỉ cần sửa đổi URL cơ sở một chút:numbers 1 through 10? Just modify the base URL a bit:

print[remove_vowels['perception']]
3

Và điều gì sẽ xảy ra nếu chúng ta muốn làm điều gì đó thú vị hơn là chỉ in ra các URL lên màn hình? Chẳng hạn như tải xuống các trang? Hoặc kiểm tra xem chúng có tồn tại không? Hoặc làm điều này cho một bộ trang web khác?

Vâng, bạn có thể xác định khối mã thụt đó để làm bất cứ điều gì bạn muốn:

print[remove_vowels['perception']]
4

Suy nghĩ và lập trình không tuyến tính với các vòng lặp

Giả sử bạn đang đọc bài học này trước khi bạn đọc bài học về phân nhánh có điều kiện, câu lệnh for-loop sẽ là lần đầu tiên bạn viết một cách rõ ràng viết nó.for-loop statement will be the first time that you've explicitly written code that did not execute in the top-to-bottom order in which you wrote it.

Xem xét ví dụ này:

print[remove_vowels['perception']]
5

Khi tôi có nghĩa là mã thực thi không tuyến tính, ý tôi là mặc dù đây là dòng thứ 3 [và cuối cùng] của tập lệnh:

print[remove_vowels['perception']]
6

- Đó không phải là lệnh thứ ba được thực thi. Thay vào đó, dòng thứ 2, khối mã thụt -

print[remove_vowels['perception']]
7

- phải chạy khóa học của nó. Đây là một mô hình khác nhau nhiều so với viết một tập lệnh trong đó một dòng được thực thi sau một dòng khác.

Trên thực tế, để có được hiệu ứng đầy đủ của bài học này, hãy thực hiện đoạn trích trên theo hai cách khác nhau:

1. Nhập nó vào vỏ Python tương tác của bạn

Một lần nữa, lưu ý cách mã thụt lề không thực thi cho đến khi bạn nhấn ENTER hai lần, liên tiếp, để biểu thị phần cuối của khối mã thụt.Enter twice, consecutively, to signify the end of the indented code block.

2. Nhập nó ra và lưu dưới dạng tập lệnh độc lập

Bây giờ hãy mở trình chỉnh sửa văn bản của bạn, viết mã vào một tệp văn bản và lưu nó. Sau đó thực thi tệp đó bằng trình thông dịch Python dòng lệnh:

print[remove_vowels['perception']]
8

Cách kiểm tra tương tác một vòng lặp

Một điều đáng chú ý là nó có thể là một nỗi đau lớn để viết và thực hiện ngay cả một vòng lặp cơ bản bên trong vỏ python tương tác, bởi vì loại vỏ ngừng tương tác khi bạn thụt một khối, tức là đánh vào không trả lời.Enter does not return a response.

Vì vậy, khi bạn viết thêm các vòng lặp và các cấu trúc khác yêu cầu các khối mã thụt lề, tôi khuyên bạn nên làm nó trong trình chỉnh sửa văn bản với cú pháp python làm nổi bật, sau đó dán nó vào shell.

Trên thực tế, nếu bạn đang sử dụng ipython [một lần nữa, bạn nên sử dụng làm vỏ tương tác của mình], bạn có thể nhập lệnh đặc biệt

for item in list:

    if item[0] == "#":
        
        list.remove[item]
	
        print["item removed: ", item]
9 - sẽ dán vào bất cứ thứ gì hiện đang được sao chép vào bảng tạm của bạn.ipython [which, again, you should be using as your interactive shell], you can type in the special command
for item in list:

    if item[0] == "#":
        
        list.remove[item]
	
        print["item removed: ", item]
9 – which will paste in whatever is currently copied to your clipboard.

Tuy nhiên, cách thích hợp để kiểm tra một vòng lặp là chỉ chạy một lần lặp và gán một giá trị cho biến trình giữ chỗ. Giả vờ rằng đây là tập lệnh hoàn chỉnh của bạn:

print[remove_vowels['perception']]
9

Để kiểm tra nó một cách tương tác, chỉ cần gán

print["hello world"]
0 như một biến bình thường. Sau đó gõ phần còn lại của khối thụt lề như thể nó tồn tại dưới dạng tập lệnh độc lập, mà không có cấu trúc vòng lặp đó:

Looking for letter p
Looking for letter e
Looking for letter c
Looking for letter e
Looking for letter t
Looking for letter i
Looking for letter n
prcpton
0

Một cách để suy nghĩ nếu quá trình này là giả vờ rằng bạn đang ở trong vòng lặp và công việc duy nhất của bạn là thực thi khối mã xảy ra khi

print["hello world"]
0 là
print["hello world"]
2. Bạn không quan tâm rằng đó thực sự là một phần của vòng lặp, bạn cũng không quan tâm rằng
print["hello world"]
0 trước đây là
print["hello world"]
4 hoặc nó sẽ là
print["hello world"]
5. Bạn chỉ muốn biết những gì xảy ra trong một lần thực hiện độc lập của mã thụt lề.

Bởi vì nếu nó hoạt động cho

print["hello world"]
2 hoặc cho bất kỳ số nào giữa
print["hello world"]
7 và
print["hello world"]
8 - thì bạn có thể tương đối yên tâm rằng nó sẽ hoạt động cho tất cả các số khác.

Trình tự và các đối tượng khác

Để giữ cho mọi thứ đơn giản, tôi đã sử dụng hàm/đối tượng

for i in range[3, int[121**.5] + 1, 2]:
    print i
7 như là thứ được lặp qua, tức là trình tự, tức là có thể điều chỉnh được.iterable.

Có nhiều trình tự khác và các đối tượng loại có thể được sử dụng trong vòng lặp. Tôi sẽ liệt kê những cái phổ biến dưới đây, nhưng nó không có nghĩa là một danh sách đầy đủ. Đối với hầu hết các phần, bạn tìm hiểu những gì có thể hiểu được/có thể lặp lại thông qua kinh nghiệm:for-loop. I'll list the common ones below, but it is by no means an exhaustive list. For the most part, you learn what is iterable/loopable through experience:

Ký tự trong một chuỗi

Khi một chuỗi theo nghĩa đen được chuyển vào câu lệnh

for i in range[3, int[121**.5] + 1, 2]:
    print i
8, khối mã sẽ được thực thi cho mỗi ký tự:

Looking for letter p
Looking for letter e
Looking for letter c
Looking for letter e
Looking for letter t
Looking for letter i
Looking for letter n
prcpton
1

Đây thực sự không phải là thứ bạn thấy rất nhiều trong tự nhiên. Nhưng nó hoạt động như một ví dụ đơn giản tốt

Danh sách hoặc Tuple

Đối tượng danh sách có lẽ là đối tượng có thể lặp lại thường xuyên nhất mà bạn sẽ gặp trong Python:list object is probably the most frequent iterable object you'll come across in Python:

Looking for letter p
Looking for letter e
Looking for letter c
Looking for letter e
Looking for letter t
Looking for letter i
Looking for letter n
prcpton
2

Tuples [về cơ bản là danh sách đơn giản hóa] hoạt động theo cách tương tự:

Looking for letter p
Looking for letter e
Looking for letter c
Looking for letter e
Looking for letter t
Looking for letter i
Looking for letter n
prcpton
3

Đọc một tệp, từng dòng

Một đối tượng tệp trong Python là một loại đối tượng có thể lặp lại cụ thể, trong đó một luồng dữ liệu được biểu diễn. Khi điều này được chuyển vào cấu trúc for-loop, vòng lặp sẽ thực hiện cho mọi dòng trong tệp.

Giả vờ bạn có một tệp trên ổ cứng có tên là ví dụ.txt và nội dung của nó trông như thế này:example.txt, and its contents look like this:

Looking for letter p
Looking for letter e
Looking for letter c
Looking for letter e
Looking for letter t
Looking for letter i
Looking for letter n
prcpton
4

Để mở nó, sau đó lặp qua từng dòng [với khối mã chỉ đơn giản là in ra phiên bản trường hợp trên của mỗi dòng]:

Looking for letter p
Looking for letter e
Looking for letter c
Looking for letter e
Looking for letter t
Looking for letter i
Looking for letter n
prcpton
5

Lưu ý: Tại sao có một dòng trống sau mỗi dòng văn bản thực tế? Đó là bởi vì trong một tệp văn bản, mỗi dòng văn bản có một ký tự mới ở cuối mỗi dòng. Và chức năng

3
5
7
9
11
0 bổ sung một nhân vật Newline của riêng mình nhưng giải thích bản chất của các tệp đòi hỏi hướng dẫn riêng của nó, bây giờ đủ để xem đây là một ví dụ thực tế về vòng lặp.newline character at the end of each line. And the
3
5
7
9
11
0 function adds a newline character of its own…But explaining the nature of files requires its own guide…It's enough for now to see this as a real-life example of a for-loop.

Biến thể trên các vòng lặp

Hiểu cấu trúc for-loop là đủ, vì nó là loại vòng lặp phổ biến nhất mà bạn sẽ thấy trong Python. Tuy nhiên, điều đáng để chỉ ra các biến thể và kịch bản khác mà bạn có thể thấy trong tự nhiên.for-loop construct is enough, as it is by far the most common kind of loop you will see in Python. However, it's worth pointing out the other variations and scenarios that you might see in the wild.

Trong khi vòng lặp

Giống như

for i in range[3, int[121**.5] + 1, 2]:
    print i
8, từ khóa
print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]
3 được dành riêng trong Python. Và tương tự,
print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]
3 cũng được sử dụng để biểu thị một khối mã được lặp lại:

Looking for letter p
Looking for letter e
Looking for letter c
Looking for letter e
Looking for letter t
Looking for letter i
Looking for letter n
prcpton
6

Với vòng lặp ____ 48, bạn chỉ định một bộ sưu tập các mục được lặp lại. Với vòng lặp ____ 83, bạn chỉ định một điều kiện, nếu

print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]
7, có nghĩa là khối mã phải được thực thi. Trong đoạn trích trên, biến
for i in range[3, int[121**.5] + 1, 2]:
    print i
9 được tăng lên với mỗi lần lặp của vòng lặp. Khi
for i in range[3, int[121**.5] + 1, 2]:
    print i
9 đại diện cho giá trị
for x in range[5]:
    print["hello world"]
0, điều kiện trở thành
for x in range[5]:
    print["hello world"]
1 và vòng lặp dừng.

Hãy suy nghĩ về những gì tương đương với vòng lặp sẽ trông như thế nào, sau đó cố gắng viết nó ra. Đây là câu trả lời của tôi [lưu ý rằng có vô số cách để thể hiện vòng lặp này, bởi vì toán học và v.v.]:for-loop would look like, then try to write it down. Here's my answer [note that there are literally infinite number of ways to represent this loop, because math and etc.]:

Looking for letter p
Looking for letter e
Looking for letter c
Looking for letter e
Looking for letter t
Looking for letter i
Looking for letter n
prcpton
7

Vòng lặp vô hạn

Điều gì sẽ xảy ra nếu một điều kiện luôn luôn là

print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]
7? Sau đó, vòng lặp đó sẽ chạy mãi mãi, về mặt lý thuyết, miễn là các quy luật logic không thay đổi. Trên thực tế, tất nhiên, nó có thể sẽ kết thúc khi máy tính của bạn hết điện hoặc vũ trụ đạt đến cái chết nhiệt.

Đây là một ví dụ về vòng lặp

print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]
3 vô hạn:

Looking for letter p
Looking for letter e
Looking for letter c
Looking for letter e
Looking for letter t
Looking for letter i
Looking for letter n
prcpton
8

Hoặc là cô đọng hơn:

Looking for letter p
Looking for letter e
Looking for letter c
Looking for letter e
Looking for letter t
Looking for letter i
Looking for letter n
prcpton
9

Và đôi khi, bạn có thể vô tình viết một vòng lặp mà bạn không nhận ra sẽ là vô hạn:

def is_prime[x]:
    if x < 2:
        return False
    elif x == 2:
        return True
    elif x % 2 == 0:
        return False
    else:
        for i in range[3, int[x**.5] + 1, 2]:
            ans = x % i     # This line and next are to
            print x, "%", i, "=", ans    # print test runs
            if x % i == 0:
                return False
            else:
                return True
0

Vì giá trị được biểu thị bằng

for i in range[3, int[121**.5] + 1, 2]:
    print i
9 không bao giờ thay đổi [nghĩa là
for i in range[3, int[121**.5] + 1, 2]:
    print i
9 không bao giờ được chỉ định lại kết quả của
for x in range[5]:
    print["hello world"]
6], giá trị của
for i in range[3, int[121**.5] + 1, 2]:
    print i
9 là mãi mãi ở
for i in range[3, int[121**.5] + 1, 2]:
    print i
6, tức là ít hơn
for x in range[5]:
    print["hello world"]
0.

Vòng lặp không lặp lại

Điều gì sẽ xảy ra nếu một điều kiện vòng lặp

print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]
print["hello world"]
3 luôn luôn là
for x in range[5]:
    print["hello world"]
1? Sau đó, mã bên trong vòng lặp sẽ không bao giờ chạy:

def is_prime[x]:
    if x < 2:
        return False
    elif x == 2:
        return True
    elif x % 2 == 0:
        return False
    else:
        for i in range[3, int[x**.5] + 1, 2]:
            ans = x % i     # This line and next are to
            print x, "%", i, "=", ans    # print test runs
            if x % i == 0:
                return False
            else:
                return True
1
def is_prime[x]:
    if x < 2:
        return False
    elif x == 2:
        return True
    elif x % 2 == 0:
        return False
    else:
        for i in range[3, int[x**.5] + 1, 2]:
            ans = x % i     # This line and next are to
            print x, "%", i, "=", ans    # print test runs
            if x % i == 0:
                return False
            else:
                return True
2

Thật dễ dàng để tạo phiên bản ____ 48 vòng của vòng lặp không thực hiện:

def is_prime[x]:
    if x < 2:
        return False
    elif x == 2:
        return True
    elif x % 2 == 0:
        return False
    else:
        for i in range[3, int[x**.5] + 1, 2]:
            ans = x % i     # This line and next are to
            print x, "%", i, "=", ans    # print test runs
            if x % i == 0:
                return False
            else:
                return True
3

Mặc dù có những lý do trong thế giới thực để có các vòng lặp vô cùng-thông thường bạn không có ý định viết một vòng lặp không bao giờ thực sự lặp.

Vòng lặp trong vòng

Một khối mã trong vòng lặp cũng giống như bất kỳ mã nào khác bạn có thể viết. Nó có thể là đa dòng, ví dụ. Hoặc nó có thể bao gồm các khối mã khác, bao gồm một vòng lặp riêng biệt khác:

def is_prime[x]:
    if x < 2:
        return False
    elif x == 2:
        return True
    elif x % 2 == 0:
        return False
    else:
        for i in range[3, int[x**.5] + 1, 2]:
            ans = x % i     # This line and next are to
            print x, "%", i, "=", ans    # print test runs
            if x % i == 0:
                return False
            else:
                return True
4

Bạn có thể đoán có bao nhiêu dòng đầu ra tập lệnh trên [có vẻ vô nghĩa như nó]? Đừng lo lắng, trong các kịch bản trong thế giới thực, các vòng lặp trong các vòng lặp thường sẽ có ý nghĩa hơn, ví dụ: Nó sẽ không liên quan đến việc chỉ trải qua một loạt các số tùy ý. Tuy nhiên, các vòng lặp bên trong vòng lặp có thể trở nên khó hiểu rất nhanh. Nếu chương trình của bạn khó hiểu như ba người bắt giữ, rất có thể có một cách thanh lịch hơn để giải quyết vấn đề.

Teasers và bài tập

Các bài tập sau liên quan đến việc kiểm tra các vòng lặp tương đối đơn giản. Mục đích là để đảm bảo bạn có thể tự tin nhận ra một vòng lặp trông như thế nào, ngay cả khi khối mã được thực thi dường như vô nghĩa hoặc vô nghĩa phức tạp.

Sửa các tập lệnh này

Những ví dụ đơn giản cho vòng lặp này đều chứa các lỗi cú pháp. Xem nếu bạn có thể phát hiện ra chúng:

def is_prime[x]:
    if x < 2:
        return False
    elif x == 2:
        return True
    elif x % 2 == 0:
        return False
    else:
        for i in range[3, int[x**.5] + 1, 2]:
            ans = x % i     # This line and next are to
            print x, "%", i, "=", ans    # print test runs
            if x % i == 0:
                return False
            else:
                return True
5
def is_prime[x]:
    if x < 2:
        return False
    elif x == 2:
        return True
    elif x % 2 == 0:
        return False
    else:
        for i in range[3, int[x**.5] + 1, 2]:
            ans = x % i     # This line and next are to
            print x, "%", i, "=", ans    # print test runs
            if x % i == 0:
                return False
            else:
                return True
6
def is_prime[x]:
    if x < 2:
        return False
    elif x == 2:
        return True
    elif x % 2 == 0:
        return False
    else:
        for i in range[3, int[x**.5] + 1, 2]:
            ans = x % i     # This line and next are to
            print x, "%", i, "=", ans    # print test runs
            if x % i == 0:
                return False
            else:
                return True
7Try để dự đoán đầu ra của các tập lệnh này

Đây là một bài kiểm tra nhiều hơn để xem bạn có hiểu bài tập biến

def is_prime[x]:
    if x < 2:
        return False
    elif x == 2:
        return True
    elif x % 2 == 0:
        return False
    else:
        for i in range[3, int[x**.5] + 1, 2]:
            ans = x % i     # This line and next are to
            print x, "%", i, "=", ans    # print test runs
            if x % i == 0:
                return False
            else:
                return True
8

Bạn có thể làm bất cứ điều gì trong một vòng lặp. Thậm chí là toán học:

def is_prime[x]:
    if x < 2:
        return False
    elif x == 2:
        return True
    elif x % 2 == 0:
        return False
    else:
        for i in range[3, int[x**.5] + 1, 2]:
            ans = x % i     # This line and next are to
            print x, "%", i, "=", ans    # print test runs
            if x % i == 0:
                return False
            else:
                return True
9

Điều gì xảy ra nếu chúng tôi đã xác định một vòng lặp để chạy chính xác 0 lần:

for i in range[3, int[121**.5] + 1, 2]:
    print i
0

Đây thực sự chỉ là một bài kiểm tra khác về sự hiểu biết chuyển đổi:

for i in range[3, int[121**.5] + 1, 2]:
    print i
1

Chỉ trong trường hợp bạn bị nhầm lẫn bởi cú pháp-hoặc nhiều khả năng, mục đích thực tế của tập lệnh trên-trước hết, lập trình không cần phải có mục đích "trong thế giới thực", theo như trình thông dịch lo lắng. Miễn là cú pháp là tốt, máy tính sẽ chạy chương trình, bất kể nó vô nghĩa như thế nào đối với thế giới thực.

Thứ hai, những gì bạn có nghĩa là nhận ra là dù đó là trong một

print[remove_vowels['perception']]
03 hay một vòng lặp bên trong-câu lệnh,
print[remove_vowels['perception']]
04 thực hiện chính xác điều đó: nó thêm nội dung của
print[remove_vowels['perception']]
05 và
print[remove_vowels['perception']]
06 cùng nhau. Rằng không có tác dụng ở cuối là hậu quả của việc không thực hiện việc gán biến nào: tức là các giá trị của
print[remove_vowels['perception']]
05 và
print[remove_vowels['perception']]
06 không bao giờ được chỉ định lại. Do đó, đầu ra nhàm chán ở cuối.

Đối với các mục đích của chương trình giảng dạy này, tôi sẽ không bao giờ yêu cầu bạn viết một chương trình vô nghĩa này. Nhưng đó không phải là vấn đề - bạn có thể vô tình viết một chương trình vô nghĩa. Không thể nhìn thấy lỗi logic bên trong vòng lặp đôi khi là kết quả của việc không thoải mái với cú pháp for-loop ở nơi đầu tiên.

Những bài tập đó có quá đơn giản không? Tôi đã cố tình làm cho họ dễ dàng. Điều quan trọng là bạn phải hiểu và nhận ra cú pháp của câu lệnh for-loop. Đó không phải là phần phức tạp. Nhưng khi bạn viết các chương trình phức tạp liên quan đến vòng lặp, bạn không muốn cú pháp cơ bản và hoạt động của vòng lặp cho vòng lặp là nguồn gây nhầm lẫn cho bạn.

Tiến lên

Đọc bài học về phân nhánh có điều kiện [tức là

print[remove_vowels['perception']]
09].

Sau đó xem nếu bạn có thể hoàn thành bài kiểm tra Fizzbuzz khét tiếng.

Tại sao cho Loop không hoạt động?

Trả lời 530F606F548C35FFB900591F Xóa dấu chấm phẩy ở cuối dòng đầu tiên.Sau đó, nó sẽ lặp từ 100 đến 5. Trong trường hợp bạn muốn kết thúc trên 0 thì nó phải là i> = 0;Nhưng tôi nghĩ rằng bạn muốn nó dừng lại ở mức 5, điều đó là tốt theo cách bạn có nó.Remove the semicolon at the end of the first line. Then it will loop from 100 to 5. In case you want to end on zero then it should be i >=0; but I think you want it to stop at 5 which it is fine the way you have it.

Tại sao tôi không hoạt động trong Python?

Vòng lặp trong khi không chạy vì điều kiện không được đáp ứng.Sau khi chạy vòng lặp, giá trị của biến I là 5, lớn hơn ba.Để khắc phục điều này, bạn nên gán lại giá trị trước khi chạy vòng lặp trong khi [chỉ cần thêm var i = 1; giữa vòng lặp và vòng lặp trong khi].the condition is not met. After the running the for loop the value of variable i is 5, which is greater than three. To fix this you should reassign the value before running the while loop [simply add var i=1; between the for loop and the while loop].

Không phải trong Python cho Loop?

Python trong khi không trong một thời gian không lặp lại trong Python liên tục thực hiện cơ thể của vòng lặp cho đến khi điều kiện để chấm dứt vòng lặp được đáp ứng.Sử dụng cú pháp trong khi không điều kiện với điều kiện làm biểu thức boolean để thực thi cơ thể vòng lặp nếu điều kiện đánh giá là sai.Use the syntax while not condition with the condition as a boolean expression to execute the loop's body if the condition evaluates to False.

Bài Viết Liên Quan

Chủ Đề