Hướng dẫn while loop return python - trong khi vòng lặp trả lại python

Dẫn nhập

Trong bài trước, Kteam đã giới thiệu đến bạn CÂU ĐIỀU KIỆN IF - một dạng cấu trúc rẽ nhánh rất quan trọng trong mọi ngôn ngữ lập trình không chỉ riêng Python

Nội dung chính

  • Dẫn nhập
  • Đặt vấn đề
  • Cấu trúc vòng lặp while và cách hoạt động
  • Nó sẽ hoạt động ra sao?
  • Sử dụng vòng lặp để xử lí chuỗi, list, tuple
  • Câu lệnh break và continue
  • Câu lệnh break
  • Câu lệnh continue
  • Câu lệnh pass
  • Cấu trúc vòng lặp while-else và cách hoạt động
  • Hiện tượng vòng lặp vô tận
  • Củng cố bài học
  • Đáp án bài trước
  • Câu hỏi củng cố
  • Kết luận
  • Thảo luận

Ở bài này Kteam sẽ giới thiệu với các bạn VÒNG LẶP WHILE TRONG PYTHON.VÒNG LẶP WHILE TRONG PYTHON.


Nội dung

Để đọc hiểu bài này tốt nhất bạn cần:

  • Cài đặt sẵn MÔI TRƯỜNG PHÁT TRIỂN CỦA PYTHON.
  • Xem qua bài CÁCH CHẠY CHƯƠNG TRÌNH PYTHON.
  • Nắm CÁCH GHI CHÚ và BIẾN TRONG PYTHON.
  • CÁC KIỂU DỮ LIỆU ĐƯỢC GIỚI THIỆU TRONG PYTHON
  • CÂU ĐIỀU KIỆN IF TRONG PYTHON

Bạn và Kteam sẽ cùng tìm hiểu những nội dung sau đây

  • Đặt vấn đề
  • Cấu trúc vòng lặp while và cách hoạt động
  • Sử dụng vòng lặp để xử lí chuỗi, list, tuple
  • Câu lệnh break và continue
  • Cấu trúc vòng lặp while-else và cách hoạt động

Đặt vấn đề

Cấu trúc vòng lặp while và cách hoạt động

Nó sẽ hoạt động ra sao?

Sử dụng vòng lặp để xử lí chuỗi, list, tuple

Câu lệnh break và continue

Câu lệnh breakWhile.


Cấu trúc vòng lặp while và cách hoạt động

Nó sẽ hoạt động ra sao?

whileexpression: expression:

Sử dụng vòng lặp để xử lí chuỗi, list, tuple# while-block

Câu lệnh break và continueViệc chia block như thế này cũng giống như khi bạn sử dụng câu lệnh if và đã được Kteam giới thiệu ở bài trước CẤU TRÚC RẼ NHÁNH.


Nó sẽ hoạt động ra sao?

Sử dụng vòng lặp để xử lí chuỗi, list, tuple expression. Nếu là False, thì bỏ qua while-block và đến với câu lệnh tiếp theo. Ngược lại, sẽ thực hiện toàn bộ câu lệnh trong while-block. Sau khi thực hiện xong, quay ngược lại kiểm tra giá trị boolean của expression một lần nữa. Nếu False thì bỏ qua while-block, còn True thì tiếp tục thực hiện while-block. Và sau khi thực hiện xong while-block lại quay về kiểm tra giá trị boolean expression như những lần trước.

Câu lệnh break và continue

>>> k = 5
>>>
>>> while k > 0:
...     print('k =', k)
...     k -= 1
...
k = 5
k = 4
k = 3
k = 2
k = 1
>>> k # k bằng 0 nên > 0 là một boolean False, do đó vòng lặp đã kết thúc
0

Sử dụng vòng lặp để xử lí chuỗi, list, tuple

Câu lệnh break và continueiterable cho phép ta truy xuất một giá trị bất kí trong nó bằng phương pháp indexing. Thế nên, ta có thể nhờ điều này kết hợp với vòng lặp để xử lí chúng.

>>> s = 'How Kteam'
>>> idx = 0 # vị trí bắt đầu bạn muốn xử lí của chuỗi
>>> length = len(s) # lấy độ dài chuỗi làm mốc kết thúc
>>>
>>> while idx < length:
...     print(idx, 'stands for', s[idx])
...     idx += 1 # di chuyển index tới vị trí tiếp theo
...
0 stands for H
1 stands for o
2 stands for w
3 stands for
4 stands for K
5 stands for t
6 stands for e
7 stands for a
8 stands for m

Câu lệnh breakListTuple hoàn toàn tương tự.


Câu lệnh break và continue

Câu lệnh break Hai câu lệnh này chỉ có thể dùng trong các vòng lặp

Câu lệnh break

