Python While Loop oktatóanyag - Míg az igazi szintaxis példák és a végtelen hurkok

Üdvözöljük! Ha meg akarja tanulni, hogyan kell működni a while ciklusokkal a Pythonban, akkor ez a cikk az Ön számára.

Míg a ciklusok nagyon hatékony programozási struktúrák, amelyeket a programjaiban használhat egy utasítássorozat megismétlésére.

Ebben a cikkben megtudhatja:

  • Mi van, míg a hurkok vannak.
  • Mire használják őket.
  • Mikor kell használni őket.
  • Hogyan működnek a kulisszák mögött.
  • Hogyan írhatunk egy darab ciklust Pythonba.
  • Mik a végtelen hurkok és hogyan szakíthatjuk meg őket.
  • Mire while Truehasználják és általános szintaxisa.
  • Hogyan használhatunk egy breakállítást egy darab hurok leállításához.

Példákkal, táblázatokkal és diagramokkal megtudhatja, hogyan működnek a hurkok a kulisszák mögött.

Kész vagy? Kezdjük. ?

? Hurok közbeni célok és használat

Kezdjük a while ciklusok céljával. Mire használják őket?

Arra használják, hogy ismeretlen számú alkalommal megismételjék az állítások sorozatát. Ez a típusú ciklus addig fut, amíg egy adott feltétel fennáll, Trueés csak akkor áll le, amikor a feltétel válik False.

Amikor írunk egy darab ciklust, nem határozzuk meg egyértelműen, hogy hány iteráció készül el, csak azt a feltételt írjuk meg, amelynek Truea folyamat folytatásának és Falseleállításának kell lennie .

? Tipp: ha a while ciklus feltétel soha nem értékel False, akkor végtelen ciklusunk lesz, amely egy hurok, amely soha nem áll le (elméletileg) külső beavatkozás nélkül.

Néhány példa a while hurkok valós felhasználási eseteire:

  • Felhasználói bevitel: Amikor felhasználói bevitelt kérünk, ellenőriznünk kell, hogy a megadott érték érvényes-e. Nem tudhatjuk előre, hogy a felhasználó hányszor ír be érvénytelen bemenetet, mielőtt a program folytatódhat. Ezért egy kis ciklus tökéletes lenne ehhez a forgatókönyvhöz.
  • Keresés: egy adatstruktúrában egy elem keresése egy másik tökéletes felhasználási eset egy ideig, mert nem tudjuk előre, hány iterációra lesz szükség a célérték megtalálásához. Például a Bináris keresés algoritmus megvalósítható egy darab hurok segítségével.
  • Játékok: Egy játék során egy darab ciklus használható a játék fő logikájának működtetésére, amíg a játékos veszít vagy a játék véget ér. Nem tudhatjuk előre, hogy ez mikor következik be, így ez egy újabb tökéletes forgatókönyv egy ideig.

? Hogyan működnek a hurkok

Most, hogy tudja, mire használhatók a hurkok, nézzük meg a fő logikájukat és a kulisszák mögötti működésüket. Itt van egy diagramunk:

Bontjuk ezt részletesebben:

  • A folyamat akkor kezdődik, amikor a program futtatása során egy darab hurok található.
  • A feltétel kiértékelésével ellenőrizzük, hogy ez-e Truevagy sem False.
  • Ha a feltétel megvan True, akkor a ciklushoz tartozó utasítások végrehajtásra kerülnek.
  • A while ciklus állapotát újra ellenőrizzük.
  • Ha az állapot Trueújra felértékelődik, az utasítások sorrendje ismét fut, és a folyamat megismétlődik.
  • Amikor a feltétel kiértékelődik False, a hurok leáll, és a program a cikluson túl is folytatódik.

A while ciklusok egyik legfontosabb jellemzője, hogy a ciklus feltételben használt változók nem frissülnek automatikusan. Kifejezetten frissítenünk kell az értékeiket a kódunkkal, hogy megbizonyosodhassunk arról, hogy a ciklus végül leáll, amikor az állapot felértékelődik False.

