SlideShare a Scribd company logo
1 of 77
Download to read offline
1
WELL-GROUNDED
PYTHON CODING
Worajedt Sitthidumrong
Class #1 - Dec 21-22, 2019
www.qython.io
Copyrights 2019 by Worajedt Sitthidumrong. For your Personal Uses Only.
2
BASIC
https://learnxinyminutes.com/docs/
python3/ (ภาษาไทยกำลังมาในไม่ช้า)
Pareto Principle
80:20
3
EX01 DATA TYPES & STATEMENT
Data types
•Basic [int, float, boolean, string, char]
•Complex [set, tuple, list, dict]
•type()
Coding Language
•Comment
•Assignment
•Expression
•Blocks (if, loop)
4
EX01 DATA TYPES & STATEMENT (CONT.)
Equality
•Is Operator
•Assigned to
•==
•!=
Caution!
•Variable and naming
•Indents
•Common Errors
5
EX02 VIRTUAL ENVIRONMENT
Why you should use ‘virtual environment’?
•What is venv
•How to config and use venv in PyCharm
•How many of them?
•virtualenv
•conda
•pipenv
6
EX03 PACKAGE INSTALLATION
What is ‘pip’
•pip search ……
•pip install ……
•pip freeze > requirements.txt
•pip install requirements.txt
7
MATH
Very primitive operators that you
must know how to use them.
+ - * / % // **
8
EX01 MATH CALC 1
Write a program that calculate ‘Area of Square, Rectangle, Triangle’
•Use this formulas [ w * w, w * h, 1/2 * b * h ]
•Note about integer or float calculation.
Write a program that calculate ‘VAT’
•Use this calculation [ taxed_price = price + ( 7% of price) ]
Rewrite them again with ‘input()’
•Rewrite all programs above with user’s input for [ w, h, b, price ]
9
EX02 MATH CALC 2 DIVISION
Write a program ‘Does it Odd?’
•Get one user input and show that it is an odd number or not
•Note modulus (%) may be helpful
Write a program ‘FizzBuzz’
•Get one user input and consider if it can be divided by 3 or
5 or both without remainder.
10
EX03 MATH CALC 3 PARENTHESIS, ORDER
Consider this expressions
•print( 100-2/3^5 )
•print( (100-2)/3^5 )
•print( 100-(2/3)^5 )
•print( 100-2/(3^5) )
What make them different?
11
EX04 MATH CALC 4 ‘MATH MODULE’
Try this ‘math’ module by yourself
•math.pi
•math.pow()
•math.random()
Can you explain ‘random()’
12
STRING
What you mostly use for human
communication and presentation
String in many senses; list, chars
and know how to transform them
13
EX01 ASCII, UNICODE • CHAR, STRING
Do you know ‘ASCII’ or ‘Unicode’ Character Code?
•What’s saved in computer when your text has ‘ABCD’ inside?
•Note try to find which text encoding inside your PyCharm files.
Find out more about ‘ASCII’ and ‘Unicode’ tables
•Non-printable characters. [ n, r, t ]
‘Char’ acter and ‘String’
•String made from characters.
14
EX02 STRING OPERATOR
What’s possible to calculate with ‘string’?
•‘concatenate’ or ‘plus’
•‘in’ & ‘not’
•‘multiply’ ? Really?
•len()
•upcase(), lowcase()
‘slice’ is BIGGGGGGGG
•REMEMBER THIS!! [ string[start:stop:step] ]string[start:stop:step]
‘slice’ is BIGGGGGGGG
15
EX03 STRING FORMAT
It’s better to use .format() than multiple plus operators
•‘The {} brown fox jumped over the lazy dog’.format(‘quick’)
•‘Only {0} lived for others is {0} {1}’.format(‘a life’,’worthwhile’}
•# - Albert Einstein
•‘Hi {name}, an announcement has been made from {teacher}, instructor
of {course} and 2 more courses.’
.format(
name=‘Worajedt’,
teacher=‘Holczer’,
course=‘Advanced Algorithms in Java, Data Structures in Java’
)
16
EX04 STRING FORMAT USE CASE
•Can you create a program to print this medication label?
•Note : Use keywords to be placeholders instead of numeric
index
17
SYSTEM THEORY
Do you ever heard of..
Input-Process-Output or..
Garbage in, garbage out?
Learn more
Learn more
18
BASIC OF ‘SYSTEM THEORY’
Input Output
Process Feedback
19
EX01 GRADING FUNCTION
Write a program that return grade from input score
•Grades are :
• Grade Score Range
A >= 80
B 70 - 79
C 60 - 69
D 50 = 59
F < 50
20
CONDITION
When we have information,
it let us ‘make decision’.
If-else, if-elif-else and
boolean algebra come in.
21
EX01 GRADING REVISIT
Enhance your grading system again with if-elif-else
•Is it a number ?
•Is it within range 0 - 100 ?
•Make your code readable
•Wrap main idea within
•if __name__ == ‘__main__’:
• xxxxx
• xxxxx
22
EX02 FIZZBUZZ APP REVISIT
Enhance your FizzBuzz again with if-elif-else
•Is it a number ?
•Is it within range 0 - 100 ?
•Wrap the main logic within check_fizzbuxz()
•Make your code readable
•Wrap main idea within
•if __name__ == ‘__main__’:
• xxxxx
• xxxxx
23
Information can hold in a variable. But a variable can
hold more than one information. Ordered or
Unordered.
Set, Tuple, List and Dictionary.
All of these come with different kind of
parenthesizes.
COMPLEX DATATYPES
24
EX01 CREATE LIST VS TUPLELIST
What’s the different between ‘tuple’ and ‘list’ ?
•Tuple is Read Only & faster
•Both are ‘array’
•Both are ‘ordered list’
•Both are ‘zero-based index’
tp = (1,5,7,9) # create a tuple
li = [1,5,7,9] # create a list
25
EX02 MODIFY LIST
List can be modified, so these are ways you can do with a list.
•Find size of list
•Pull data from each list
•Add more member(element)
•Remove member (one by one)
•Reverse all members
•Count a selected member
•Find index(position) of a member
•Find if list has this member
LIST
26
EX03 OPERATIONS
We can use some operations, check it out.
•Combine lists ( and tuple! )
•Unpack members to variables
LIST
27
EX04 SLICE
List has one thing you must practice, slicing the list
LIST
list[start:stop:step]
0 1 2 3 4 5 6 7 8
B U T T E R F L Y
-9 -8 -7 -6 -5 -4 -3 -2 -1
28
EX05 LIST COMPREHENSION
List Comprehension helps you define members with condition(s)
•Create a list consists of members in a condition
•You can use condition to create members
•And map() object to help you modified members
•Also, you can use this comprehension with ‘tuple’
LIST
29
EX06 LIST OF LISTS (2D ARRAY)
Just a simple rules, list can have any types of its member. Even list.
•Try to create a simple data made from list of lists
•How can we replace the red location?
LIST
two_d_li = [
[1,3,5,7],
[2,4,6,8],
[5,0,5,0]
]
30
EX01 CREATE DICT
Unordered list of data that comes with pair of {key:value}
•They are paired { “key”: value }
•No ordered
•Access by ‘key’
•Can get a list of keys and a list of values
DICTIONARY
31
EX02 MODIFY DICT
Dictionary can do mostly list can
•You can find if the key exists
•And avoid error with .get()
•Update value and append value
DICTIONARY
32
EX01 COMMON STRUCTURE
The most important and common structure of ‘database’
•1 Root key (option)
•Array (list) at root level
•Consists of dictionary (same structure) as the list members
Database query result, JSON API result are the most common format like this.
LIST OF DICTIONARY
33
EX02 CREATE A JSON DATA
Learn how to create a JSON data
•What’s JSON?
•Try to create a JSON data from your experience
LIST OF DICTIONARY
34
FOR LOOP
Bunch of information may require the
same set of instructions on them.
For-loops have many ways to deal
with each kind of data types.
35
EX01 FOR LOOP WITH COUNTER
‘for in’ LIST
If we deal with ‘ordered list’ , we can use ‘for in’
•for animal in ["dog", "cat", "mouse"]:
•for i in range(4):
•list = ["dog", "cat", "mouse"]
•for i, value in enumerate(list):
• print(i, value)
•x = 0
•while x < 4:
• print(x)
• x += 1 # or x = x+1
36
EX02 FOR + IF ELSE FIZZBUZZ REVISIT
‘for in’ LIST
Can you modify your FizzBuzz?
•Create a list of number, may be from range()
•Then apply fizzbuzz() for every items
•Print the output
37
EX01 FOOTBALL PLAYERS
‘for each’ DICT
Actually, there is NO ‘for each’ in Python.
•a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4}
•new_dict = {}
•for key, value in a_dict.items():
• new_dict[value] = key
•print(new_dict)
•Now create a dict of football players and iterates over them.
38
EX02 FOR + IF ELSE
‘for each’ DICT
You can apply condition to each loop
From the dict of football players, now iterates over them,
only who are older than 30 yrs
39
EX01-10 : CONTINUOUS EXERCISES
RUNNERS
Use the exercises 01-10 about runners,
complete them all!
40
PYCHARM IDE
Do you really know how to use
PyCharm IDE?
I bet you’re not. Not even close.
41
CODING THE RIGHT WAY
Design how your program should work.
•Start from main()
•Write something readable and not too complex
•Create pseudo function and variable then refactor to real one
•Alt+Enter | Opt+Return is god send!
•Migrate each of them to the right files/modules
•Alt+Enter | Opt+Return is god send!
42
TEXT EDITING
To learn a good text editor, learn about this
•Cursor movements
•Multi-Cursor
•Column Selection Mode
•Find and Replace
•Regular-Expression ( an alien language that save your @$$)
43
REFACTORING
Refactoring features in PyCharm you should know
•(Watch the demo in class)
44
RUNNING & DEBUGGING
In PyCharm you can set many running configurations.
•(Watch the demo in class)
PyCharm debug features is much more readable, let’s do it!
•(Watch the demo in class)
45
Do you know when your code works?
How you measure it?
Are you sure your measure tool working correctly?
If you’re sure, how long it can be working properly?
TDD techniques and testing frameworks help you sleep
better.
TEST DRIVEN DEVELOPMENT