Câu lệnh continue dùng để kết thúc vòng lặp. Cứ nó nằm trong block của vòng lặp nào thì vòng lặp đó sẽ kết thúc khi chạy câu lệnh này.

Câu lệnh passvòng lặp b chạy câu lệnh break thì chỉ vòng lặp b kết thúc, còn vòng lặp a thì không.

Cấu trúc vòng lặp while-else và cách hoạt động

>>> five_even_numbers = []
>>> k_number = 1
>>>
>>> while True: # vòng lặp vô hạn vì giá trị này là hằng nên ta không thể tác động được
...     if k_number % 2 == 0: # nếu k_number là một số chẵn
...         five_even_numbers.append(k_number) # thêm giá trị của k_number vào list
...     if len(five_even_numbers) == 5: # nếu list này đủ 5 phần tử
...         break # thì kết thúc vòng lặp
...     k_number += 1
...
>>> five_even_numbers
[2, 4, 6, 8, 10]
>>> k_number
10

Câu lệnh continue

Câu lệnh pass

whileexpression: expression:

Cấu trúc vòng lặp while-else và cách hoạt động #while-block-1

Hiện tượng vòng lặp vô tậncontinue

Củng cố bài học#while-block-2

Đáp án bài trướcwhile-block-1, câu lệnh continue sẽ tiếp tục vòng lặp, không quan tâm những câu lệnh ở dưới continue và như vậy nó đã bỏ qua while-block-2.

Câu hỏi củng cố

>>> k_number = 1
>>> while k_number < 10:
...     if k_number % 2 == 0: # nếu k_number là số chẵn
...         k_number += 1  # thì tăng một đơn vị cho k_number và tiếp tục vòng lặp
...         continue
...     print(k_number, 'is odd number')
...     k_number += 1
...
1 is odd number
3 is odd number
5 is odd number
7 is odd number
9 is odd number

Câu lệnh pass

Cấu trúc vòng lặp while-else và cách hoạt động

while expression: expression:

 passpass

Hiện tượng vòng lặp vô tận lệnh trong vòng lặp (và cả hàm) , nó sẽ xem lệnh pass này như là “vô hình”. Nhưng nó sẽ giúp tránh lỗi nếu như vòng lặp (hàm) của bạn không có bất kì một lệnh nào.

Câu hỏi củng cố

>>> a = 3
>>> b = 4
>>> while a > 0:
...     a -= 1
...     pass
...     b += 1
...
>>> b
7
>>>
>>> while a > 0:
...
  File "", line 2

    ^
IndentationError: expected an indented block after 'while' statement on line 1
>>> while a > 0:
...     pass
...
>>>

Cấu trúc vòng lặp while-else và cách hoạt động

Hiện tượng vòng lặp vô tận

whileexpression: expression:

    # while-block# while-block

else::

    # else-block# else-block

Cấu trúc này gần tương tự như while bình thường. Thêm một điều, khi vòng vòng lặp while kết thúc thì khối lệnh else-block sẽ được thực hiện.while bình thường. Thêm một điều, khi vòng vòng lặp while kết thúc thì khối lệnh else-block sẽ được thực hiện.

Ví dụ:

>>> while k < 3:
...     print('value of k is', k)
...     k += 1
... else:
...     print('k is not less than 3 anymore')
...
value of k is 0
value of k is 1
value of k is 2
k is not less than 3 anymore

Trong trường hợp trong while-block chạy câu lệnh break thì vòng lặp while sẽ kết thúc và phần else-block cũng sẽ không được thực hiện.while-block chạy câu lệnh break thì vòng lặp while sẽ kết thúc và phần else-block cũng sẽ không được thực hiện.

>>> k = 0
>>> while k < 5:
...     print('value of k is', k)
...     k += 1
...     if k > 3:
...         print('k is greater than 3')
...         break
... else:
...     print('k is not less than 5 anymore')
...
value of k is 0
value of k is 1
value of k is 2
value of k is 3
k is greater than 3

Hiện tượng vòng lặp vô tận

Các bạn cần lưu ý là, đối với vòng lặp while, trong nhiều trường hợp, bạn có thể sẽ không biết trước số lần lặp, và có thể sẽ có nhiều lỗi không mong muốn. Điển hình nhất là vòng lặp vô tận:

>>> a = 5
>>> while a != 0:
...     a -= 2

Đoạn code trên sẽ chạy mãi mãi mà không bao giờ dừng lại. Lí do là vì giá trị của biến a sẽ không bao giờ bằng 0.

Đối với những người mới học, cần nắm bắt rõ cách hoạt động của vòng lặp while để tránh các lỗi không đáng có. với những người mới học, cần nắm bắt rõ cách hoạt động của vòng lặp while để tránh các lỗi không đáng có.


Củng cố bài học

Đáp án bài trước

Bạn có thể tìm thấy câu hỏi của phần này tại CÂU HỎI CỦNG CỐ trong bài CẤU TRÚC RẼ NHÁNH TRONG PYTHON

