0

Why does two nearly identical statements show two different outcomes?

I am doing a course with while, and there is a question: You are making a ticketing system. The price of a single ticket is $100. For children under 3 years old, the ticket is free. Your program needs to take the ages of 5 passengers as input and output the total price for their tickets. and firstly i wrote: passenger = 0 total = 0 while passenger <= 5: age = int(input()) if age >= 3: total += 100 passenger += 1 print(total) and this gave me an EOF error while passenger = 0 total = 0 while passenger != 5: age = int(input()) if age >= 3: total += 100 passenger += 1 print(total) Was working. What is the problem with the first?

20th Sep 2021, 9:20 AM
Can Önol
Can Önol - avatar
3 ответов
+ 2
for first one, the loop will run 6 times, but you actually need 5 inputs for 5passenger 1st: passenger = 0, condition satisfies 2nd: passenger = 1, condition satisfies 3rd: passenger = 2, condition satisfies 4th: passenger = 3, condition satisfies 5tht: passenger = 4, condition satisfies 6th: passenger = 5, condition satisfies 7th: passenger = 6, condition doesn't satisfy, loop breaks for 2nd one, works good, 1st: passenger = 0, condition satisfies 2nd: passenger = 1, condition satisfies 3rd: passenger = 2, condition satisfies 4th: passenger = 3, condition satisfies 5tht: passenger = 4, condition satisfies 6th: passenger = 6, condition doesn't satisfy, loop breaks.... so, if you had used "<5" in first code instead of "<=5" , it would have worked. Or else you could initialize passenger with "1" (passenger = 1), then it will work for first one
20th Sep 2021, 9:43 AM
Satyam Das
Satyam Das - avatar
+ 4
In your second code, you say while passengers !=5, which means while passengers <5. Your first code includes 5 as a parameter. To a computer, nearly the same is not good enough. It must be exactly as stated. I wish people were like that. 😔
20th Sep 2021, 9:27 AM
Rik Wittkopp
Rik Wittkopp - avatar
+ 3
In the first code, the while statement works 6 times. Cause passenger is 0 at initial and in the while, it says <= 5, so 0,1,2,3,4,5 you look it works 6 times. Also a solution, if you change passenger 0 to 1 at initially. I hope, it's clear. Happy coding!
20th Sep 2021, 9:39 AM
mesarthim
mesarthim - avatar