Today's lessons were based around the use of functions, adding parameters and using the arguments. Starting with a simple add in a couple of parameters that log to console messages.
# use_parameter.py
def say_hi_to(name, location):
print(f'Hi there {name}')
print(f' I hear you are from {location}')
say_hi_to('John', 'England')
say_hi_to('Paul', 'Wales')
say_hi_to('George', 'Scotland')
say_hi_to(location='Glasgow', name='Jimmy')
Following onto a bit of calculation of arguments within a function.
# area_calculator.py
'''
The code is to determine the number of tins of paint required to
cover a specific wall size.
Constants:
The paint tin as a fixed amount of coverage coverage
'''
from math import ceil
def coverage_of_wall(height, width):
one_tin_coverage = 5 # metres square
number_of_tins = (height * width)/one_tin_coverage
tins = ceil(number_of_tins)
# Output
print(f'For a wall of height {height}mtr and width of {width}mtr.')
if tins >1:
print(f'You need {tins} tins of paint for the job. \n')
else:
print(f'You need {tins} tin of paint for the job. \n')
coverage_of_wall(5,5)
coverage_of_wall(5,4)
coverage_of_wall(4,3)
coverage_of_wall(1,2)
Nice simple start to the lessons, going over the basics of getting parameters into a function and working on the arguments. Next up was adding some of the previous lessons to build up the skills.
Prime Number
The next task was to build a prime number checker, this is a process I already had right in my head.
Is the number a prime number?
I just read that the excerise was to write a prime number checker.
Then got the head down to work on it without listening to the lesson.
Got it! I wrote the code with an user input to test, then converted it into a function that accepts a parameter check_number.
Finally, as an addition to the lesson, I thought I would build in a little more from the previous lessons with adding in a random number list generator, and iterate over that list.
from os import system
from random import randint
def main_function():
system("cls")
# Generate a list of 10 integers between 1 - 499
random_list = [randint(1, 500) for i in range(10)]
# Check each value in the list
for i in random_list:
prime_checker(i)
def prime_checker(check_number):
print("***__Prime Number Checker__***")
# check_number = int(input('Type in your number \n'))
for i in range(2, check_number - 1):
if check_number % i == 0:
return print(f"Nope \n {check_number} is not prime \n")
return print(f"The number {check_number} is a Prime Number \n")
if __name__ == "__main__":
main_function()
As you will see in the code, the generator is in a separate function that calls the checker function. I thought that was a nice way to add in this days lessons to the final code. A lot nicer than just calling the checker function with individual integer parameters.
The major task was to write up Caesar's Cipher. This is something I done in the past. Shifting the alphabet along by a set number so the letter 'a' was encoded to another letter in the alphabet etc.
I follow through the lessons, but apart from adding in a negated while loop, I didn't think much of it work through again.
Here is a snippet of the code.
def cypher(start_text, off_set, cypher_direction):
end_text = ""
if cypher_direction == "decode":
off_set *= -1
for i in start_text:
if i in alphabet:
position = alphabet.index(i)
new_position = position + off_set
end_text += alphabet[new_position]
else:
end_text += i
print(f"Here's the {cypher_direction}d result: {end_text}")