Vòng lặp while trong Python có tác dụng gì? Cú pháp và cách sử dụng vòng lặp while ra sao? Đó là những nội dung mà chúng ta sẽ tiếp cận trong bài học Python này.

Vòng lặp được sử dụng trong lập trình để lặp lại một đoạn code cụ thể, while cũng là một trong số đó. Trong Python, while được dùng để lặp lại một khối lệnh, đoạn code khi điều kiện kiểm tra là đúng. while dùng trong những trường hợp mà chúng ta không thể dự đoán trước được số lần cần lặp là bao nhiêu.

Cú pháp của while trong Python

while điu_kin_kim_tra:
      Khi lnh ca while

Trong vòng lặp while, điều_kiện_kiểm_tra sẽ được kiểm tra đầu tiên. Khối lệnh của vòng lặp chỉ được nạp vào nếu điều_kiện_kiểm_tra là True. Sau một lần lặp, điều_kiện_kiểm_tra sẽ được kiểm tra lại. Quá trình này sẽ tiếp tục cho đến khi điều_kiện_kiểm_tra là False. Trong Python mọi giá trị khác 0 đều là True, None và 0 được hiểu là False. Đặc điểm này của while có thể dẫn đến trường hợp là while có thể không chạy vì ngay lần lặp đầu tiên điều_kiện_kiểm_tra đã False. Khi đó, khối lệnh của while sẽ bị bỏ qua và phần code ngay sau đó sẽ được thực thi.

Sơ đồ vòng lặp while trong Python
Sơ đồ vòng lặp while trong Python

Giống như if hay vòng lặp for, khối lệnh của while cũng được xác định thông qua thụt lề. Khối lệnh bắt đầu với thụt lề đầu tiên và kết thúc với dòng không thụt lề đầu tiên liền sau khối.

Ví dụ 1:

count = 0
n = 0
while (count < 8):
      print ('Số thứ', n,' là:', count)
      n = n + 1
      count = count + 1
print ("Hết rồi!") 

Với đoạn code này, ta sẽ tăng dần count và in giá trị của nó cho đến khi giá trị này không còn nhỏ hơn 8 nữa. Kết quả khi chạy lệnh trên ta có:

S th 0 là: 0
S th 1 là: 1
S th 2 là: 2
S th 3 là: 3
S th 4 là: 4
S th 5 là: 5
S th 6 là: 6
S th 7 là: 7
Hết ri! 

Ví dụ 2: Sử dụng while để tính tổng các số 

n = int(input("Nhập n: ")) #Nhập số n tùy ý
tong = 0 #khai báo và gán giá trị cho tong
i = 1 #khai báo và gán giá trị cho biến đếm i

while i <= n:
    tong = tong + i
    i = i+1 # cập nhật biến đếm

print("Tổng là", tong)

Với khối lệnh trên ta có, nhập một số tự nhiên n bất kỳ và tính tổng các số từ 1 đến n, sau đó in tổng. Biến lưu trữ tổng là tong, biến đếm là i, cho đến khi i còn nhỏ hơn hoặc bằng n thì vòng lặp vẫn tiếp tục và tong vẫn tăng.

Sau khi chạy lệnh ta có kết quả:

Nhp n: 11
Tng là 66

Trong ví dụ trên biến đếm i cần phải được tăng giá trị, điều này là rất quan trọng, nếu không sẽ dẫn đến một vòng lặp vô hạn. Rất nhiều trường hợp lưu ý này đã bị lãng quên.

Ví dụ 3: Vòng lặp vô hạn

Lấy lại ví dụ trên, bạn chỉ cần bỏ đi dòng i=i+1

n = int(input("Nhập n: ")) #Nhập số n tùy ý
tong = 0 #khai báo và gán giá trị cho tong
i = 1 #khai báo và gán giá trị cho biến đếm i

while i <= n:
    tong = tong + i

print("Tổng là", tong) 

Khi này chạy lệnh ta sẽ được:

Nhp n: 1
Traceback (most recent call last):
 File "C:/Users/Quantrimang.com/Programs/Python/Python36-32/QTM.com", line 6, in <module>
 tong = tong + i
KeyboardInterrupt
2
3
4
5

Khi bạn nhập giá trị 1 vào thì thấy không có lệnh nào được thực hiện tiếp, nhấn Enter > nhập 2 > Enter > nhập 3… đến 5 vẫn không thấy tong được in. Đây là một trường hợp của lệnh vô hạn. Để thoát khỏi vòng lặp vô hạn bạn nhấn phím Ctrl + C, khi đó sẽ xuất hiện dòng thông báo “Traceback…” như bên trên.