(TDD)
46
WHAT IS TDD?
• Do you know when your code works?
• How you measure it?
• Are you sure your measure tool working
correctly?
• If you’re sure, how long it can be working
properly?
47
48
‘pytest’
‘pytest’ is one of the best testing library in Python
• Almost no configuration
• Fast running
• Many extension, even BDD (Behavior-Driven Development)
• Integrate with PyCharm (Professional)
Time to demo !
49
EX01 TDD CALCULATOR
EX02 TDD AREA CALC
EX03 TDD VAT CALC
50
WORKSHOP 01 TDD :
FIND A FREE RANGE
51
WORKSHOP 02 TDD :
FIND THE RIGHT EAN13 BARCODE CHECK DIGIT
https://www.gs1.org/services/how-calculate-check-digit-manually
The following table gives an example to illustrate how a GTIN-13 Check Digit is calculated:
52
WORKSHOP 03 TDD :
FIND THE RIGHT PERSONAL ID
ในการตรวจสอบเลขที่บัตรประชาชนนั้นทำได้โดยการใช้ Check Digit โดยใช้ตัวเลขหลัก
สุดท้ายในการตรวจสอบ Algorithm ของวิธีการใช้ Check Digit มีดังนี้
1.ตัวเลขบนบัตรประชาชนจะมีทั้งหมด 13 หลัก นำเลขใน 12 หลักแรก มาคูณกับเลขประจำ
ตำแหน่ง (เลขประจำหลักได้แก่ 13 บวก 1 ลบด้วยตำแหน่งที่) จะได้ตัวเลขประจำตำแหน่ง
ดังนี้
2.หลังจากนั้นเอาผลคูณของทั้ง 12 หลักมารวมกัน แล้วหารเอาเศษด้วย 11
3.เอาเศษที่ได้จากการหารในข้อ 2 มาลบด้วย 11 เท่านี้ก็ได้เลขที่เป็น Check Digit แล้ว (ถ้า
ผลจากข้อ 2 ได้ 10 ให้เอาเลขหลักหน่วยเป็น Check Digit ก็คือ 0 นั่นเอง)
53
WORKSHOP 03 TDD :
FIND THE RIGHT PERSONAL ID (CONT)
ตัวอย่าง 1-2345-67890-12-1
1.นำไปคูณเลขประจำ
ตำแหน่ง : (1*13)+(2*12)+(3*11)+(4*10)+(5*9)+(6*8)+(7*7)+(8*6)+
(9*5)+(0*4)+(1*3)+(2*2) = 352
2.หารเอาเศษด้วย : 11 352%11= 0
3.นำ 11 ตั้งแล้วลบเศษที่ได้จากการหารในข้อ 2 : 11 – 0 = 11 (เอาเลข
หลักหน่วย) ดังนั้น Check Digit คือ 1
4.จะได้ : 1-2345-67890-12-1
54
WORKSHOP 04 TDD :
FIND THE RIGHT ISBN(10)
ถ้าเราเอาหนังสืออะไรก็ได้มาหนึ่งเล่มแล้วเปิดไปที่ barcode (น่าจะอยู่ด้านหลัง) ด้านบนของ barcode จะ
เป็นคำว่า ISBN และตัวเลขหลายหลัก
1.) เอาตัวเลขหลักแรก คูณ 10 ตัวต่อมาคูณ 9 ตัวต่อมาคูณ 8 ไปเรื่อยๆ จนถึงตัวรองสุดท้าย
2.) เอาผลคูณที่ได้ทั้งหมดมาบวกกัน
3.) เอาผลบวกที่ได้ หารด้วย 11 และดูเศษ เศษที่ได้จะกลายเป็นตัวเลขหลักสุดท้าย (ถ้าหารเหลือเศษ 11 ก็
ตอบ 1 เศษ 10 ก็ตอบ 0)
55
FILE
Any of you have never worked with file?
Since you are all have worked with
it. You better know how to work
with it correctly.
None
56
FILE MODES IN PYTHON
FILE
Mode Description
‘r’ This is the default mode. It Opens file for reading.
‘w’
This Mode Opens file for writing. If file does not exist, it creates a new
file. If file exists it truncates the file.
‘x’ Creates a new file. If file already exists, the operation fails.
‘a’
Open file in append mode.
If file does not exist, it creates a new file.
’t’ This is the default mode. It opens in text mode.
‘b’ This opens in binary mode.
‘+’ This will open a file for reading and writing (updating)
57
EX01 OPEN AND READ A FILE
FILE
Python use concept of open and close file like we had in C, Java
• 1) Open the file in Read mode with open()
• 2) We use the mode function in the code to check that the file is
in open mode. If yes, we proceed ahead
• 3) Use f.read() or f.readline() to read file data and store it in
variable content
• 4) print contents
58
EX02 WRITE A FILE CONTENT
FILE
Python use concept of open and close file like we had in C, Java
• 1) Open the file in Write/Append mode with open()
• 2) Create some content and f.write(‘content inside’)
• 3) Use f.close() to close the file (save)
• 4) To Append, process is the same except open() with ‘a+'
59
EX03 READ / WRITE THE MODERN WAY
FILE
Python 3 can use ‘with’ block to read/write file
# Writing to a file
contents = {"aa": 12, "bb": 21}
with open("myfile2.txt", "w+") as file:
file.write(json.dumps(contents)) # writes an object to a file
# Reading from a file
with open('myfile1.txt', "r+") as file:
contents = file.read() # reads a string from a file
print(contents)
# print: {"aa": 12, "bb": 21}
60
CSV FILE
When we process something, data input or
output may be any formats. CSV is one of the
primitive data since the early age of computer.
And it still very important in this Big
Data Era.
61
EX01 READ CSVCSV
Programming language Designed by Appeared Extension
Python Guido van Rossum 1991 .py
Java James Gosling 1995 .java
C++ Bjarne Stroustrup 1983 .cpp
• 1) import csv
• 2) Open the file in ‘rt' mode with open()
• 3) Use csv.reader() to read the file by Row
• 4) Use csv.DictReader() to read each row, column as Dictionary
62
EX02 WRITE CSVCSV
• 1) import csv
• 2) Open the file in Write/Append mode with open()
• 3) Use writer = csv.writer(file, delimiter=',', quotechar='"',
quoting=csv.QUOTE_MINIMAL)
• 4) writer.writerow(['Programming language', 'Designed by', 'Appeared',
'Extension'])
63
DATABASE
While working with CSV is pretty easy. It’s still very basic in
terms of relationship and connection between each other
entities.
Relational Database Management System (RMDB) and
Structured Query Language (SQL) seems like the
backbone of data management system.
“No matter what it takes. Learn it, you must.”
– Master Yoda
64
BASIC OF RELATIONAL DATABASE Definitions
• Database
• Table
• Field (Column)
• Record (Row)
• Primary Key (PK)
• Foreign Key (FK)
• One to Many
• Many to Many
65
SNIPPETS
Learn How To Create Snippets
To Save Your Time
Of programmers don’t
know How to Create
Snippets.
Is the time you may save writing
code/fix spelling/pull your hair
by using Snippets.
90%
30%
66
SQL LANGUAGE WITH SQLITE
import sqlite3
from sqlite3 import Error
def create_connection(db_file):
""" create a database connection to a SQLite database """
conn = None
try:
conn = sqlite3.connect(db_file)
print(sqlite3.version)
except Error as e:
print(e)
finally:
if conn:
conn.close()
67
SQL LANGUAGE WITH SQLITE (CONT)
. . . . .
conn = None
try:
conn = sqlite3.connect(db_file)
print(sqlite3.version)
except Error as e:
print(e)
finally:
if conn:
conn.close()
if __name__ == '__main__':
create_connection(r"C:sqlitedbpythonsqlite.db")
68
EX01 MANIPULATE TABLE
-- tasks table
-- sql_create_tasks_table =
CREATE TABLE IF NOT EXISTS tasks (
id integer PRIMARY KEY,
name text NOT NULL,
priority integer,
project_id integer NOT NULL,
status_id integer NOT NULL,
begin_date text NOT NULL,
end_date text NOT NULL,
FOREIGN KEY (project_id)
REFERENCES projects (id)
);
-- projects table
-- sql_create_projects_table =
CREATE TABLE IF NOT EXISTS projects (
id integer PRIMARY KEY,
name text NOT NULL,
begin_date text,
end_date text
);
69
EX01 MANIPULATE TABLE (CONT)
def create_table(conn, create_table_sql):
""" create a table from the create_table_sql statement
:param conn: Connection object
:param create_table_sql: a CREATE TABLE statement
:return:
"""
try:
c = conn.cursor()
c.execute(create_table_sql)
except Error as e:
print(e)
70
EX01 MANIPULATE TABLE (CONT)
def main():
database = r"C:sqlitedbpythonsqlite.db"
sql_create_projects_table = """ CREATE TABLE IF NOT EXISTS projects (
sql_create_tasks_table = """CREATE TABLE IF NOT EXISTS tasks (
# create a database connection
conn = create_connection(database)
# create tables
if conn is not None:
# create projects table
create_table(conn, sql_create_projects_table)
# create tasks table
create_table(conn, sql_create_tasks_table)
else:
print("Error! cannot create the database connection.")
71
EX02 SELECT DATA
def select_all_tasks(conn):
"""
Query all rows in the tasks table
:param conn: the Connection object
:return:
"""
cur = conn.cursor()
cur.execute("SELECT * FROM tasks")
rows = cur.fetchall()
for row in rows:
print(row)
72
EX02 SELECT DATA (CONT)
def select_task_by_priority(conn, priority):
"""
Query tasks by priority
:param conn: the Connection object
:param priority:
:return:
"""
cur = conn.cursor()
cur.execute("SELECT * FROM tasks WHERE priority=?", (priority,))
rows = cur.fetchall()
for row in rows:
print(row)
73
EX03 INSERT DATA
def create_task(conn, task):
"""
Create a new task
:param conn:
:param task:
:return:
"""
sql = ''' INSERT INTO tasks(name,priority,status_id,project_id,begin_date,end_date)
VALUES(?,?,?,?,?,?) '''
cur = conn.cursor()
cur.execute(sql, task)
return cur.lastrowid
74
EX03 INSERT DATA (CONT)
def main():
database = r"C:sqlitedbpythonsqlite.db"
# create a database connection
conn = create_connection(database)
with conn:
# create a new project
project = ('Cool App with SQLite & Python', '2015-01-01', '2015-01-30');
project_id = create_project(conn, project)
# tasks
task_1 = ('Analyze the requirements of the app', 1, 1, project_id,
'2015-01-01', '2015-01-02')
task_2 = ('Confirm with user about the top requirements', 1, 1, project_id,
'2015-01-03', '2015-01-05')
# create tasks
create_task(conn, task_1)
create_task(conn, task_2)
75
EX04 UPDATE DATA
def update_task(conn, task):
"""
update priority, begin_date, and end date of a task
:param conn:
:param task:
:return: project id
"""
sql = ''' UPDATE tasks
SET priority = ? ,
begin_date = ? ,
end_date = ?
WHERE id = ?'''
cur = conn.cursor()
cur.execute(sql, task)
conn.commit()
76
EX04 UPDATE DATA (CONT)
def main():
database = r"C:sqlitedbpythonsqlite.db"
# create a database connection
conn = create_connection(database)
with conn:
update_task(conn, (2, '2015-01-04', '2015-01-06', 2))
77
EX05 DELETE DATA
def delete_task(conn, id):
"""
Delete a task by task id
:param conn: Connection to the
SQLite database
:param id: id of the task
:return:
"""
sql = 'DELETE FROM tasks WHERE id=?'
cur = conn.cursor()
cur.execute(sql, (id,))
conn.commit()
def main():
database = r"C:sqlitedbpythonsqlite.db"
# create a database connection
conn = create_connection(database)
with conn:
delete_task(conn, 2);
# delete_all_tasks(conn);

More Related Content

What's hot

SQL Server Select Topics
SQL Server Select TopicsSQL Server Select Topics
SQL Server Select TopicsJay Coskey
 
Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)Pedro Rodrigues
 