While A hurkok általános szintaxisa

Nagy. Most már tudja, hogyan működnek a ciklusok, ezért merüljünk el a kódban, és nézzük meg, hogyan írhatunk egy darab ciklust Pythonba. Ez az alapvető szintaxis:

Ezek a fő elemek (sorrendben):

  • A whilekulcsszó (amelyet szóköz követ).
  • Feltétel annak megállapítására, hogy a hurok folytatja-e a futását, vagy sem az igazságértéke ( Truevagy False) alapján.
  • Kettőspont ( :) az első sor végén.
  • Az ismétlődő állítások sorrendje. Ezt a kódblokkot a hurok "testének" nevezik, és behúzni kell. Ha egy utasítás nem behúzott, akkor nem tekinthető a hurok részének (lásd az alábbi ábrát).

? Tipp: A Python stílus útmutató (PEP 8) 4 szóköz használatát javasolja behúzási szintenként. A füleket csak akkor szabad használni, hogy konzisztensek maradjanak a már fülekkel behúzott kódokkal.

? Példák a hurok használatára

Most, hogy tudod, hogyan működnek a ciklusok, és hogyan lehet ezeket Pythonba írni, nézzük meg, hogyan működnek a kulisszák mögött, néhány példával.

Hogyan működik egy alapvető, míg a hurok

Itt van egy basic while ciklus, amely kinyomtatja a iwhile értékét, iamely kevesebb, mint 8 ( i < 8):

i = 4 while i < 8: print(i) i += 1

Ha futtatjuk a kódot, akkor ezt a kimenetet látjuk:

4 5 6 7

Nézzük meg, mi történik a kulisszák mögött, amikor a kód fut:

  • 1. iteráció: kezdetben a i4 értéke , tehát a feltétel értéket kap i < 8, Trueés a hurok futni kezd. A i(4) értéke ki van nyomtatva, és ezt az értéket 1-gyel növeljük. A hurok újra indul.
  • Iteration 2: most az értéke i5, tehát a feltétel i < 8kiértékelése True. A hurok törzse fut, a i(5) értéke kinyomtatásra kerül, és ezt az értéket i1-gyel növeljük. A hurok újra indul.
  • 3. és 4. iteráció: Ugyanaz a folyamat megismétlődik a harmadik és a negyedik iterációnál is, így a 6 és 7 egész számok kinyomtatásra kerülnek.
  • Before starting the fifth iteration, the value of i is 8. Now the while loop condition i < 8 evaluates to False and the loop stops immediately.

? Tip: If the while loop condition is False before starting the first iteration, the while loop will not even start running.

User Input Using a While Loop

Now let's see an example of a while loop in a program that takes user input. We will the input() function to ask the user to enter an integer and that integer will only be appended to list if it's even.

This is the code:

# Define the list nums = [] # The loop will run while the length of the # list nums is less than 4 while len(nums) < 4: # Ask for user input and store it in a variable as an integer. user_input = int(input("Enter an integer: ")) # If the input is an even number, add it to the list if user_input % 2 == 0: nums.append(user_input)

The loop condition is len(nums) < 4, so the loop will run while the length of the list nums is strictly less than 4.

Let's analyze this program line by line:

  • We start by defining an empty list and assigning it to a variable called nums.
nums = []
  • Then, we define a while loop that will run while len(nums) < 4.
while len(nums) < 4:
  • We ask for user input with the input() function and store it in the user_input variable.
user_input = int(input("Enter an integer: "))

? Tip: We need to convert (cast) the value entered by the user to an integer using the int() function before assigning it to the variable because the input() function returns a string (source).

  • We check if this value is even or odd.
if user_input % 2 == 0:
  • If it's even, we append it to the nums list.
nums.append(user_input)
  • Else, if it's odd, the loop starts again and the condition is checked to determine if the loop should continue or not.

If we run this code with custom user input, we get the following output:

Enter an integer: 3 Enter an integer: 4 Enter an integer: 2 Enter an integer: 1 Enter an integer: 7 Enter an integer: 6 Enter an integer: 3 Enter an integer: 4 

