The modulo operator provides a useful way of checking whether something a multiple of something else - it essentially returns the remainder after as many steps of division as possible:
modulu_example.py
test1 =12%2# this will equal 0 as 2 divides 12 exactlytest2 =13%2# this will return 1 as 13 = (6 * 2) + 1# We can use this to check if something is even or odd!number =10if (number %2) ==0:print("Number divisible by 2. That means it's even!")else:print("How odd ¯\_(ツ)_/¯")
More Logic with and & or
The logical and & or operators allow us to increase the complexity of logic in our programmes, without needing to a bunch of nested (one inside another) if statements. These can be used at declaration, or in our logical conditions, just as with the previously encountered operands (==, != etc.)
and is true when both following statements are true
or is true when at least one of the following statements is true
and_or_example.py
# Use in declarationtry_and1 = (7>6) and ("hi"!="bye") # will be truetry_and2 = (6>7) and ("hi"!="bye") # will be falsetry_or = (6<7) or ("hi"!="bye") # will be true!# Use in comparisonis_scary =Falsehas_scales =Trueif has_scales and is_scary:print("GODZILLA!!! \0/ \0/ \0/")elif has_scales or is_scary:# one or the other, as "and" wasn't trueprint("Get it away from me!")else:print("How boring...")
Sub-component checking with in
in allows us to check if a substring or item is contained in a specified object. This will be useful when we discuss lists shortly, but we've already seen how this can be used:
in_examply.py
# For stringsif ("a"in"alex") or ("b"in"bobby"):print("I can spell!")else:print("Weird alphabet..")
String manipulation &
Here we see an example of how we can nest control statements, and use the .lower() function to ensure our if statements are not sensitive to the capitalization of user input.
string_manip.py
fav_num =17my_string ="SoMeMeSS"my_string = my_string.lower()# Make it lowercase for easier comparisonif"mess"in my_string:# use *in* print("My life")elif my_string =="doggo":# else-ifif fav_num ==17:# so-called "nested" if statementprint("Doggos are awesome, and so is the number 17")else:print("I'm running out of ideas :<")
Putting it all together
advanced_input_example.py
""" Robust and more Complicated example Taking user input and check against different kinds of cases"""# Get the user's nameuser_name =input("What's your name? ")user_name = user_name.lower()# Make the string lowercase - overwrite# Do some conditional logicif user_name in ['alex','luke']:# Can check multiple cases in oneprint("Your Majesty...")elif ("z"in user_name) or ("q"in user_name):# Check multiple substring casesprint("Shame your name isn't allowed in scrabble!")else:print("Heyo")