to check whether x is True or False:
Copybool("")
> False
bool("x")
> True
for details on the semantics of is and == see this question
to check whether x is True or False:
Copybool("")
> False
bool("x")
> True
for details on the semantics of is and == see this question
Am I supposed to conclude that x is neither True nor False?
That's right. x is neither True nor False, it is "". The differences start with the type:
Copy>>> print(type(""), type("x"), type(True), type(False))
builtins.str, builtins.str, builtins.bool, builtins.bool
Python is a highly object oriented language. Hence, strings are objects. The nice thing with python is that they can have a boolean representation for if x: print("yes"), e. g.. For strings this representation is len(x)!=0.
Videos
This code is meant to count all the words that have the expression "di" but with the text "imagina." the final answer is 1.
texto = 'imagina.'
cl = 0
flag_di = False
answer = 0
previous = ''
for car in texto:
if car != ' ' and car != '.':
cl += 1
if car in 'iI' and previous in 'dD':
flag_di = True
previous = car
else:
if car == ' ' or car == '.':
if flag_di:
answer += 1
cl = 0
flag_di = False
previous = ''
print(answer)I'm trying to constantly check against any of those values but I don't want to keep repeating myself in code.
if variable is None or variable == "": do stuff
What are my options? Can I create somehow a class and check against that class?
if variable is MyNewClass: do stuff
How would I write such a class?
Thanks!
Empty strings are "falsy" (python 2 or python 3 reference), which means they are considered false in a Boolean context, so you can just do this:
if not myString:
This is the preferred way if you know that your variable is a string. If your variable could also be some other type then you should use:
if myString == "":
See the documentation on Truth Value Testing for other values that are false in Boolean contexts.
From PEP 8, in the “Programming Recommendations” section:
For sequences, (strings, lists, tuples), use the fact that empty sequences are false.
So you should use:
if not some_string:
or:
if some_string:
Just to clarify, sequences are evaluated to False or True in a Boolean context if they are empty or not. They are not equal to False or True.