This table summarizes what happens behind the scenes when the code runs:

? Tip: The initial value of len(nums) is 0 because the list is initially empty. The last column of the table shows the length of the list at the end of the current iteration. This value is used to check the condition before the next iteration starts.

As you can see in the table, the user enters even integers in the second, third, sixth, and eight iterations and these values are appended to the nums list.

Before a "ninth" iteration starts, the condition is checked again but now it evaluates to False because the nums list has four elements (length 4), so the loop stops.

If we check the value of the nums list when the process has been completed, we see this:

>>> nums [4, 2, 6, 4]

Exactly what we expected, the while loop stopped when the condition len(nums) < 4 evaluated to False.

Now you know how while loops work behind the scenes and you've seen some practical examples, so let's dive into a key element of while loops: the condition.

? Tips for the Condition in While Loops

Before you start working with while loops, you should know that the loop condition plays a central role in the functionality and output of a while loop.

You must be very careful with the comparison operator that you choose because this is a very common source of bugs.

For example, common errors include:

  • Using < (less than) instead of <= (less than or equal to) (or vice versa).
  • Using > (greater than) instead of >= (greater than or equal to) (or vice versa).  

This can affect the number of iterations of the loop and even its output.

Let's see an example:

If we write this while loop with the condition i < 9:

i = 6 while i < 9: print(i) i += 1 

We see this output when the code runs:

6 7 8

The loop completes three iterations and it stops when i is equal to 9.

This table illustrates what happens behind the scenes when the code runs:

  • Before the first iteration of the loop, the value of i is 6, so the condition i < 9 is True and the loop starts running. The value of i is printed and then it is incremented by 1.
  • In the second iteration of the loop, the value of i is 7, so the condition i < 9 is True. The body of the loop runs, the value of i is printed, and then it is incremented by 1.
  • In the third iteration of the loop, the value of i is 8, so the condition i < 9 is True. The body of the loop runs, the value of i is printed, and then it is incremented by 1.
  • The condition is checked again before a fourth iteration starts, but now the value of i is 9, so i < 9 is False and the loop stops.

In this case, we used < as the comparison operator in the condition, but what do you think will happen if we use <= instead?

i = 6 while i <= 9: print(i) i += 1

We see this output:

6 7 8 9

The loop completes one more iteration because now we are using the "less than or equal to" operator <= , so the condition is still True when i is equal to 9.

This table illustrates what happens behind the scenes:

Four iterations are completed. The condition is checked again before starting a "fifth" iteration. At this point, the value of i is 10, so the condition i <= 9 is False and the loop stops.

? Infinite While Loops

Now you know how while loops work, but what do you think will happen if the while loop condition never evaluates to False?

What are Infinite While Loops?

Remember that while loops don't update variables automatically (we are in charge of doing that explicitly with our code). So there is no guarantee that the loop will stop unless we write the necessary code to make the condition False at some point during the execution of the loop.

If we don't do this and the condition always evaluates to True, then we will have an infinite loop, which is a while loop that runs indefinitely (in theory).

Infinite loops are typically the result of a bug, but they can also be caused intentionally when we want to repeat a sequence of statements indefinitely until a break statement is found.

Let's see these two types of infinite loops in the examples below.

? Tip: A bug is an error in the program that causes incorrect or unexpected results.

Example of Infinite Loop

This is an example of an unintentional infinite loop caused by a bug in the program:

# Define a variable i = 5 # Run this loop while i is less than 15 while i < 15: # Print a message print("Hello, World!") 

Analyze this code for a moment.

Don't you notice something missing in the body of the loop?

That's right!

