Thay thế vòng lặp for bằng vòng lặp while Python

Video hướng dẫn này giải thích vai trò của Vòng lặp trong Python, các loại của chúng. For, While, Nested Loops với cú pháp và các ví dụ lập trình thực tế

Chúng ta đã học về bốn câu lệnh Điều kiện khác nhau trong Python trong hướng dẫn trước của mình

Vòng lặp là khái niệm lập trình mạnh mẽ được hỗ trợ bởi hầu hết các ngôn ngữ lập trình hiện đại. Nó cho phép một chương trình thực hiện các phép lặp, về cơ bản có nghĩa là thực thi cùng một khối mã hai lần trở lên

Mặc dù chúng được tất cả các ngôn ngữ lập trình hiện đại hỗ trợ và cung cấp chức năng cơ bản tương tự, nhưng cách triển khai và cú pháp của chúng có thể khác nhau

Chuỗi khóa đào tạo đầy đủ về Python sẽ cung cấp cho bạn ý tưởng ngắn gọn về Python là gì.

Bạn sẽ học được gì

  • Video hướng dẫn về vòng lặp Python
  • Vòng lặp Python là gì
    • Sử dụng chung Vòng lặp Python
  • Vòng lặp trong Python
    • Ví dụ – Tìm số từ trong văn bản bằng vòng lặp for
  • Vòng lặp While
    • Ví dụ – Tìm một dãy Fibonacci cho đến số hạng thứ n bằng vòng lặp While
  • Vòng lặp lồng nhau
    • #1) Làm tổ cho các vòng lặp
    • #2) Các vòng lặp While lồng vào nhau
    • Ví dụ – Trò chơi đánh vần số
  • Vòng lặp vô hạn Python
    • Các câu lệnh ngắt và tiếp tục trong Python
    • Ví dụ – Tích lũy số cho đến khi đạt đến ngưỡng
    • Các câu hỏi thường gặp
    • Tìm hiểu thêm về vòng lặp Python
      • #1) Vòng lặp While
      • #2) Đối với vòng lặp
  • Phần kết luận
    • đề xuất đọc

Video hướng dẫn về vòng lặp Python

Vòng lặp Python là gì

Trong Python, các câu lệnh được thực thi một cách tuần tự. e. nếu mã của chúng tôi được tạo thành từ nhiều dòng mã, thì quá trình thực thi sẽ bắt đầu ở dòng đầu tiên, tiếp theo là dòng thứ hai, v.v.

Tuy nhiên, sẽ có trường hợp chúng ta muốn một khối mã thực thi nhiều lần cho đến khi thỏa mãn điều kiện. Nhờ các câu lệnh lặp, chúng ta có thể làm điều đó

Đưa ra dưới đây là một sơ đồ minh họa cách thức hoạt động của một câu lệnh lặp

Lưu đồ của một tuyên bố vòng lặp

Dựa vào sơ đồ trên, một chương trình Python sẽ bắt đầu tại Start[circle], và quá trình thực thi sẽ tiến hành tới câu lệnh điều kiện[Diamond], nếu điều kiện là TRUE thì chương trình sẽ thực thi khối mã

Quá trình thực thi sẽ tiếp tục trở lại câu lệnh điều kiện và quy trình tương tự tiếp tục mỗi khi điều kiện là ĐÚNG. Nó chỉ thoát ra khỏi vòng lặp hoặc dừng thực thi khối mã nếu điều kiện là SAI, và trong trường hợp này, chương trình sẽ tiếp tục thực hiện tuần tự

Python có hai loại Vòng lặp

#Loop typeDescription1for loopLà vòng lặp dựa trên trình vòng lặp, bước này duyệt qua các mục của đối tượng có thể lặp lại như danh sách, bộ dữ liệu, chuỗi và thực thi lặp lại một đoạn mã trong một số lần, dựa trên số lượng mục trong đối tượng có thể lặp lại đó. 2 vòng lặp while Thực hiện lặp đi lặp lại một khối câu lệnh miễn là điều kiện là ĐÚNG

Hai loại vòng lặp này có thể được sử dụng bên trong nhau để tạo ra các vòng lặp lồng nhau (sẽ nói thêm về điều này sau)

Sử dụng chung Vòng lặp Python

