### Archive

Posts Tagged ‘learn’

## Python: Tower of Hanoi

Learning : Python
Subject: Write a Function to Solve Tower of Hanoi Problem

Intoduction: Tower Of Hanoi is Puzzle Game that has three Vertical Sticks/Pegs Named A, B, C (3 Towers) and we have n number of disks different in diameter soted on top of each other (Large to Small) in Tower A. The Gall is to move all the disks from (A) to (C).

``` # Tower of Hanoi Puzzel

"""
Project Name: Tower of Hanoi

Date: 13.6.2021

d  : Number of Desk
fs : From Stick
ts : To Stick
bs : Buffer Stick
"""

import os

def hanoi_t(d, fs, bs, ts):
if d ==1 :
print("\n   Move Desk 1 From {} To {}".format(fs,ts))
return

else:
hanoi_t(d-1,fs,ts,bs)
print("   Move Desk {} From {} To {}".format(d,fs,ts))

hanoi_t(d-1,bs,fs,ts)
print("   Move Desk {} From {} To {}".format(d,fs,ts))

os.system('clear')
print('\n\n   This is Tower Of Hanoi Project')
print('   We are Solving a Three Desk Tower Named 1, 2 and 3, with Three Sticks Named A, B and C ')
print('\n   Start Solving ...')
hanoi_t(3,'A','B','C')
```

..:: Have Fun with Coding ::.. 🙂 Follow me on Twitter..

## Python: Coffee Consumption – P7

Learning : Python, SQlite3, Dataset, Pandas,
Subject: Create Coffee Consumption Application.

[NOTE: To keep the code as simple as we can, We WILL NOT ADD any user input Varevecations. Assuming that our user will Enter the right inputs.]

In this part (Part-7) of Coffee Consumption App, we will write a Function to display all Records in the data-base in a table on the screen.

Beginning with formating the table header, we will have the following columns: record Id, Date_time, Coffee_name, Coffee_type, coffee_size, customer_Gender and Rank. Here is the code..

print(‘ ‘*6,’ID’,’ ‘*5,’ Date & Time’,’ ‘*3,’ Coffee Name’,’ ‘*4,’Type’,’ ‘*9,’Size’,’ ‘*4,’ Gender’,’ ‘*4,’ Rank’)
print(‘ ‘*4,’-‘*90)

Next we will execute an SQLITE command to fetch all the records. Here is the commands..
c.execute (f”select * from coffee_con where c_id > 1 “)
dataset = c.fetchall()

Also we will using the lookup tables to get the names using the id keys in the coffee_name, coffee_type, coffee_size columns.

Now, Using the for loop to access all the records and print them on the screen. Here is apart of the code ..

