Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialAlbert Lee
Courses Plus Student 1,372 Pointswhy when I use while loop , the variable in it can't be 0?
start=10 while start: print(start) start-=1
I know only start is true, than the loop will continue, but why when the start=0 the loop will stop? I think even start =0 it's true
why it's false ?
2 Answers
andren
28,558 PointsWhen you give Python a Non-Boolean (string, int, etc) and it tries to convert it to a Boolean (True
or False
) it does so by checking if the value is on a list of values it considers to be a "Falsey" value. If that is the case it converts it to False
, if the value is not on that list then it is treated as "Truethy" by default and converted to True
.
Here is the list of values that Python considers "Falsey":
- None
- False
- Zero of any numeric type, for example, 0, 0L, 0.0, 0j.
- Any empty sequence, for example, '', (), [].
- Any empty mapping, for example, {}.
- Instances of user-defined classes, if the class defines a nonzero() or len() method, when that method returns the integer zero or bool value False.
So When start
is any number other than 0 it is treated as True
since that is not found on the above list. Once it becomes 0 it is considers False
since 0 is on the above list.
Josh Bennett
15,258 PointsBecause when the var decrements to 0
, while = 0
and if while = 0
it is falsey.
Albert Lee
Courses Plus Student 1,372 PointsI known ,but the video didn't express this concept , I still can't understand =0 is falsely
Although I know it might has a error when 1/x