The value of the variable i is never updated (it's always 5). Therefore, the condition i < 15 is always True and the loop never stops.

If we run this code, the output will be an "infinite" sequence of Hello, World! messages because the body of the loop print("Hello, World!") will run indefinitely.

Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! . . . # Continues indefinitely

To stop the program, we will need to interrupt the loop manually by pressing CTRL + C.

When we do, we will see a KeyboardInterrupt error similar to this one:

To fix this loop, we will need to update the value of i in the body of the loop to make sure that the condition i < 15 will eventually evaluate to False.

This is one possible solution, incrementing the value of i by 2 on every iteration:

i = 5 while i < 15: print("Hello, World!") # Update the value of i i += 2

Great. Now you know how to fix infinite loops caused by a bug. You just need to write code to guarantee that the condition will eventually evaluate to False.

Let's start diving into intentional infinite loops and how they work.

? How to Make an Infinite Loop with While True

We can generate an infinite loop intentionally using while True. In this case, the loop will run indefinitely until the process is stopped by external intervention (CTRL + C) or when a break statement is found (you will learn more about break in just a moment).

This is the basic syntax:

Instead of writing a condition after the while keyword, we just write the truth value directly to indicate that the condition will always be True.

Here we have an example:

>>> while True: print(0) 0 0 0 0 0 0 0 0 0 0 0 0 0 Traceback (most recent call last): File "", line 2, in  print(0) KeyboardInterrupt

A hurok addig fut, amíg meg CTRL + Cnem nyomják, de a Pythonnak van egy breaknyilatkozata is, amelyet közvetlenül a kódunkban használhatunk az ilyen típusú hurok leállításához.

Az breakállítás

Ezt az állítást használják egy hurok azonnali leállítására. Úgy kell gondolni rá, mint egy piros "stop jelre", amelyet a kódjában használhat, hogy jobban ellenőrizhesse a hurok viselkedését.

A Python dokumentáció szerint:

Az breakállítás, hasonlóan a C-hez, kitör a legbelső burkolatból forvagy whilehurokból.

Ez az ábra szemlélteti az utasítás alapvető logikáját break:

Ez az breakállítás alaplogikája :

  • A while ciklus csak akkor indul el, ha a feltétel erre értékelődik True.
  • If a break statement is found at any point during the execution of the loop, the loop stops immediately.
  • Else, if break is not found, the loop continues its normal execution and it stops when the condition evaluates to False.

We can use break to stop a while loop when a condition is met at a particular point of its execution, so you will typically find it within a conditional statement, like this:

while True: # Code if : break # Code

This stops the loop immediately if the condition is True.

? Tip: You can (in theory) write a break statement anywhere in the body of the loop. It doesn't necessarily have to be part of a conditional, but we commonly use it to stop the loop when a given condition is True.

Here we have an example of break in a while True loop:

Let's see it in more detail:

The first line defines a while True loop that will run indefinitely until a break statement is found (or until it is interrupted with CTRL + C).

while True:

The second line asks for user input. This input is converted to an integer and assigned to the variable user_input.

user_input = int(input("Enter an integer: "))

The third line checks if the input is odd.

if user_input % 2 != 0:

If it is, the message This number is odd is printed and the break statement stops the loop immediately.

print("This number of odd") break

Else, if the input is even , the message This number is even is printed and the loop starts again.

print("This number is even")

The loop will run indefinitely until an odd integer is entered because that is the only way in which the break statement will be found.

Here we have an example with custom user input:

Enter an integer: 4 This number is even Enter an integer: 6 This number is even Enter an integer: 8 This number is even Enter an integer: 3 This number is odd >>>

? In Summary

  • While loops are programming structures used to repeat a sequence of statements while a condition is True. They stop when the condition evaluates to False.
  • When you write a while loop, you need to make the necessary updates in your code to make sure that the loop will eventually stop.
  • An infinite loop is a loop that runs indefinitely and it only stops with external intervention or when a break statement is found.
  • You can stop an infinite loop with CTRL + C.
  • You can generate an infinite loop intentionally with while True.
  • The break statement can be used to stop a while loop immediately.

I really hope you liked my article and found it helpful. Now you know how to work with While Loops in Python.

Follow me on Twitter @EstefaniaCassN and if you want to learn more about this topic, check out my online course Python Loops and Looping Techniques: Beginner to Advanced.