Python language data types
Python language data typesPython language data types
Python language data typesHoang Nguyen
 
Round PEG, Round Hole - Parsing Functionally
Round PEG, Round Hole - Parsing FunctionallyRound PEG, Round Hole - Parsing Functionally
Round PEG, Round Hole - Parsing FunctionallySean Cribbs
 
Python Puzzlers - 2016 Edition
Python Puzzlers - 2016 EditionPython Puzzlers - 2016 Edition
Python Puzzlers - 2016 EditionNandan Sawant
 
Python's magic methods
Python's magic methodsPython's magic methods
Python's magic methodsReuven Lerner
 
Class notes(week 4) on arrays and strings
Class notes(week 4) on arrays and stringsClass notes(week 4) on arrays and strings
Class notes(week 4) on arrays and stringsKuntal Bhowmick
 
Beginners python cheat sheet - Basic knowledge
Beginners python cheat sheet - Basic knowledge Beginners python cheat sheet - Basic knowledge
Beginners python cheat sheet - Basic knowledge O T
 
5-minute intro to property-based testing in Python with hypothesis
5-minute intro to property-based testing in Python with hypothesis5-minute intro to property-based testing in Python with hypothesis
5-minute intro to property-based testing in Python with hypothesisFranklin Chen
 
Getting started in Python presentation by Laban K
Getting started in Python presentation by Laban KGetting started in Python presentation by Laban K
Getting started in Python presentation by Laban KGDSCKYAMBOGO
 