Kết hợp while với else

Giống như vòng lặp for, bạn cũng có thể kết hợp else với while. Trong trường hợp này, khối lệnh của else sẽ được thực hiện khi điều kiện của while là False.

Ví dụ 4: Minh họa việc sử dụng while kết hợp với else

dem = 0
while dem < 3:
    print("Đang ở trong vòng lặp while")
    dem = dem + 1
else:
    print("Đang ở trong else")

Ở đây ta sử dụng biến dem để in chuỗi “Đang ở trong vòng lặp while” 3 lần. Đến lần lặp thứ 4, điều kiện của while trở thành False, nên phần lệnh của else được thực thi. Kết quả là:

Đang  trong vòng lp while
Đang  trong vòng lp while
Đang  trong vòng lp while
Đang  trong else

Ví dụ 5: Đếm và in các số nhỏ hơn 2 

n = 0
while n < 2:
    print(n,"nhỏ hơn 2")
    n = n + 1
else:
   print (n,"không nhỏ hơn 2")

Giá trị ban đầu của n ta gán là 0, tăng dần giá trị của n và in, lặp cho đến khi n không nhỏ hơn 2, nếu n bằng hoặc lớn hơn 2 thì vòng lặp kết thúc và khối lệnh else sẽ được thực thi, kết quả là:

0 là nh hơn 2
1 là nh hơn 2
2 không nh hơn 2

while trên một dòng

Nếu vòng lặp while chỉ có một lệnh duy nhất thì có thể viết trên cùng một dòng với while như ví dụ này:

Ví dụ 6: Vòng lặp vô hạn với while một dòng lệnh

flag = 1 while (flag): print ('Flag đã cho là True!")
Print ("Hẹn gặp lại!")

Đây là một vòng lặp vô hạn, hãy nhớ tổ hợp phím Ctrl + C trước khi bạn nhấn F5 hay Run, nếu không nó sẽ chạy từ ngày này qua ngày khác đấy =)).

Hết rồi, vòng lặp while cũng không phức tạp lắm nhỉ. Trong phần tiếp theo chúng ta sẽ tìm hiểu về lệnh break và continue trong Python, các bạn đón đọc nhé.

