i = 1 # 1. initialisewhile i <= 3: # 2. condition check -> True? print(i) # 3. body run karo i = i + 1 # 4. update -> step 2 par wapas jao
Trace table (Yeh step kyun? = "har check dikhao, including final wala jo fail hota hai"):
Step
i
i <= 3?
Action
check
1
True
print 1, i→2
check
2
True
print 2, i→3
check
3
True
print 3, i→4
check
4
False
loop exit
Condition 4 baar check hoti hai 3 numbers print karne ke liye — aakhri check wahi hai jo isko end karta hai. Is off-by-one ko bhoolna #1 bug ka source hai.
Socho tum ek bucket ko cup se bhar rahe ho. Har scoop se pehle tum andar jhaankte ho aur poochte ho: "Kya bucket abhi bhi bhari nahi hai?" Agar haan, toh ek aur scoop laate ho. Agar bucket bhar gayi, toh ruk jaate ho. "Jhaankna" hai condition, "scoop lena" hai body, aur paani daalna hai update. Agar tum jhaankate ho lekin paani nahi daalta (koi update nahi), toh bucket kabhi nahi bharegi — toh tum hamesha scoop karte rehte ho aur haath thak jaata hai. Woh endless scooping hai infinite loop.
When is a while loop's condition evaluated relative to the body?
Har iteration se pehle (pre-test loop); body zero baar bhi run ho sakta hai.
What causes an accidental infinite loop?
Ek aisi condition jo kabhi False nahi hoti — usually ek missing ya misplaced update statement.
Difference between for and while in intent?
for = pata iteration count; while = tab tak repeat karo jab tak condition change ho, count pehle se nahi pata.
Why avoid while x == target: with floating-point updates?
Float arithmetic kabhi kabhi exactly kisi value par nahi utarti; condition target ko skip kar sakti hai aur loop hamesha chalata rahe. </> comparisons use karo.
What does break do inside while True:?
Turant loop se bahar nikal jaata hai, intentionally infinite loop ke liye real, controlled stop provide karta hai.
In while i <= 3: print(i); i+=1 starting i=1, how many times is the condition checked?
4 baar (3 True + 1 final False jo isko end karta hai).
What key combo stops a runaway loop in a terminal?
Ctrl + C.
What error does while x = 5: produce?
SyntaxError — = assignment hai, comparison ke liye == chahiye.