Babar: Knowledge Recognition, Extraction and Representation
Babar: Knowledge Recognition, Extraction and RepresentationBabar: Knowledge Recognition, Extraction and Representation
Babar: Knowledge Recognition, Extraction and RepresentationPierre de Lacaze
 
Beyond xUnit example-based testing: property-based testing with ScalaCheck
Beyond xUnit example-based testing: property-based testing with ScalaCheckBeyond xUnit example-based testing: property-based testing with ScalaCheck
Beyond xUnit example-based testing: property-based testing with ScalaCheckFranklin Chen
 
Mementopython3 english
Mementopython3 englishMementopython3 english
Mementopython3 englishssuser442080
 
Declarative Thinking, Declarative Practice
Declarative Thinking, Declarative PracticeDeclarative Thinking, Declarative Practice
Declarative Thinking, Declarative PracticeKevlin Henney
 
Monads and Monoids by Oleksiy Dyagilev
Monads and Monoids by Oleksiy DyagilevMonads and Monoids by Oleksiy Dyagilev
Monads and Monoids by Oleksiy DyagilevJavaDayUA
 
Class notes(week 4) on arrays and strings
Class notes(week 4) on arrays and stringsClass notes(week 4) on arrays and strings
Class notes(week 4) on arrays and stringsKuntal Bhowmick
 

What's hot (20)

SQL Server Select Topics
SQL Server Select TopicsSQL Server Select Topics
SQL Server Select Topics
 
Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)
 
Python language data types
Python language data typesPython language data types
Python language data types
 
Round PEG, Round Hole - Parsing Functionally
Round PEG, Round Hole - Parsing FunctionallyRound PEG, Round Hole - Parsing Functionally
Round PEG, Round Hole - Parsing Functionally
 
Python Puzzlers - 2016 Edition
Python Puzzlers - 2016 EditionPython Puzzlers - 2016 Edition
Python Puzzlers - 2016 Edition
 
Python's magic methods
Python's magic methodsPython's magic methods
Python's magic methods
 
Array
ArrayArray
Array
 
Class notes(week 4) on arrays and strings
Class notes(week 4) on arrays and stringsClass notes(week 4) on arrays and strings
Class notes(week 4) on arrays and strings
 
2016 02 23_biological_databases_part2
2016 02 23_biological_databases_part22016 02 23_biological_databases_part2
2016 02 23_biological_databases_part2
 
Beginners python cheat sheet - Basic knowledge
Beginners python cheat sheet - Basic knowledge Beginners python cheat sheet - Basic knowledge
Beginners python cheat sheet - Basic knowledge
 
5-minute intro to property-based testing in Python with hypothesis
5-minute intro to property-based testing in Python with hypothesis5-minute intro to property-based testing in Python with hypothesis
5-minute intro to property-based testing in Python with hypothesis
 
Getting started in Python presentation by Laban K
Getting started in Python presentation by Laban KGetting started in Python presentation by Laban K
Getting started in Python presentation by Laban K
 
Babar: Knowledge Recognition, Extraction and Representation
Babar: Knowledge Recognition, Extraction and RepresentationBabar: Knowledge Recognition, Extraction and Representation
Babar: Knowledge Recognition, Extraction and Representation
 
Beyond xUnit example-based testing: property-based testing with ScalaCheck
Beyond xUnit example-based testing: property-based testing with ScalaCheckBeyond xUnit example-based testing: property-based testing with ScalaCheck
Beyond xUnit example-based testing: property-based testing with ScalaCheck
 
Mementopython3 english
Mementopython3 englishMementopython3 english
Mementopython3 english
 
Python Cheat Sheet
Python Cheat SheetPython Cheat Sheet
Python Cheat Sheet
 
Declarative Thinking, Declarative Practice
Declarative Thinking, Declarative PracticeDeclarative Thinking, Declarative Practice
Declarative Thinking, Declarative Practice
 
ppt
pptppt
ppt
 
Monads and Monoids by Oleksiy Dyagilev
Monads and Monoids by Oleksiy DyagilevMonads and Monoids by Oleksiy Dyagilev
Monads and Monoids by Oleksiy Dyagilev
 
Class notes(week 4) on arrays and strings
Class notes(week 4) on arrays and stringsClass notes(week 4) on arrays and strings
Class notes(week 4) on arrays and strings
 

Similar to Well Grounded Python Coding - Revision 1 (Day 1 Slides)

An Introduction to Tuple List Dictionary in Python
An Introduction to Tuple List Dictionary in PythonAn Introduction to Tuple List Dictionary in Python
An Introduction to Tuple List Dictionary in Pythonyashar Aliabasi
 
Functional Python Webinar from October 22nd, 2014
Functional Python Webinar from October 22nd, 2014Functional Python Webinar from October 22nd, 2014
Functional Python Webinar from October 22nd, 2014Reuven Lerner
 
Functions, List and String methods
Functions, List and String methodsFunctions, List and String methods
Functions, List and String methodsPranavSB
 
Python.pptx
Python.pptxPython.pptx
Python.pptxAshaS74
 
Demystifying Shapeless
Demystifying Shapeless Demystifying Shapeless
Demystifying Shapeless Jared Roesch
 
Introduction to Python for Plone developers
Introduction to Python for Plone developersIntroduction to Python for Plone developers
Introduction to Python for Plone developersJim Roepcke
 
Exception handling and function in python
Exception handling and function in pythonException handling and function in python
Exception handling and function in pythonTMARAGATHAM
 
Basic Python Programming: Part 01 and Part 02
Basic Python Programming: Part 01 and Part 02Basic Python Programming: Part 01 and Part 02
Basic Python Programming: Part 01 and Part 02Fariz Darari
 
Code Like Pythonista
Code Like PythonistaCode Like Pythonista
Code Like PythonistaChiyoung Song
 
Introduction [1] - Software Testing Techniques (CIS640)
Introduction [1] - Software Testing Techniques (CIS640)Introduction [1] - Software Testing Techniques (CIS640)
Introduction [1] - Software Testing Techniques (CIS640)Venkatesh Prasad Ranganath
 