74 BÌNH LUẬN

  1. Wow that was strange. I just wrote an really long comment but after I clicked
    submit my comment didn’t show up. Grrrr…
    well I’m not writing all that over again. Anyways, just wanted to
    say fantastic blog!

  2. It is the best time to make some plans for the future
    and it’s time to be happy. I have read this post and if I could I want to suggest you few
    interesting things or suggestions. Perhaps you can write next articles referring to this article.

    I desire to read even more things about it!

  3. Hi there to every body, it’s my first go to see of this
    website; this web site consists of awesome and in fact good material
    designed for visitors.

  4. I’d like to thank you for the efforts you have put in penning this blog.
    I’m hoping to view the same high-grade blog posts from you later on as well.

    In fact, your creative writing abilities has encouraged
    me to get my very own website now 😉

  5. We’re a group of volunteers and opening a new
    scheme in our community. Your site provided
    us with valuable info to work on. You’ve done a formidable job and our entire community will be grateful
    to you.

  6. Aw, this was a really nice post. Taking a few minutes and actual
    effort to produce a really good article… but what can I say… I procrastinate a whole lot and don’t manage to
    get nearly anything done.

  7. It’s really a great and helpful piece of information. I am happy that you simply shared
    this useful info with us. Please stay us informed like
    this. Thank you for sharing.

  8. I think this is among the most important information for me.

    And i am glad reading your article. But want to remark on some general things, The site style is great, the articles is really nice :
    D. Good job, cheers

  9. After looking at a few of the articles on your web page, I seriously like your technique of writing a blog.
    I saved as a favorite it to my bookmark website list and will be checking back soon. Please visit my website too and tell me your opinion.

  10. My spouse and I absolutely love your blog and find many of your post’s to be exactly I’m looking for.
    Does one offer guest writers to write content for yourself?
    I wouldn’t mind composing a post or elaborating on most of
    the subjects you write concerning here. Again, awesome weblog!

  11. What’s Taking place i am new to this, I stumbled upon this I’ve found It positively useful and it has helped me out loads.

    I’m hoping to contribute & aid other customers like its aided
    me. Good job.

  12. Hmm is anyone else experiencing problems with the pictures on this blog loading?
    I’m trying to find out if its a problem on my end or if it’s the blog.
    Any feed-back would be greatly appreciated.

  13. Thanks for your marvelous posting! I definitely enjoyed reading it, you might be a great author.
    I will make certain to bookmark your blog and may come back in the foreseeable future.
    I want to encourage that you continue your great work,
    have a nice day!

  14. I’m amazed, I have to admit. Rarely do I encounter a blog that’s both equally educative and amusing, and let
    me tell you, you’ve hit the nail on the head.

    The issue is an issue that not enough men and women are speaking
    intelligently about. Now i’m very happy I found this in my search for something relating to this.

  15. Have you ever thought about creating an e-book or guest authoring on other websites?
    I have a blog based on the same information you discuss and would really like to have you share some stories/information. I know my readers would appreciate
    your work. If you are even remotely interested, feel free to
    send me an e mail.

  16. Hey! I know this is kind of off topic but I was wondering which blog platform
    are you using for this website? I’m getting tired of WordPress because I’ve
    had issues with hackers and I’m looking at alternatives for another
    platform. I would be fantastic if you could point me in the direction of a good
    platform.

  17. I’m impressed, I must say. Rarely do I encounter a blog that’s both educative and entertaining, and
    without a doubt, you’ve hit the nail on the head.
    The problem is an issue that too few people are speaking intelligently about.
    I am very happy that I found this in my hunt for something concerning this.

  18. Hi there! This is my first visit to your blog! We are
    a team of volunteers and starting a new project in a
    community in the same niche. Your blog provided us useful information to work
    on. You have done a wonderful job!

  19. Hi! I could have sworn I’ve been to this blog before but after browsing through some of
    the post I realized it’s new to me. Anyhow, I’m definitely glad I found it and I’ll be bookmarking and checking back often!

  20. Hey There. I found your weblog using msn. That is a very neatly written article.
    I will be sure to bookmark it and return to learn more of your helpful info.
    Thanks for the post. I’ll definitely return.

  21. Hello there, There’s no doubt that your blog may be having web browser
    compatibility issues. Whenever I take a look at your blog in Safari, it looks
    fine however when opening in I.E., it’s got some overlapping issues.
    I just wanted to provide you with a quick heads up! Aside from that,
    excellent website!

  22. Te preocupan tus erecciones o tienes otros problemas sexuales, como eyaculación precoz o tardía. En advertencias: En caso de antecedentes de disminución o pérdida súbita de la visión de uno o ambos ojos, se debe analizar el riesgo del uso del medicamento.

  23. Good post however , I was wondering if you could write a litte more on this topic?

    I’d be very grateful if you could elaborate a little bit further.
    Bless you!

  24. Hello! This is my first visit to your blog! We are a team of volunteers and starting
    a new initiative in a community in the same niche. Your blog provided us useful information to work on. You have
    done a outstanding job!

  25. Great blog! Do you have any tips and hints for aspiring writers?
    I’m hoping to start my own website soon but I’m a little lost on everything.
    Would you recommend starting with a free platform like WordPress or go for a paid option? There
    are so many options out there that I’m completely confused ..
    Any tips? Many thanks!

  26. This design is steller! You certainly know how
    to keep a reader entertained. Between your wit and your
    videos, I was almost moved to start my own blog (well,
    almost…HaHa!) Fantastic job. I really loved what you had to say, and more than that, how you presented it.
    Too cool!

  27. Hey there I am so delighted I found your blog, I really found you by mistake, while
    I was looking on Yahoo for something else, Anyways I am here now and would just like to say thanks for a marvelous post and a all round thrilling blog (I also
    love the theme/design), I don’t have time to browse it all at the minute but I have book-marked it
    and also added in your RSS feeds, so when I have time I will be back to read more, Please do keep up
    the great work.

  28. Hi this is kind of of off topic but I was wanting
    to know if blogs use WYSIWYG editors or if you have to
    manually code with HTML. I’m starting a blog soon but have no coding experience so I wanted to get advice from someone with experience.
    Any help would be enormously appreciated!

  29. Hi, I believe your website could possibly be having
    browser compatibility problems. When I take a look
    at your site in Safari, it looks fine however when opening in Internet
    Explorer, it’s got some overlapping issues.

    I just wanted to provide you with a quick heads up!

    Aside from that, great website!

THOÁT KHỎI BÌNH LUẬN

Please enter your comment!
Please enter your name here