Trong Python, các vòng lặp có thể được sử dụng để giải các bài toán hay và phức tạp. Bạn có thể sẽ gặp phải các sự cố yêu cầu bạn lặp lại một hành động cho đến khi đáp ứng một điều kiện (vòng lặp while hoạt động tốt nhất ở đây) hoặc sự cố yêu cầu bạn thực hiện một hành động trên một loạt mục (vòng lặp for hoạt động tốt nhất ở đây)

Vòng lặp trong Python

Vòng lặp for hoạt động tốt với các đối tượng có thể lặp lại như danh sách, bộ dữ liệu, chuỗi, v.v. Bằng cách này, chúng tôi có thể duyệt qua các mục của đối tượng này và thao tác các giá trị của chúng dựa trên liên kết của chúng tôi

Vòng lặp for không được lập chỉ mục và có cú pháp sau

for in n:

Điều kiện trong vòng lặp for chỉ TRUE nếu nó không lặp qua tất cả các mục trong đối tượng có thể lặp lại (n). Để hiểu rõ hơn về vòng lặp for, chúng ta sẽ giải quyết một số ví dụ và cuối cùng, chúng ta sẽ làm việc với một ví dụ thực tế

Ví dụ 1. In số từ đầu đến cuối

Để đạt được điều này, chúng ta sẽ sử dụng hàm phạm vi Python

Đây là cách lưu đồ sẽ trông như thế nào

Sơ đồ vòng lặp fordef range_from_start_to_end(start, end): for i in range(start, end+1): print(i) if __name__ == "__main__": start = int(input("Enter a start number: ")) end = int(input("Enter an end number: ")) # Call our function to print the ranges range_from_1_to_20(start, end)

đầu ra

Trong ví dụ trên, chúng tôi đã sử dụng phạm vi Python, là hàm trả về một chuỗi số, bắt đầu từ số bắt đầu (0 theo mặc định), tăng dần theo một bước (1 theo mặc định) và dừng trước số kết thúc

Đối với ví dụ này , chúng tôi có những điều sau đây.

Tham số và giá trị cho hàm phạm vi Python

Tham sốValuestart1end20step1 (giá trị mặc định)

Vì vậy, vòng lặp for của chúng ta sẽ lặp qua một dãy số từ 1 đến 20 và với mỗi lần lặp, nó sẽ in ra số. Quá trình lặp dừng lại khi tất cả các số trong dãy đã được thăm

Ví dụ 2. Xác định xem một số có phải là số nguyên tố hay không.

Trong ví dụ này, chúng ta sẽ thấy tại sao vòng lặp for lại mạnh mẽ và hữu ích đến vậy. Ở đây, chúng tôi sẽ lặp qua một dãy số và với mỗi số, chúng tôi sẽ thực hiện một số tính toán để xác định xem một điều kiện là TRUE hay FALSE

Có thể hữu ích khi biết điều kiện để một số là số nguyên tố

  • Số luôn dương, lớn hơn 1
  • Không có ước dương nào ngoài 1 và chính nó
def isPrime(number): # rule 1: number should be positive, and greater than 1. if number > 1: # iterate over a range from 2 to half the number. for i in range(2, number//2): # rule 2: shouldn't have any positive divisor # order than 1 and itself. if(number % i) ==0: return False return True else: return False if __name__ == '__main__': number = int(input("Enter number to check if it's prime: ")) if isPrime(number): print("{} is a prime number".format(number)) else: print("{} is not a prime number".format(number))

Đầu ra khi đầu vào là 13

Đầu ra khi đầu vào là 10

Ghi chú. If-else được sử dụng trong ví dụ trên là một câu lệnh có điều kiện và không phải là một vòng lặp. Nhưng cũng giống như vòng lặp while (mà chúng tôi sẽ trình bày sau đây), nó sử dụng các toán tử so sánh cho điều kiện của nó

Ví dụ – Tìm số từ trong văn bản bằng vòng lặp for

Ví dụ này nói về việc đếm số lần mỗi từ xuất hiện trong một văn bản. Có rất nhiều cách để đạt được điều này nhưng trong ví dụ này, chúng ta sẽ sử dụng vòng lặp for

Chúng ta sẽ đếm các từ trong văn bản dưới đây