Basic terminologies & asymptotic notations
Basic terminologies & asymptotic notationsBasic terminologies & asymptotic notations
Basic terminologies & asymptotic notationsRajendran
 
Who go Types in my Systems Programing!
Who go Types in my Systems Programing!Who go Types in my Systems Programing!
Who go Types in my Systems Programing!Jared Roesch
 

Similar to Well Grounded Python Coding - Revision 1 (Day 1 Slides) (20)

An Introduction to Tuple List Dictionary in Python
An Introduction to Tuple List Dictionary in PythonAn Introduction to Tuple List Dictionary in Python
An Introduction to Tuple List Dictionary in Python
 
Functional Python Webinar from October 22nd, 2014
Functional Python Webinar from October 22nd, 2014Functional Python Webinar from October 22nd, 2014
Functional Python Webinar from October 22nd, 2014
 
Python: The Dynamic!
Python: The Dynamic!Python: The Dynamic!
Python: The Dynamic!
 
Python-Basics.pptx
Python-Basics.pptxPython-Basics.pptx
Python-Basics.pptx
 
Functions, List and String methods
Functions, List and String methodsFunctions, List and String methods
Functions, List and String methods
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
 
Demystifying Shapeless
Demystifying Shapeless Demystifying Shapeless
Demystifying Shapeless
 
Introduction to Python for Plone developers
Introduction to Python for Plone developersIntroduction to Python for Plone developers
Introduction to Python for Plone developers
 
Exception handling and function in python
Exception handling and function in pythonException handling and function in python
Exception handling and function in python
 
Basic Python Programming: Part 01 and Part 02
Basic Python Programming: Part 01 and Part 02Basic Python Programming: Part 01 and Part 02
Basic Python Programming: Part 01 and Part 02
 
Perfect Code
Perfect CodePerfect Code
Perfect Code
 
PHP - Introduction to Advanced SQL
PHP - Introduction to Advanced SQLPHP - Introduction to Advanced SQL
PHP - Introduction to Advanced SQL
 
Code Like Pythonista
Code Like PythonistaCode Like Pythonista
Code Like Pythonista
 
Introduction [1] - Software Testing Techniques (CIS640)
Introduction [1] - Software Testing Techniques (CIS640)Introduction [1] - Software Testing Techniques (CIS640)
Introduction [1] - Software Testing Techniques (CIS640)
 
CAP615-Unit1.pptx
CAP615-Unit1.pptxCAP615-Unit1.pptx
CAP615-Unit1.pptx
 
Java introduction
Java introductionJava introduction
Java introduction
 
Basic terminologies & asymptotic notations
Basic terminologies & asymptotic notationsBasic terminologies & asymptotic notations
Basic terminologies & asymptotic notations
 
Who go Types in my Systems Programing!
Who go Types in my Systems Programing!Who go Types in my Systems Programing!
Who go Types in my Systems Programing!
 
Basic use of Python
Basic use of PythonBasic use of Python
Basic use of Python
 
python_class.pptx
python_class.pptxpython_class.pptx
python_class.pptx
 

Recently uploaded

How to Fix XML SyntaxError in Odoo the 17
How to Fix XML SyntaxError in Odoo the 17How to Fix XML SyntaxError in Odoo the 17
How to Fix XML SyntaxError in Odoo the 17Celine George
 
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptxDecoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptxDhatriParmar
 
MS4 level being good citizen -imperative- (1) (1).pdf
MS4 level   being good citizen -imperative- (1) (1).pdfMS4 level   being good citizen -imperative- (1) (1).pdf
MS4 level being good citizen -imperative- (1) (1).pdfMr Bounab Samir
 
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...Association for Project Management
 
Mythology Quiz-4th April 2024, Quiz Club NITW
Mythology Quiz-4th April 2024, Quiz Club NITWMythology Quiz-4th April 2024, Quiz Club NITW
Mythology Quiz-4th April 2024, Quiz Club NITWQuiz Club NITW
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQ-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQuiz Club NITW
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management SystemChristalin Nelson
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Seán Kennedy
 
Active Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfActive Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfPatidar M
 
Textual Evidence in Reading and Writing of SHS
Textual Evidence in Reading and Writing of SHSTextual Evidence in Reading and Writing of SHS
Textual Evidence in Reading and Writing of SHSMae Pangan
 
Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4JOYLYNSAMANIEGO
 
Narcotic and Non Narcotic Analgesic..pdf
Narcotic and Non Narcotic Analgesic..pdfNarcotic and Non Narcotic Analgesic..pdf
Narcotic and Non Narcotic Analgesic..pdfPrerana Jadhav
 
ICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfVanessa Camilleri
 
Oppenheimer Film Discussion for Philosophy and Film
Oppenheimer Film Discussion for Philosophy and FilmOppenheimer Film Discussion for Philosophy and Film
Oppenheimer Film Discussion for Philosophy and FilmStan Meyer
 
Mental Health Awareness - a toolkit for supporting young minds
Mental Health Awareness - a toolkit for supporting young mindsMental Health Awareness - a toolkit for supporting young minds
Mental Health Awareness - a toolkit for supporting young mindsPooky Knightsmith
 
ClimART Action | eTwinning Project
ClimART Action    |    eTwinning ProjectClimART Action    |    eTwinning Project
ClimART Action | eTwinning Projectjordimapav
 
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...DhatriParmar
 

Recently uploaded (20)

How to Fix XML SyntaxError in Odoo the 17
How to Fix XML SyntaxError in Odoo the 17How to Fix XML SyntaxError in Odoo the 17
How to Fix XML SyntaxError in Odoo the 17
 
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptxDecoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
 
MS4 level being good citizen -imperative- (1) (1).pdf
MS4 level   being good citizen -imperative- (1) (1).pdfMS4 level   being good citizen -imperative- (1) (1).pdf
MS4 level being good citizen -imperative- (1) (1).pdf
 
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
 
Mythology Quiz-4th April 2024, Quiz Club NITW
Mythology Quiz-4th April 2024, Quiz Club NITWMythology Quiz-4th April 2024, Quiz Club NITW
Mythology Quiz-4th April 2024, Quiz Club NITW
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQ-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management System
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...
 
Faculty Profile prashantha K EEE dept Sri Sairam college of Engineering
Faculty Profile prashantha K EEE dept Sri Sairam college of EngineeringFaculty Profile prashantha K EEE dept Sri Sairam college of Engineering
Faculty Profile prashantha K EEE dept Sri Sairam college of Engineering
 
Active Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfActive Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdf
 
Textual Evidence in Reading and Writing of SHS
Textual Evidence in Reading and Writing of SHSTextual Evidence in Reading and Writing of SHS
Textual Evidence in Reading and Writing of SHS
 
Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4
 
Narcotic and Non Narcotic Analgesic..pdf
Narcotic and Non Narcotic Analgesic..pdfNarcotic and Non Narcotic Analgesic..pdf
Narcotic and Non Narcotic Analgesic..pdf
 
ICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdf
 
Mattingly "AI & Prompt Design: Large Language Models"
Mattingly "AI & Prompt Design: Large Language Models"Mattingly "AI & Prompt Design: Large Language Models"
Mattingly "AI & Prompt Design: Large Language Models"
 
Oppenheimer Film Discussion for Philosophy and Film
Oppenheimer Film Discussion for Philosophy and FilmOppenheimer Film Discussion for Philosophy and Film
Oppenheimer Film Discussion for Philosophy and Film
 