Cách 1:

k1 = int(input('Nhap so thu nhat\n=> '))
k2 = int(input('Nhap so thu hai\n=> '))
k3 = int(input('Nhap so thu ba\n=> '))

if k1 > k2 and k1 > k3:
    print('so lon nhat la', k1)
elif k2 > k1 and k2 > k3:
    print('so lon nhat la', k2)
else:
    print('so lon nhat la', k3)

Cách 2:

k1 = int(input('Nhap so thu nhat\n=> '))
k2 = int(input('Nhap so thu hai\n=> '))
k3 = int(input('Nhap so thu ba\n=> '))

if k1 > k2 and k1 > k3: print('so lon nhat la', k1)
elif k2 > k1 and k2 > k3: print('so lon nhat la', k2)
else: print('so lon nhat la', k3)

Câu hỏi củng cố

  1. Viết lại một vòng lặp có chức năng tương tự ví dụ * nhưng không dùng câu lệnh breakví dụ * nhưng không dùng câu lệnh break
  2. Cho một file text tên draft.txt như sau: draft.txt như sau:
>>> s = 'How Kteam'
>>> idx = 0 # vị trí bắt đầu bạn muốn xử lí của chuỗi
>>> length = len(s) # lấy độ dài chuỗi làm mốc kết thúc
>>>
>>> while idx < length:
...     print(idx, 'stands for', s[idx])
...     idx += 1 # di chuyển index tới vị trí tiếp theo
...
0 stands for H
1 stands for o
2 stands for w
3 stands for
4 stands for K
5 stands for t
6 stands for e
7 stands for a
8 stands for m
0

Trong file này có một số chữ Kteam (Kteam sẽ không xuất hiện ở đầu dòng), và trước nó là một chữ ngẫu nhiên nào đó và nhiệm vụ của bạn là đổi chữ đó thành How. Nhớ là sử dụng vòng lặp.Kteam (Kteam sẽ không xuất hiện ở đầu dòng), và trước nó là một chữ ngẫu nhiên nào đó và nhiệm vụ của bạn là đổi chữ đó thành How. Nhớ là sử dụng vòng lặp.

Sau khi đổi thành công, bạn lưu nội dung đó vào file tên kteam.txt. kteam.txt.

Đây là mẫu của kteam.txt:kteam.txt:

>>> s = 'How Kteam'
>>> idx = 0 # vị trí bắt đầu bạn muốn xử lí của chuỗi
>>> length = len(s) # lấy độ dài chuỗi làm mốc kết thúc
>>>
>>> while idx < length:
...     print(idx, 'stands for', s[idx])
...     idx += 1 # di chuyển index tới vị trí tiếp theo
...
0 stands for H
1 stands for o
2 stands for w
3 stands for
4 stands for K
5 stands for t
6 stands for e
7 stands for a
8 stands for m
1
  1. Sắp xếp một mảng số nguyên có dạng như sau:
>>> s = 'How Kteam'
>>> idx = 0 # vị trí bắt đầu bạn muốn xử lí của chuỗi
>>> length = len(s) # lấy độ dài chuỗi làm mốc kết thúc
>>>
>>> while idx < length:
...     print(idx, 'stands for', s[idx])
...     idx += 1 # di chuyển index tới vị trí tiếp theo
...
0 stands for H
1 stands for o
2 stands for w
3 stands for
4 stands for K
5 stands for t
6 stands for e
7 stands for a
8 stands for m
2

Lưu ý: là các số 11 là những số cố định không được thay đổi vị trí của nó. là các số 11 là những số cố định không được thay đổi vị trí của nó.

Sau khi sắp xếp lại mảng trên sẽ là:

>>> s = 'How Kteam'
>>> idx = 0 # vị trí bắt đầu bạn muốn xử lí của chuỗi
>>> length = len(s) # lấy độ dài chuỗi làm mốc kết thúc
>>>
>>> while idx < length:
...     print(idx, 'stands for', s[idx])
...     idx += 1 # di chuyển index tới vị trí tiếp theo
...
0 stands for H
1 stands for o
2 stands for w
3 stands for
4 stands for K
5 stands for t
6 stands for e
7 stands for a
8 stands for m
3

Đáp án của phần này sẽ được trình bày ở bài tiếp theo. Tuy nhiên, Kteam khuyến khích bạn tự trả lời các câu hỏi để củng cố kiến thức cũng như thực hành một cách tốt nhất! 


Kết luận

Qua bài viết này, Bạn đã biết về VÒNG LẶP WHILE TRONG PYTHON.

Ở bài viết sau, Kteam sẽ nói đến một vòng lặp nữa đó là VÒNG LẶP FOR TRONG PYTHON.

Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.Luyện tập – Thử thách – Không ngại khó”.


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.