Xin chào, chào mừng bạn đến với Trợ giúp kiểm thử phần mềm. trong bài viết này. “Vòng lặp trong Python”, bạn sẽ tìm hiểu về vòng lặp với các ví dụ thực tế. Tuyệt phải không?

Mã hóa vui vẻ

Điều đầu tiên chúng ta sẽ làm là xóa dấu chấm câu, khoảng trắng và tất cả các chữ cái viết thường. Chúng tôi sẽ xóa dấu câu theo cách truyền thống bằng cách xác định dấu câu nào tồn tại trong văn bản của chúng tôi, sau đó sử dụng vòng lặp for để thay thế chúng bằng một chuỗi trống

Vì văn bản không nhiều nên chúng tôi thấy các dấu câu là dấu phẩy (,), dấu chấm (. ), dấu hỏi (?), dấu hai chấm (. ), dấu ngoặc kép(“) và dấu nháy đơn(‘)

Đưa ra dưới đây là mã để thay thế chúng bằng một chuỗi rỗng. Lưu ý rằng chúng tôi sẽ không thay thế dấu nháy đơn

# replace punctuation(except apostrophe) and white spaces for punc in '.,\n?!"': text = text.replace(punc, '') # lowercase all letters. text = text.lower()

đầu ra

Tiếp theo, chúng ta sẽ chia văn bản thành một danh sách các từ được phân tách bằng khoảng trắng

# Split text into list of words separated by whitespaces(tab, newline) text = text.split()

đầu ra

Cuối cùng, chúng ta sẽ đếm và xem mỗi từ xuất hiện bao nhiêu lần trong văn bản được chia

# initialize a dictionary to hold words:count wordsCount = {} # if a word is already a key in our dictionary, increment it's value. # If not, initialize it's value to 1. for word in text: wordsCount[word] = wordsCount.get(word, 0) + 1

đầu ra

Chúng ta có thể thấy rõ ràng một số từ xuất hiện hai lần và một số chỉ xuất hiện một lần. Hãy sắp xếp từ điển này theo giá trị của nó theo thứ tự giảm dần để chúng ta có thể phân biệt rõ ràng. Ở đây, chúng tôi đã sử dụng hàm sắp xếp Python, biểu thức lambda và hiểu từ điển

# Sort dictionary by value, in descending order wordsCount = {w: c for w, c in sorted(wordsCount.items(), key=lambda item: item[1], reverse=True)}

Cuối cùng, chúng ta đã sử dụng vòng lặp for để dọn dẹp, đếm và sắp xếp các từ trong văn bản của mình

Đưa ra dưới đây là mã hoàn chỉnh

def word_count(text): # initialize a dictionary to hold words:count wordsCount = {} # replace punctuation(except apostrophe) and white spaces for punc in '.,\n?!"': text = text.replace(punc, '') # lowercase all letters. text = text.lower() # Split text into list of words separated by whitespaces(tab, newline) and apostrophe(') text = text.split() # if a word is already a key in our dictionary, increment it's value. # If not, initialize it's value to 1. for word in text: wordsCount[word] = wordsCount.get(word, 0) + 1 # Sort dictionary by value, in descending order wordsCount = {w: c for w, c in sorted(wordsCount.items(), key=lambda item: item[1], reverse=True)} print(wordsCount) if __name__ == '__main__': text = "Hello, welcome to Software Testing Help. In this article: \"Loops in Python\", \ you'll learn about loops with practical examples. \ Great right? Make sure to follow along as we learn together. \n \ Happy coding!" word_count(text)

Kết quả cuối cùng

Vòng lặp While

Vòng lặp while của Python thực thi lặp đi lặp lại một khối câu lệnh miễn là điều kiện là TRUE. Chúng tôi nhận thấy rằng nó hơi giống với câu lệnh if. Tuy nhiên, không giống như vòng lặp while, câu lệnh if chỉ thực hiện một lần nếu điều kiện của nó là TRUE

Vòng lặp while có cú pháp như sau

________số 8

Không giống như vòng lặp for, vòng lặp while không lặp qua một chuỗi. Nó sử dụng các toán tử so sánh và boolean cho điều kiện của nó

Hãy xem xét một số ví dụ để hiểu rõ hơn về cách nó được sử dụng