print(‘ ‘*6,'{}’.format(data_id),end=””)
print(‘ ‘*(10 – 5),'{}’.format(data_date),end=””)
print(‘ ‘*(21 – 16),'{}’.format(data_name),end=””)
print(‘ ‘*(14 – len(data_name)),'{}’.format(data_type),end=””)
print(‘ ‘*(13 – len(data_type)),'{}’.format(data_size),end=””)
print(‘ ‘*(13 – len(data_size)),'{}’.format(data_sex),end=””)
print(‘ ‘*(12 – 1),'{}’.format(data_rank))

Here is a screen shot of the code..

What’s Coming: In Part-8 we will write the Function to Edit the records on the Main Data-Base.

..:: Have Fun with Coding ::.. 🙂

 Part 1 Part 2 Part 3 Part 4 Part 5 Part 6 Part 7 Part – Part – Part – Follow me on Twitter..

## Python: Random Pixel Color

Learning : Python, Math
Subject: Random Coloring Pixels

[NOTE: To keep the code as simple as we can, We WILL NOT ADD any user input Varevecations. Assuming that our user will Enter the right inputs.]

Last week I start reading and studying about “Image Processing”, in some point I was reading about converting an image to Array of numbers, and re-converting that Array back to an Image, at that moment popped into my mind what if we just generate an Array with random numbers and then show it as an Image.

In this article we will write a first simple Function to generate a random numbers presenting the three main color Red, Blue and Green; then storing the numbers in an Array then using matplotlib library to display the Image.

Our Tools: In this post we will use the following:
1. Jupyter-NoteBook.
2. numpy.
3. random.
4. matplotlib.
5. PIL or Pillow.

Coding I am user Jupyter NoteBook on samsung Tab S4. First we will do all imports we need as:
from PIL import Image
import numpy as np, matplotlib.pyplot as plt
import random
%matplotlib inline

Now, we will write a Function called rand_color, we will run a nested for loop to generate the Row and Column (width and height) and in/for each row we will generate thee numbers of colors range(0,255) as one pixel and storing them in an array, then we display the Array using:
Image.fromarray and plt.imshow(). Here is the Code ..

The above is just 25×25 image with random color pixels, this is the first function using default random, in coming posts we will use some Math variables [such: log,sin], constants [such: pi, golden ratio] to see if we can get a pattern from random.

..:: Have Fun with Coding ::.. 🙂 Follow me on Twitter..

## Python Sorting Algorithm – Heap Sorting -P5

Learning : Python, Math, Algorithm
Subject: Sorting Algorithm, Heap Sort P5

[NOTE: To keep the code as simple as we can, We WILL NOT ADD any user input Varevecations. Assuming that our user will Enter the right inputs.]

In Last Parts (2, 3 and 4) we wort the Following Functions:

• Entering/Creating the Array.
• Print-Out or to Display the Array.
• Check If Array in Max-Heap.
• Convert Array to Max-Heap.
• Delete a Node from a Max-Heap.

In this last part-5 we will write the last main Function to aplay the Heap Sorting Algorithm.

Scope of Work: Deleting a Node from a Max-Heap Array is the main function in sorting an Array using Max-Heap Algorithm, the Deleting is always from the Root Node, So if we delete the most top Node [Root] (and store it in index in a temp_array) then we move the Last Node to it’s position and by doing that we miss the Max-Heap state of the Array, so we convert the array to a Max-heap, then we Delete the Root again until we delete all the elements in the Array.. Here the Algorithm:

Assuming we have a Max-Heap Array:
1. Delete the Root Element, and Store it in index in Temp_array.
2. Move the Last Element in the Array to index.
3. If the Array not in Max-Heap then Convert it to a Max-Heap.
4. Repeat Steps 1 to 3 Until length of Array is 0.

In our list of Functions up, we have the three Functions we Need to complete/apply a Max-Heap Sorting:
We Delete a Node using def delete_node(arr,inside):
then in a while loop we call both
def check_if_max_heap (arr,inside): and
def convert_to_max_heap (arr,inside): so let’s see the code..

We finish Max-Heap Sorting Algorithm, ..

..:: Have Fun with Coding ::.. 🙂 Follow me on Twitter..

## Python Sorting Algorithm – Heap Sorting -P3

Learning : Python, Math, Algorithm
Subject: Sorting Algorithm, Heap Sort P2

[NOTE: To keep the code as simple as we can, We WILL NOT ADD any user input Varevecations. Assuming that our user will Enter the right inputs.]

First let’s just remember that in Part-1 we wort the Following Functions:

• Entering/Creating the Array.
• Print-Out or to Display the Array.

In this Part-3 we will cover another Two important Functions that we need to talk about in our mission to understand the Heap Sorting Algorithm.

First Function
Check If The Array is in Max Heap: After the user Giveing/Entering the Array [Selecting Option 1 in the Menu] we need to Examen/Check if it is in a Max-Heap, to do so we will call the Function def check_if_max_heap(arr, inside): the Function will take Two arguments:
arr : The Array.
inside: Boolean Flag showing are we calling the Function from within another Function or Not.

Scope of Work: We will check and compare each Node [starting from last node in the leaves] with it’s Parent using this formula parent_index = ((child_index-1)//2) to get the parent index, then comparing the Values of the Child and Parent, If the Child is GRATER Than his Parent we SWAP them. Then going to the Next Child and so-on until the Root-Node. .. Here is the Code ..

for each print statement I am using this code if not inside : then print ..
Example: if not inside : print(‘\n The Array is a Max-Heap Array.’)
So if the inside = True then the print code will not work, that’s mean we are calling the Function from inside another function and we just want the return value, the return here will be a boolean True/False as is_max [if the array is in Max-Heap].

Second Function
Convert to Max-Heap: In this Function we will convert a given Array to a Max-Heap Array. The way this Function is working is by checking/Examining all the Childs starting from the Leaves, and if any Child is Grater than his Parent we do a SWAP. After we Finish, we will call the Function def check_if_max_heap(arr, inside): to check if the Array is in Max-Heap, If NOT we will call the convert Function and so-on until we get the is_max = True from the def check_if_max_heap(arr, inside):. Both Functions def check_if_max_heap(arr, inside): and def convert_to_max_heap (arr,inside): will be run in a while loop until def check_if_max_heap(arr, inside): will return True. .. Here is the code for def convert_to_max_heap (arr,inside):

And here is the while loop to keep Examining the Array until fully converted to a Max-Heap Array.

``` # While loop in Option 3 from the Main-Menu, In the main body code..

while not is_max:
arr = convert_to_max_heap (arr,True)
is_max = check_if_max_heap (arr,True)

```

We will stop here in this part. In Part-4 we will Add new Node to the Array, and Delete a Node from the Array.

..:: Have Fun with Coding ::.. 🙂 Follow me on Twitter..

## Flowers in my lens..6

Another beautiful flower in taken by Galaxy Note 9. Setup on a table with a coffee Mug. Follow me on Twitter @h_ta3kees Categories: Art, Galaxy Note 9, Learning

## Another sketch challenge: The House

This week sketch challenge @1hour1sketch is to Draw a Red House, so here is my sketch using pencil, black Pen and watercolour. More Sketches on my Sketch page .. also follow me on Twitter @h_ta3kees ## Python: Data Visualization Part-1

January 6, 2021 1 comment

Learning : python, pygal, Data Visualization, Bar Chart
Subject: Data visualization using pygal library

pygal is a Data Visualization library in python to help us showing our Data as a graph. In coming several posts we will discover and learn how to use the pygal library in simple and easy configuration and style.

First we need to install pygal packeg, to do so write this:
pip install pygal

Now we need some Data to show, in this leson I am using aGalaxy Tab S4, so all the codes will be tested and applyed on trinket.io website [trinket.io alow us to use pygal package online so we don’t need to install it on our divice]

Type of Chart:
pygal has several types of charts that we can use, here we will list them all then in coming posts will use each one with simple data. So what we have:
Line, Bar, Histogram, XY,
Funnel, SolidGauge, Gauge, Pyramid,
Treemap, Maps

Some of those charts has a sub-types such as in Bar char we have: Basic, Stacked and Horizontal. Also for each chart we can add a title and labels and we can use some styles.

So let’s start ..
First we will go for the Bar chart, and we have three sub-types as Basic, Stacked and Horizontal.

First chart: Bar chart:
In this part we will demonstrate the Bar Chart, it has three sub-types as Basic, Stacked and Horizontal.

We assume that our data is the Males and Female ages on first marage, the data will be as dictionary (later we will see how to customize each bar)

``` # Basic Bar Chart using pygal

import pygal
bar_chart = pygal.Bar() # To create a bar graph object

bar_chart.title = "Males and Females First Marage Age"
bar_chart.x_labels=(range(1,6))

bar_chart.render()
```

Another sub-type in Bar chart is Horizontal-Bar, it is semelar to the Basic but as if fliped 90 degree. Here is the code ..

``` # Horizontal Bar Chart using pygal

import pygal

# HorizontalBar()
HBar = pygal.HorizontalBar()

HBar.title = "Males and Females First Marage Age"

HBar.x_labels=(range(1,6))

HBar.render()
```

 Sample code for Horizontal Bar chart Last sub-type in Bar chart is Stacked Bar were all data of each element will be in one bar. Here is the code and example..

``` # Stacked Bar Chart using pygal

import pygal
# StackedBar()
stackedbar = pygal.StackedBar()
stackedbar.x_labels=(range(1,0))
stackedbar.title = "Males and Females First Marage Age"

stackedbar.render()
```

If we say we have another data-set as “age in First-Divorces” and we want to add this set to the Stacked Bar chart, then we first will create the data-set as:
and we will arrange the code line to be at top,middle or bottom of the bar. Here is the code..

 Sample code for stacke Bar chart with Divorce data Next we will talk about Line chart.

:: Data Visualization using pygal ::

 Part-1Bar-Chart Part-2 Part-3 Part-4 Follow me on Twitter..

## To The Freedom

Another sketche I woke on with watercolor. ## Python: Shares Speculation System – Part 4

Learning : Python, DataBase, SQL, SQlite3
Subject: Plan, Design and Build a Shares Speculation System

Project Card:
Project Name: Shares Speculation System
By: Ali
Date: 2.7.2020
Version: V01-2.7.2020

Last time we worked on Budgets Managment for our system, now before we start Buying and Selling shares we need to create list of shares name so we can select from it, we have a table called shares_name this Table have the following fields :
s_id: as a PRIMARY KEY.
full_name: To hold the full name of the share.
abb_name: To hold the Abbreviation of a share name.
The Share Managment section will have four main Functions to Add, Edit, Delete and Show shares. .. Let’s start with it’s Main Menu ..

First Function we will work on will be to Add New Share to the system, we will call it def add_share(): , we will ask the user to input the Share Full Name and its Abbreviation. With Abbreviation we will apply the .upper() function to convert the user input to Upper-case, and for the Full Name we will will apply this code [“ “.join([word.capitalize() for word in user-input] to upper case each first character of the Name. The we will check if the Share Name exist in the DataBase If not we will add it.

``` # Add New Share

os.system('clear')
print('\n   ====== Add New Share ======\n\n')
while True :

abb_name = input("   Enter the Abbreviation Name of the Share.. > ").upper()
full_name = " ".join([word.capitalize() for word in input('     Enter the Full Name of the Share.. > ').split(" ")])

c.execute ("select * from shares_name where full_name ='{}' or abb_name = '{}'".format(full_name, abb_name))
share_exist = c.fetchone ()
if share_exist > 0 :
print('\n   It seams that the Share Exist in the Database, Name or Abbreviation CAN NOT be Duplicated.')
print('   Try another Name. ')
else :
c.execute ("INSERT INTO shares_name (full_name , abb_name)  VALUES(:full_name , :abb_name)",{"full_name":full_name, "abb_name":abb_name})
db_conn.commit()

if input ('\n   Do you want to Enter another Share Name?.  [Y,N]. >  ')  not in ['Y','y']:
input ('\n    .... Press any key to  Exit.  ')
return
```

After adding shares we want to see them and to make sure if every things are fine, so we will write the show_share function, and it will take one argument as inside with default value = ‘Yes’, if we call the function from inside another function the value will be Yes, otherwise it will be ‘No’. Here is the code ..

Next is Editing Share Name, in this function we will call the show_share (‘Yes’) so the user will select the ID of the Share Name to be Edit, then with each attribute we will ask the user ether to Enter the new Edit of the attribute or to press Enter to keep the exist variable. .. Here is a copy of the code ..

Last Function in this Artical is Delete def delete_share() : again we will call the Shoe function to display all the Shares Name on the screen and let the user to select the one to be Deleted by Entering it’s ID.

``` # Delete Function.
def delete_share() :
os.system('clear')
print('\n   ====== Delete a Share  ======\n\n')

print('   Here is a list of Shares we have in the System .. \n')
show_share('Yes')

del_share = input('\n\n   Enter the ID for the Share Name you want to Delete. [Q to Exit] >  ')

if del_share in ['q', 'Q'] :
input ('\n\n    .... Press any key to  Exit.')
return
elif del_share.isnumeric() :
if (input ('   Are you SURE you want to DELETE Share ID {} ? [Y,N] >  '.format(del_share))) in ['y','Y'] :
c.execute ("delete from shares_name where s_id ={}".format(int(del_share)))
db_conn.commit()
input ('\n    ....One Record DELETED. Press any key to  Exit.')
return
else :
input ('\n    ....Share will NOT be Deleted. Press any key to  Exit.')
return
else :
input ('\n    ....Invalid Inpout. Press any key to  Exit.')
return
```

Now we can create or Enter a Budget and Enter the Shares Name we have in our Stock Market and we are ready to write the functions to make the transactions.

Coming Up: In Next part we will write the Function to submit/Save Buying and Selling Transactions to our system.

[NOTES]
1. Part-1 has no code file.
2. We are applying some basic Validations on some part of the code, and assuming that the user will not enter a messy data.

:: Shares Speculation System ::

 Part 1 Part 2 Part 3 Part 4 Part5 Follow me on Twitter..