Mental Health Awareness - a toolkit for supporting young minds
Mental Health Awareness - a toolkit for supporting young mindsMental Health Awareness - a toolkit for supporting young minds
Mental Health Awareness - a toolkit for supporting young minds
 
ClimART Action | eTwinning Project
ClimART Action    |    eTwinning ProjectClimART Action    |    eTwinning Project
ClimART Action | eTwinning Project
 
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
 

Well Grounded Python Coding - Revision 1 (Day 1 Slides)

  • 1. 1 WELL-GROUNDED PYTHON CODING Worajedt Sitthidumrong Class #1 - Dec 21-22, 2019 www.qython.io Copyrights 2019 by Worajedt Sitthidumrong. For your Personal Uses Only.
  • 3. 3 EX01 DATA TYPES & STATEMENT Data types •Basic [int, float, boolean, string, char] •Complex [set, tuple, list, dict] •type() Coding Language •Comment •Assignment •Expression •Blocks (if, loop)
  • 4. 4 EX01 DATA TYPES & STATEMENT (CONT.) Equality •Is Operator •Assigned to •== •!= Caution! •Variable and naming •Indents •Common Errors
  • 5. 5 EX02 VIRTUAL ENVIRONMENT Why you should use ‘virtual environment’? •What is venv •How to config and use venv in PyCharm •How many of them? •virtualenv •conda •pipenv
  • 6. 6 EX03 PACKAGE INSTALLATION What is ‘pip’ •pip search …… •pip install …… •pip freeze > requirements.txt •pip install requirements.txt
  • 7. 7 MATH Very primitive operators that you must know how to use them. + - * / % // **
  • 8. 8 EX01 MATH CALC 1 Write a program that calculate ‘Area of Square, Rectangle, Triangle’ •Use this formulas [ w * w, w * h, 1/2 * b * h ] •Note about integer or float calculation. Write a program that calculate ‘VAT’ •Use this calculation [ taxed_price = price + ( 7% of price) ] Rewrite them again with ‘input()’ •Rewrite all programs above with user’s input for [ w, h, b, price ]
  • 9. 9 EX02 MATH CALC 2 DIVISION Write a program ‘Does it Odd?’ •Get one user input and show that it is an odd number or not •Note modulus (%) may be helpful Write a program ‘FizzBuzz’ •Get one user input and consider if it can be divided by 3 or 5 or both without remainder.
  • 10. 10 EX03 MATH CALC 3 PARENTHESIS, ORDER Consider this expressions •print( 100-2/3^5 ) •print( (100-2)/3^5 ) •print( 100-(2/3)^5 ) •print( 100-2/(3^5) ) What make them different?
  • 11. 11 EX04 MATH CALC 4 ‘MATH MODULE’ Try this ‘math’ module by yourself •math.pi •math.pow() •math.random() Can you explain ‘random()’
  • 12. 12 STRING What you mostly use for human communication and presentation String in many senses; list, chars and know how to transform them
  • 13. 13 EX01 ASCII, UNICODE • CHAR, STRING Do you know ‘ASCII’ or ‘Unicode’ Character Code? •What’s saved in computer when your text has ‘ABCD’ inside? •Note try to find which text encoding inside your PyCharm files. Find out more about ‘ASCII’ and ‘Unicode’ tables •Non-printable characters. [ n, r, t ] ‘Char’ acter and ‘String’ •String made from characters.
  • 14. 14 EX02 STRING OPERATOR What’s possible to calculate with ‘string’? •‘concatenate’ or ‘plus’ •‘in’ & ‘not’ •‘multiply’ ? Really? •len() •upcase(), lowcase() ‘slice’ is BIGGGGGGGG •REMEMBER THIS!! [ string[start:stop:step] ]string[start:stop:step] ‘slice’ is BIGGGGGGGG
  • 15. 15 EX03 STRING FORMAT It’s better to use .format() than multiple plus operators •‘The {} brown fox jumped over the lazy dog’.format(‘quick’) •‘Only {0} lived for others is {0} {1}’.format(‘a life’,’worthwhile’} •# - Albert Einstein •‘Hi {name}, an announcement has been made from {teacher}, instructor of {course} and 2 more courses.’ .format( name=‘Worajedt’, teacher=‘Holczer’, course=‘Advanced Algorithms in Java, Data Structures in Java’ )
  • 16. 16 EX04 STRING FORMAT USE CASE •Can you create a program to print this medication label? •Note : Use keywords to be placeholders instead of numeric index
  • 17. 17 SYSTEM THEORY Do you ever heard of.. Input-Process-Output or.. Garbage in, garbage out? Learn more Learn more
  • 18. 18 BASIC OF ‘SYSTEM THEORY’ Input Output Process Feedback
  • 19. 19 EX01 GRADING FUNCTION Write a program that return grade from input score •Grades are : • Grade Score Range A >= 80 B 70 - 79 C 60 - 69 D 50 = 59 F < 50
  • 20. 20 CONDITION When we have information, it let us ‘make decision’. If-else, if-elif-else and boolean algebra come in.
  • 21. 21 EX01 GRADING REVISIT Enhance your grading system again with if-elif-else •Is it a number ? •Is it within range 0 - 100 ? •Make your code readable •Wrap main idea within •if __name__ == ‘__main__’: • xxxxx • xxxxx
  • 22. 22 EX02 FIZZBUZZ APP REVISIT Enhance your FizzBuzz again with if-elif-else •Is it a number ? •Is it within range 0 - 100 ? •Wrap the main logic within check_fizzbuxz() •Make your code readable •Wrap main idea within •if __name__ == ‘__main__’: • xxxxx • xxxxx
  • 23. 23 Information can hold in a variable. But a variable can hold more than one information. Ordered or Unordered. Set, Tuple, List and Dictionary. All of these come with different kind of parenthesizes. COMPLEX DATATYPES
  • 24. 24 EX01 CREATE LIST VS TUPLELIST What’s the different between ‘tuple’ and ‘list’ ? •Tuple is Read Only & faster •Both are ‘array’ •Both are ‘ordered list’ •Both are ‘zero-based index’ tp = (1,5,7,9) # create a tuple li = [1,5,7,9] # create a list
  • 25. 25 EX02 MODIFY LIST List can be modified, so these are ways you can do with a list. •Find size of list •Pull data from each list •Add more member(element) •Remove member (one by one) •Reverse all members •Count a selected member •Find index(position) of a member •Find if list has this member LIST
  • 26. 26 EX03 OPERATIONS We can use some operations, check it out. •Combine lists ( and tuple! ) •Unpack members to variables LIST
  • 27. 27 EX04 SLICE List has one thing you must practice, slicing the list LIST list[start:stop:step] 0 1 2 3 4 5 6 7 8 B U T T E R F L Y -9 -8 -7 -6 -5 -4 -3 -2 -1
  • 28. 28 EX05 LIST COMPREHENSION List Comprehension helps you define members with condition(s) •Create a list consists of members in a condition •You can use condition to create members •And map() object to help you modified members •Also, you can use this comprehension with ‘tuple’ LIST
  • 29. 29 EX06 LIST OF LISTS (2D ARRAY) Just a simple rules, list can have any types of its member. Even list. •Try to create a simple data made from list of lists •How can we replace the red location? LIST two_d_li = [ [1,3,5,7], [2,4,6,8], [5,0,5,0] ]
  • 30. 30 EX01 CREATE DICT Unordered list of data that comes with pair of {key:value} •They are paired { “key”: value } •No ordered •Access by ‘key’ •Can get a list of keys and a list of values DICTIONARY
  • 31. 31 EX02 MODIFY DICT Dictionary can do mostly list can •You can find if the key exists •And avoid error with .get() •Update value and append value DICTIONARY
  • 32. 32 EX01 COMMON STRUCTURE The most important and common structure of ‘database’ •1 Root key (option) •Array (list) at root level •Consists of dictionary (same structure) as the list members Database query result, JSON API result are the most common format like this. LIST OF DICTIONARY
  • 33. 33 EX02 CREATE A JSON DATA Learn how to create a JSON data •What’s JSON? •Try to create a JSON data from your experience LIST OF DICTIONARY
  • 34. 34 FOR LOOP Bunch of information may require the same set of instructions on them. For-loops have many ways to deal with each kind of data types.
  • 35. 35 EX01 FOR LOOP WITH COUNTER ‘for in’ LIST If we deal with ‘ordered list’ , we can use ‘for in’ •for animal in ["dog", "cat", "mouse"]: •for i in range(4): •list = ["dog", "cat", "mouse"] •for i, value in enumerate(list): • print(i, value) •x = 0 •while x < 4: • print(x) • x += 1 # or x = x+1
  • 36. 36 EX02 FOR + IF ELSE FIZZBUZZ REVISIT ‘for in’ LIST Can you modify your FizzBuzz? •Create a list of number, may be from range() •Then apply fizzbuzz() for every items •Print the output
  • 37. 37 EX01 FOOTBALL PLAYERS ‘for each’ DICT Actually, there is NO ‘for each’ in Python. •a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4} •new_dict = {} •for key, value in a_dict.items(): • new_dict[value] = key •print(new_dict) •Now create a dict of football players and iterates over them.
  • 38. 38 EX02 FOR + IF ELSE ‘for each’ DICT You can apply condition to each loop From the dict of football players, now iterates over them, only who are older than 30 yrs
  • 39. 39 EX01-10 : CONTINUOUS EXERCISES RUNNERS Use the exercises 01-10 about runners, complete them all!
  • 40. 40 PYCHARM IDE Do you really know how to use PyCharm IDE? I bet you’re not. Not even close.
  • 41. 41 CODING THE RIGHT WAY Design how your program should work. •Start from main() •Write something readable and not too complex •Create pseudo function and variable then refactor to real one •Alt+Enter | Opt+Return is god send! •Migrate each of them to the right files/modules •Alt+Enter | Opt+Return is god send!
  • 42. 42 TEXT EDITING To learn a good text editor, learn about this •Cursor movements •Multi-Cursor •Column Selection Mode •Find and Replace •Regular-Expression ( an alien language that save your @$$)
  • 43. 43 REFACTORING Refactoring features in PyCharm you should know •(Watch the demo in class)
  • 44. 44 RUNNING & DEBUGGING In PyCharm you can set many running configurations. •(Watch the demo in class) PyCharm debug features is much more readable, let’s do it! •(Watch the demo in class)
  • 45. 45 Do you know when your code works? How you measure it? Are you sure your measure tool working correctly? If you’re sure, how long it can be working properly? TDD techniques and testing frameworks help you sleep better. TEST DRIVEN DEVELOPMENT (TDD)
  • 46. 46 WHAT IS TDD? • Do you know when your code works? • How you measure it? • Are you sure your measure tool working correctly? • If you’re sure, how long it can be working properly?
  • 47. 47
  • 48. 48 ‘pytest’ ‘pytest’ is one of the best testing library in Python • Almost no configuration • Fast running • Many extension, even BDD (Behavior-Driven Development) • Integrate with PyCharm (Professional) Time to demo !
  • 49. 49 EX01 TDD CALCULATOR EX02 TDD AREA CALC EX03 TDD VAT CALC
  • 50. 50 WORKSHOP 01 TDD : FIND A FREE RANGE
  • 51. 51 WORKSHOP 02 TDD : FIND THE RIGHT EAN13 BARCODE CHECK DIGIT https://www.gs1.org/services/how-calculate-check-digit-manually The following table gives an example to illustrate how a GTIN-13 Check Digit is calculated:
  • 52. 52 WORKSHOP 03 TDD : FIND THE RIGHT PERSONAL ID ในการตรวจสอบเลขที่บัตรประชาชนนั้นทำได้โดยการใช้ Check Digit โดยใช้ตัวเลขหลัก สุดท้ายในการตรวจสอบ Algorithm ของวิธีการใช้ Check Digit มีดังนี้ 1.ตัวเลขบนบัตรประชาชนจะมีทั้งหมด 13 หลัก นำเลขใน 12 หลักแรก มาคูณกับเลขประจำ ตำแหน่ง (เลขประจำหลักได้แก่ 13 บวก 1 ลบด้วยตำแหน่งที่) จะได้ตัวเลขประจำตำแหน่ง ดังนี้ 2.หลังจากนั้นเอาผลคูณของทั้ง 12 หลักมารวมกัน แล้วหารเอาเศษด้วย 11 3.เอาเศษที่ได้จากการหารในข้อ 2 มาลบด้วย 11 เท่านี้ก็ได้เลขที่เป็น Check Digit แล้ว (ถ้า ผลจากข้อ 2 ได้ 10 ให้เอาเลขหลักหน่วยเป็น Check Digit ก็คือ 0 นั่นเอง)
  • 53. 53 WORKSHOP 03 TDD : FIND THE RIGHT PERSONAL ID (CONT) ตัวอย่าง 1-2345-67890-12-1 1.นำไปคูณเลขประจำ ตำแหน่ง : (1*13)+(2*12)+(3*11)+(4*10)+(5*9)+(6*8)+(7*7)+(8*6)+ (9*5)+(0*4)+(1*3)+(2*2) = 352 2.หารเอาเศษด้วย : 11 352%11= 0 3.นำ 11 ตั้งแล้วลบเศษที่ได้จากการหารในข้อ 2 : 11 – 0 = 11 (เอาเลข หลักหน่วย) ดังนั้น Check Digit คือ 1 4.จะได้ : 1-2345-67890-12-1
  • 54. 54 WORKSHOP 04 TDD : FIND THE RIGHT ISBN(10) ถ้าเราเอาหนังสืออะไรก็ได้มาหนึ่งเล่มแล้วเปิดไปที่ barcode (น่าจะอยู่ด้านหลัง) ด้านบนของ barcode จะ เป็นคำว่า ISBN และตัวเลขหลายหลัก 1.) เอาตัวเลขหลักแรก คูณ 10 ตัวต่อมาคูณ 9 ตัวต่อมาคูณ 8 ไปเรื่อยๆ จนถึงตัวรองสุดท้าย 2.) เอาผลคูณที่ได้ทั้งหมดมาบวกกัน 3.) เอาผลบวกที่ได้ หารด้วย 11 และดูเศษ เศษที่ได้จะกลายเป็นตัวเลขหลักสุดท้าย (ถ้าหารเหลือเศษ 11 ก็ ตอบ 1 เศษ 10 ก็ตอบ 0)
  • 55. 55 FILE Any of you have never worked with file? Since you are all have worked with it. You better know how to work with it correctly. None
  • 56. 56 FILE MODES IN PYTHON FILE Mode Description ‘r’ This is the default mode. It Opens file for reading. ‘w’ This Mode Opens file for writing. If file does not exist, it creates a new file. If file exists it truncates the file. ‘x’ Creates a new file. If file already exists, the operation fails. ‘a’ Open file in append mode. If file does not exist, it creates a new file. ’t’ This is the default mode. It opens in text mode. ‘b’ This opens in binary mode. ‘+’ This will open a file for reading and writing (updating)
  • 57. 57 EX01 OPEN AND READ A FILE FILE Python use concept of open and close file like we had in C, Java • 1) Open the file in Read mode with open() • 2) We use the mode function in the code to check that the file is in open mode. If yes, we proceed ahead • 3) Use f.read() or f.readline() to read file data and store it in variable content • 4) print contents
  • 58. 58 EX02 WRITE A FILE CONTENT FILE Python use concept of open and close file like we had in C, Java • 1) Open the file in Write/Append mode with open() • 2) Create some content and f.write(‘content inside’) • 3) Use f.close() to close the file (save) • 4) To Append, process is the same except open() with ‘a+'
  • 59. 59 EX03 READ / WRITE THE MODERN WAY FILE Python 3 can use ‘with’ block to read/write file # Writing to a file contents = {"aa": 12, "bb": 21} with open("myfile2.txt", "w+") as file: file.write(json.dumps(contents)) # writes an object to a file # Reading from a file with open('myfile1.txt', "r+") as file: contents = file.read() # reads a string from a file print(contents) # print: {"aa": 12, "bb": 21}
  • 60. 60 CSV FILE When we process something, data input or output may be any formats. CSV is one of the primitive data since the early age of computer. And it still very important in this Big Data Era.
  • 61. 61 EX01 READ CSVCSV Programming language Designed by Appeared Extension Python Guido van Rossum 1991 .py Java James Gosling 1995 .java C++ Bjarne Stroustrup 1983 .cpp • 1) import csv • 2) Open the file in ‘rt' mode with open() • 3) Use csv.reader() to read the file by Row • 4) Use csv.DictReader() to read each row, column as Dictionary
  • 62. 62 EX02 WRITE CSVCSV • 1) import csv • 2) Open the file in Write/Append mode with open() • 3) Use writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) • 4) writer.writerow(['Programming language', 'Designed by', 'Appeared', 'Extension'])
  • 63. 63 DATABASE While working with CSV is pretty easy. It’s still very basic in terms of relationship and connection between each other entities. Relational Database Management System (RMDB) and Structured Query Language (SQL) seems like the backbone of data management system. “No matter what it takes. Learn it, you must.” – Master Yoda
  • 64. 64 BASIC OF RELATIONAL DATABASE Definitions • Database • Table • Field (Column) • Record (Row) • Primary Key (PK) • Foreign Key (FK) • One to Many • Many to Many
  • 65. 65 SNIPPETS Learn How To Create Snippets To Save Your Time Of programmers don’t know How to Create Snippets. Is the time you may save writing code/fix spelling/pull your hair by using Snippets. 90% 30%
  • 66. 66 SQL LANGUAGE WITH SQLITE import sqlite3 from sqlite3 import Error def create_connection(db_file): """ create a database connection to a SQLite database """ conn = None try: conn = sqlite3.connect(db_file) print(sqlite3.version) except Error as e: print(e) finally: if conn: conn.close()
  • 67. 67 SQL LANGUAGE WITH SQLITE (CONT) . . . . . conn = None try: conn = sqlite3.connect(db_file) print(sqlite3.version) except Error as e: print(e) finally: if conn: conn.close() if __name__ == '__main__': create_connection(r"C:sqlitedbpythonsqlite.db")
  • 68. 68 EX01 MANIPULATE TABLE -- tasks table -- sql_create_tasks_table = CREATE TABLE IF NOT EXISTS tasks ( id integer PRIMARY KEY, name text NOT NULL, priority integer, project_id integer NOT NULL, status_id integer NOT NULL, begin_date text NOT NULL, end_date text NOT NULL, FOREIGN KEY (project_id) REFERENCES projects (id) ); -- projects table -- sql_create_projects_table = CREATE TABLE IF NOT EXISTS projects ( id integer PRIMARY KEY, name text NOT NULL, begin_date text, end_date text );
  • 69. 69 EX01 MANIPULATE TABLE (CONT) def create_table(conn, create_table_sql): """ create a table from the create_table_sql statement :param conn: Connection object :param create_table_sql: a CREATE TABLE statement :return: """ try: c = conn.cursor() c.execute(create_table_sql) except Error as e: print(e)
  • 70. 70 EX01 MANIPULATE TABLE (CONT) def main(): database = r"C:sqlitedbpythonsqlite.db" sql_create_projects_table = """ CREATE TABLE IF NOT EXISTS projects ( sql_create_tasks_table = """CREATE TABLE IF NOT EXISTS tasks ( # create a database connection conn = create_connection(database) # create tables if conn is not None: # create projects table create_table(conn, sql_create_projects_table) # create tasks table create_table(conn, sql_create_tasks_table) else: print("Error! cannot create the database connection.")
  • 71. 71 EX02 SELECT DATA def select_all_tasks(conn): """ Query all rows in the tasks table :param conn: the Connection object :return: """ cur = conn.cursor() cur.execute("SELECT * FROM tasks") rows = cur.fetchall() for row in rows: print(row)
  • 72. 72 EX02 SELECT DATA (CONT) def select_task_by_priority(conn, priority): """ Query tasks by priority :param conn: the Connection object :param priority: :return: """ cur = conn.cursor() cur.execute("SELECT * FROM tasks WHERE priority=?", (priority,)) rows = cur.fetchall() for row in rows: print(row)
  • 73. 73 EX03 INSERT DATA def create_task(conn, task): """ Create a new task :param conn: :param task: :return: """ sql = ''' INSERT INTO tasks(name,priority,status_id,project_id,begin_date,end_date) VALUES(?,?,?,?,?,?) ''' cur = conn.cursor() cur.execute(sql, task) return cur.lastrowid
  • 74. 74 EX03 INSERT DATA (CONT) def main(): database = r"C:sqlitedbpythonsqlite.db" # create a database connection conn = create_connection(database) with conn: # create a new project project = ('Cool App with SQLite & Python', '2015-01-01', '2015-01-30'); project_id = create_project(conn, project) # tasks task_1 = ('Analyze the requirements of the app', 1, 1, project_id, '2015-01-01', '2015-01-02') task_2 = ('Confirm with user about the top requirements', 1, 1, project_id, '2015-01-03', '2015-01-05') # create tasks create_task(conn, task_1) create_task(conn, task_2)
  • 75. 75 EX04 UPDATE DATA def update_task(conn, task): """ update priority, begin_date, and end date of a task :param conn: :param task: :return: project id """ sql = ''' UPDATE tasks SET priority = ? , begin_date = ? , end_date = ? WHERE id = ?''' cur = conn.cursor() cur.execute(sql, task) conn.commit()
  • 76. 76 EX04 UPDATE DATA (CONT) def main(): database = r"C:sqlitedbpythonsqlite.db" # create a database connection conn = create_connection(database) with conn: update_task(conn, (2, '2015-01-04', '2015-01-06', 2))
  • 77. 77 EX05 DELETE DATA def delete_task(conn, id): """ Delete a task by task id :param conn: Connection to the SQLite database :param id: id of the task :return: """ sql = 'DELETE FROM tasks WHERE id=?' cur = conn.cursor() cur.execute(sql, (id,)) conn.commit() def main(): database = r"C:sqlitedbpythonsqlite.db" # create a database connection conn = create_connection(database) with conn: delete_task(conn, 2); # delete_all_tasks(conn);