Ví dụ 1. In “Xin chào thế giới. ” một số lần

Vòng lặp while kiểm tra điều kiện (đếm < n), mỗi khi nó ĐÚNG, nó sẽ in “Xin chào thế giới của chúng tôi. ” và tăng số đếm

Đây là cách lưu đồ sẽ trông như thế nào

def print_count_times(n): # set count to 0 count = 0 while count &lt; n: print(&quot;Hello World!&quot;) # increment count count += 1 if __name__ == '__main__': # number of times we want to print n = 10 # call our function to print n times. print_count_times(n)

đầu ra

Ví dụ 2. Tìm giai thừa của một số

Giai thừa của một số được biểu diễn dưới dạng n. và nó có công thức

def range_from_start_to_end(start, end): for i in range(start, end+1): print(i) if __name__ == &quot;__main__&quot;: start = int(input(&quot;Enter a start number: &quot;)) end = int(input(&quot;Enter an end number: &quot;)) # Call our function to print the ranges range_from_1_to_20(start, end) 0

Chương trình kiểm tra nếu số đó là 0 và trả về 1 (giai thừa của 0 là 1). Sau đó, vòng lặp while kiểm tra điều kiện (n >=1) để xem n của chúng ta có bằng 1 hay lớn hơn 1 không. Mỗi khi điều kiện này là TRUE, chương trình của chúng tôi sẽ tính toán công thức trong khối vòng lặp

Hãy sử dụng vòng lặp while để giải bài toán giai thừa

def range_from_start_to_end(start, end): for i in range(start, end+1): print(i) if __name__ == &quot;__main__&quot;: start = int(input(&quot;Enter a start number: &quot;)) end = int(input(&quot;Enter an end number: &quot;)) # Call our function to print the ranges range_from_1_to_20(start, end) 1

đầu ra

Ví dụ – Tìm một dãy Fibonacci cho đến số hạng thứ n bằng vòng lặp While

Dãy Fibonacci có công thức

def range_from_start_to_end(start, end): for i in range(start, end+1): print(i) if __name__ == &quot;__main__&quot;: start = int(input(&quot;Enter a start number: &quot;)) end = int(input(&quot;Enter an end number: &quot;)) # Call our function to print the ranges range_from_1_to_20(start, end) 2

Hai số đầu tiên là 0 và 1, sau đó các số tiếp theo là tổng của hai số trước đó (n-1)th và (n-2)th

Dãy Fibonacci của 8 sẽ là 0,1,1,2,3,5,8,13

def range_from_start_to_end(start, end): for i in range(start, end+1): print(i) if __name__ == &quot;__main__&quot;: start = int(input(&quot;Enter a start number: &quot;)) end = int(input(&quot;Enter an end number: &quot;)) # Call our function to print the ranges range_from_1_to_20(start, end) 3

đầu ra

Trước tiên, chương trình của chúng tôi xác định giá trị thứ n đầu tiên (n1=0), sau đó chương trình sẽ kiểm tra xem n_term được truyền dưới dạng đối số có bằng 1 không. Nếu TRUE, nó trả về 0

Khác, nó xác định hai biến

  • đếm = 0. Điều này sẽ được sử dụng trong vòng lặp while để kiểm tra điều kiện nếu số đếm nhỏ hơn n_term(count < n_term)
  • n2=1. Đây là giá trị thứ n thứ hai của chúng tôi

Cho đến nay, chúng tôi có 0,1 trong chuỗi của chúng tôi (n1, n2). Trong khi điều kiện là TRUE

  • Giá trị của n2 được gán cho một biến tạm thời(temp = n2)
  • Tổng của hai số liền trước được tính và gán cho n2(n2 = n1 + n2)
  • Giá trị tạm thời của chúng ta(n2 giá trị cũ) được gán cho n1(n1 = temp)
  • Số lượng của chúng tôi được tăng lên (số lượng +=1) và điều kiện được kiểm tra lại

Vào cuối lần lặp đầu tiên, chúng ta có 0,1,1 trong đó

  • n1 = 1 (1 đầu tiên)
  • n2= 1 ( cái thứ hai 1)

Thao tác này sẽ lặp lại cho đến khi điều kiện count

Chủ đề