Chapter 1. Introduction
Chapter 1. Introduction
Introduction
About me
§ Dr. Dinh Viet Sang
§ Working room: 1001 B1
§ Email: [email protected]
§ Homepage: https://users.soict.hust.edu.vn/sangdv/
2
CONTENTS
• Course Info
• Computer and programming language
• What is Python?
• Variables, Expressions, and Statements
3
Course info
4
Course info
(*) The evaluation about the progress can be adjusted with some bonus based
on attendance, performance in class and so on.
The bonus should belong to [-2, +1], according to the policy of HUST.
5
Course info
Chapter 1. Introduction
Chapter 2. Control flow
Chapter 3. Functions
Chapter 4. Strings
Chapter 5. Lists, sets, dictionaries, tuples
Chapter 6. Modules
Chapter 7. Files
Chapter 8. Classes and Objects
Chapter 9. Exceptions
Chapter 10. Testing and debugging
6
Materials
• E-Book:
Think Python 2nd Edition by Allen B. Downey
• Online courses:
MIT: Introduction to Computer Science and Programming in
Python
7
NOTE
• Highly encourage you
o to bring computers to answer in-class practice exercises!
o to take notes and run code files when I do
o you also can use online editor (e.g. ideone) on mobile
8
Computer and
programming language
9
PROBLEM SOLVING
• Problem solving: the most important skill for a computer
scientist
• Problem solving is the ability to formulate problems, think
creatively about solutions, and express a solution clearly
and accurately
• Learning to program is an excellent opportunity to practice
problem-solving skills
10
WHAT DOES A COMPUTER DO
§ Fundamentally:
◦ performs calculations
• a billion calculations per second!
◦ remembers results
• 100s of gigabytes of storage!
§ What kinds of calculations?
◦ built-in to the language
◦ ones that you define as the programmer
§ computers only know what you tell them
11
TYPES OF KNOWLEDGE
§ declarative knowledge is statements of fact.
§ imperative knowledge is a recipe or “how-to”.
A numerical example:
§ square root of a number x is y such that y*y = x
§ recipe for deducing square root of a number x (16)
1) Start with a guess, g
2) If g*g is close enough to x, stop and say g is the answer
3) Otherwise make a new guess by averaging g and x/g
4) Using the new guess, repeat process until close enough
12
WHAT IS A RECIPE
1) sequence of simple steps
2) flow of control process that specifies when each step is
executed
3) a means of determining when to stop
• 1+2+3 = an algorithm!
13
COMPUTERS ARE MACHINES
§ how to capture a recipe in a mechanical process
§ fixed program computer
◦ calculator
§ stored program computer
◦ machine stores and executes instructions
14
BASIC MACHINE ARCHITECTURE
MEMORY
CONTROL ARITHMETIC
UNIT LOGIC UNIT
program counter do primitive ops
INPUT OUTPUT
15
Definitions
• Central Processing Unit: Runs the Program - The CPU is
always wondering “what to do next”? Not the brains
exactly – not smart but very very fast
• Input Devices: Keyboard, Mouse, Touch Screen
• Output Devices: Screen, Speakers, Printer, DVD Burner
• Main Memory: Fast small temporary storage - lost on
reboot - aka Random Access Memory (RAM)
• Secondary Memory: Slower large permanent storage - lasts
until deleted - disk drive / memory stick
16
Central Processing Unit (CPU)
17
Memory (RAM)
18
Hard Drive
Source: http://commons.Wikimedia.org
19
Input devices
20
Output devices
21
Program and Programming language
§ Program: sequence of instructions stored inside
computer
• Programming language: Language used for
programming: Used to communicate with
computers, help computers understand and
perform specific tasks
22
Programming language
• Machine language:
‒ Machine language is a set of primitive instructions built into
every computer.
‒ Each type of computer has its own machine language.
‒ The only type of language for writing a program that a computer
can directly understand and execute.
‒ The instructions of this language are written in binary or remote
code.
‒ Attached to the hardware architecture of the machine, thus
exploiting the hardware specifications.
‒ Not favorable for programmers due to the difficulty of
remembering the code, the lack of structure, ...
‒ For example, to add two numbers, you might write an instruction
in binary like this:
1101101010011010
23
Programming language
• Assembly language:
‒ Assembly languages were developed to make programming
easy
‒ Allows the programmer to use some acronyms to write
instructions.
‒ For example, add the contents of registers AX and BX and
write the result to AX:
Machine code (8086): 01D8
Assembly statement: ADD AX, BX
‒ The assembly language program must be translated into the
machine language before a computer can execute it.
‒ A program called assembler is used to convert assembly
language programs into machine code.
24
Programming language
• High-level language:
‒ The high-level languages are English-like and easy to learn
and program.
‒ Less dependent on computer hardware architecture
‒ Portable: can run on different kinds of computers with few
or no modifications
‒ Must be translated into the machine language before a
computer can execute it.
‒ For example: FORTRAN, COBOL, ALGOL60, BASIC, Pascal,
Foxpro, Visual Foxpro, Visual Basic, C, Visual C, C ++, Java,
C#, Python, ...
‒ Almost all programs are written in high-level languages.
Low-level languages are used only for a few specialized
applications.
25
Interpreter and compiler
• Two kinds of programs process high-level languages into
low-level languages: interpreters and compilers
• An interpreter reads a high-level program and executes it.
• It processes the program a little at a time, alternately
reading lines and performing computations.
26
Interpreter and compiler
• A compiler reads the program and translates it completely
before the program starts running.
• The high-level program is called the source code
• the translated program is called the object code or the
executable
• The object code is often then linked with other supporting
library code before the object can be executed on the
machine.
• Once a program is compiled, you can execute it repeatedly
without further translation
27
Aspects of languages
• primitive constructs
• English: words
• programming language: numbers, strings, simple
operators
28
Aspects of languages
§ syntax
◦ English: "cat dog boy" à not syntactically valid
"cat hugs boy" à syntactically valid
◦ programming language: "hi"5 à not syntactically valid
3.2*5 à syntactically valid
29
Aspects of languages
§ static semantics is which syntactically valid strings
have meaning
◦ English: "I are hungry" à syntactically valid
but static semantic error
◦ programming language: 3.2*5 à syntactically valid
3+"hi" à static semantic error
30
Aspects of languages
§ semantics is the meaning associated with a
syntactically correct string of symbols with no static
semantic errors
◦ English: can have many meanings
◦ programming languages: have only one meaning but
may not be what programmer intended
31
Where things go wrong
§ syntactic errors
◦ common and easily caught
§ static semantic errors
◦ some languages check for these before running program
◦ can cause unpredictable behavior
§ no semantic errors but different meaning than what
programmer intended
◦ program crashes, stops running
◦ program runs forever
◦ program gives an answer but different than expected
32
What is Python?
33
What is Python?
• Python is a general purpose programming language. That
means you can use Python to write code for any
programming tasks.
• Python are now used in Google search engine, in mission
critical projects in NASA, in processing financial transactions
at New York Stock Exchange.
• Python is interpreted, which means that python code is
translated and executed by an interpreter one statement at
a time.
• Python is an object-oriented programming language. Data in
Python are objects created from classes. A class is
essentially a type that defines the objects of the same kind
with properties and methods for manipulating objects.
Object-oriented programming is a powerful tool for
developing reusable software.
34
Python programs
§ a program is a sequence of definitions and commands
◦ definitions evaluated
◦ commands executed by Python interpreter in a shell
§ commands (statements) instruct interpreter to do
something
§ can be typed directly in a shell or stored in a file that
is read into the shell and evaluated
35
Rank Language Share Trend
What is Python?
1 Python 30.17 % -0.2 %
Popularity of Programming Language
Worldwide, Mar 2021 2 Java 17.18 % -1.2 %
https://pypl.github.io/PYPL.html 3 JavaScript 8.21 % +0.2 %
4 C# 6.76 % -0.6 %
5 C/C++ 6.71 % +0.8 %
6 PHP 6.13 % +0.0 %
7 R 3.81 % +0.0 %
8 Objective-C 3.56 % +1.1 %
9 Swift 1.82 % -0.4 %
10 Matlab 1.8 % -0.0 %
11 Kotlin 1.76 % +0.2 %
12 TypeScript 1.74 % -0.1 %
13 Go 1.34 % +0.0 %
14 VBA 1.22 % -0.1 %
15 Ruby 1.13 % -0.1 %
36
What is Python?
37
What is Python?
38
Python’s History
• Created by Guido van Rossum in Netherlands in 1990
• Open source
• Python 3 is a newer version, but it is not backward
compatible with Python 2. That means if you write a
program using Python 2, it may not work on Python 3.
39
Python installation
• Direct installation: https://www.python.org/downloads/
40
Python installation
• Anaconda: https://www.anaconda.com/products/individual
• Anaconda is a distribution of the Python and R programming
languages for scientific computing (data science, machine
learning…), that aims to simplify package management and
deployment.
• Can create many independent environments with different
package versions
• Over 250 packages automatically installed, and over 7,500
additional open-source packages
• It also includes a GUI, Anaconda Navigator, as a graphical
alternative to the command line interface (CLI).
41
Editor
• Visual Studio Code: https://code.visualstudio.com/
42
Editor
• Install Python Extension:
https://code.visualstudio.com/docs/python/python-tutorial
43
Editor
• Jupyter notebook: https://jupyter.org/
• Google colab: https://colab.research.google.com/
44
Variables, Expressions,
and Statements
45
Constants
• Fixed values such as numbers, letters, and strings are called
“constants” - because their value does not change
• Numeric constants are as you expect
• String constants use single-quotes (‘) or double-quotes (")
46
Variables
• A variable is a named place in the memory where a
programmer can store data and later retrieve the data using
the variable “name”
• Programmers get to choose the names of the variables
• You can change the contents of a variable in a later
statement
48
Python Variable Name Rules
• Can consist of letters, numbers, or underscores (but cannot
start with a number)
• Case Sensitive
• Good: spam eggs spam23 _speed
• Bad: 23spam #sign var.12
• Different: spam Spam SPAM
49
Reserved words (Keywords)
• You can NOT use reserved words as variable names /
identifiers
50
Binding variables and values
• equal sign is an assignment of a value to a variable name
pi = 3.14159
pi_approx = 22/7
§ value stored in computer memory
§ an assignment binds name to value
§retrieve value associated with name or variable by
invoking the name, by typing pi
51
Abstracting expressions
§ why give names to values of expressions?
§ to reuse names instead of values
§ easier to change code later
pi = 3.14159
radius = 2.2
area = pi*(radius**2)
52
Programming vs math
§ in programming, you do not “solve for x”
pi = 3.14159
radius = 2.2
# area of circle
area = pi*(radius**2)
radius = radius+1
53
Changing bindings
• can re-bind variable names using new assignment statements
• previous value may still stored in memory but lost the handle
for it
• value for area does not change until you tell the computer to
do the calculation again
3.14
pi = 3.14 pi
2.2
radius = 2.2 radius
area = pi*(radius**2) area 3.2
54
Another example: Assignment Statements
• Consider the following assignment
x = 3.9 * x * ( 1 - x )
55
A variable is a memory location
used to store a value (0.6) x 0.6
0.6 0.6
x = 3.9 * x * ( 1 - x )
0.4
56
A variable is a memory location used to
store a value. The value stored in a
variable can be updated by replacing the
old value (0.6) with a new value (0.93) x 0.6 0.93
x = 3.9 * x * ( 1 - x )
57
Named Constants
• The value of a variable may change during the execution of
a program, but a named constant or simply constant
represents permanent data that never changes.
• Python does not have a special syntax for naming constants.
• You can simply create a variable to denote a constant. To
distinguish a constant from a variable, use all uppercase
letters to name a constant.
PI = 3.14
GRAVITY = 9.8
58
Numeric Operators
§ i+j à the sum
if both are ints, result is int
§ i-j à the difference if either or both are floats, result is float
59
Numeric Operators
+ Addition 34 + 1 35
// Integer Division 1 // 2 0
% Remainder 20 % 3 2
60
Integer Division
Python 2 >>> print (10 / 2)
5
• Integer division truncates (floor >>> print (9 / 2)
division) 4
• Floating point division produces >>> print (99 / 100)
floating point numbers (true 0
division) >>> print (10.0 / 2.0)
5.0
>>> print (99.0 / 100.0)
Python 3 0.99
61
Remainder Operator
• Remainder is very useful in programming. For example, an
even number % 2 is always 0 and an odd number % 2 is
always 1. So you can use this property to determine
whether a number is even or odd. Suppose today is
Saturday and you and your friends are going to meet in 10
days. What day is in 10 days? You can find that day is
Tuesday using the following expression:
62
Overflow
• When a variable is assigned a value that is too large (in size)
to be stored, it causes overflow. For example, executing the
following statement causes overflow.
>>>245.0 ** 1000
OverflowError: 'Result too large'
63
Underflow
• When a floating-point number is too small (i.e., too close to
zero) to be stored, it causes underflow. Python
approximates it to zero. So normally you should not be
concerned with underflow.
64
Scientific Notation
• Floating-point literals can also be specified in scientific
notation, for example,
• 1.23456e+2, same as 1.23456e2, is equivalent to 123.456,
and
• 1.23456e-2 is equivalent to 0.0123456.
• E (or e) represents an exponent and it can be either in
lowercase or uppercase.
65
Arithmetic Expressions
3 + 4 x 10( y - 5)(a + b + c) 4 9+ x
- + 9( + )
5 x x y
is translated to
66
Order of Evaluation
• When we string operators together - Python must know
which one to do first
• This is called “operator precedence”
• Which operator “takes precedence” over the others
x = 1 + 2 ** 3 / 4 * 5
67
Operator Precedence Rules
• Highest precedence rule to lowest precedence rule
• Parenthesis are always respected
• Exponentiation (raise to a power)
• Multiplication, Division, and Remainder
• Addition and Subtraction
• Left to right
Parenthesis
Power
Multiplication
Addition
Left to Right
68
x = 1 + 2 ** 3 / 4 * 5
Parenthesis
Power
Multiplication
Addition
Left to Right
69
x = 1 + 2 ** 3 / 4 * 5 1 + 2 ** 3 / 4 * 5
1+8/4*5
Parenthesis 1 + 10
Power
Multiplication
Addition
Left to Right 11
70
Operator Precedence
• Remember the rules -- top to bottom
• When writing code - use parenthesis
• When writing code - keep mathematical expressions simple
enough that they are easy to understand
• Break long series of mathematical operations up to make
them more clear
Parenthesis
Power
Multiplication
Addition
Left to Right
Exam Question: x = 1 + 2 * 3 - 4 / 5
71
Mixing Integer and Floating
• When you perform an operation where one operand is an
integer and the other operand is a floating point the result is
a floating point
• The integer is converted to a floating point before the
operation
72
Augmented Assignment Operators
73
Data types
• In Python variables, literals, In C/C++:
and constants have a “data
type” int a;
float b;
• In Python variables are
a = 5
“dynamically” typed. In some
other languages you have to b = 0.43
explicitly declare the type
before you use the variable In Python:
a = 5
a = “Hello”
a = [ 5, 2, 1]
74
More on “Types”
• In Python variables, literals, and >>> d = 1 + 4
constants have a “type” >>> print (d)
• Python knows the difference 5
between an integer number
and a string >>> e = 'hello ' + 'there'
• For example “+” means >>> print (e)
“addition” if something is a hello there
number and “concatenate” if concatenate = put together
something is a string
75
Type Matters
• Python knows what “type” >>> e = 'hello ' + 'there'
>>> e = e + 1
everything is Traceback (most recent call la
• Some operations are st):
prohibited File "<pyshell#3>", line 1,
in <module>
• You cannot “add 1” to a e = e + 1
string TypeError: can only concatenat
e str (not "int") to str
• We can ask Python what >>> type(e)
type something is by using <class 'str'>
the type() function. >>> type('hello’)
<class 'str'>
>>> type(1)
<class 'int'>
>>>
76
Several Types of Numbers
• Numbers have two main types >>> xx = 1
• Integers are whole numbers: >>> type (xx)
-14, -2, 0, 1, 100, 401233 <class 'int'>
>>> temp = 98.6
• Floating Point Numbers have >>> type(temp)
decimal parts: -2.5 , 0.0, < class 'float'>
98.6, 14.0 >>> type(1)
• There are other number types - < class 'int'>
they are variations on float and >>> type(1.0)
< class 'float'>
integer
>>>
77
Type Conversions
• can convert object of one >>> print (float(99) / 100)
type to another 0.99
>>> i = 42
• When you put an integer >>> type(i)
and floating point in an <class 'int'>
>>> f = float(i)
expression the integer is >>> print (f)
implicitly converted to a 42.0
float >>> type(f)
<class 'float'>
• You can control this with >>> print (1 + 2 * float(3) – 5)
the built in functions int() 2.0
and float() >>>
78
String Conversions
• You can also use int() >>> sval = '123'
>>> type(sval)
and float() to convert <class 'str'>
between strings and >>> print (sval + 1)
integers Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
• You will get an error print (sval + 1)
TypeError: can only concatenate str (not "i
if the string does not nt") to str
contain numeric >>> ival = int(sval)
characters >>> type(ival)
<class 'int'>
>>> print (ival + 1)
124
>>> nsv = 'hello bob'
>>> niv = int(nsv)
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
niv = int(nsv)
ValueError: invalid literal for int() with
base 10: 'hello bob'
79
User Input
• We can instruct name = input(‘Who are you?’)
Python to pause and print ('Welcome ', name)
read data from the
user using the input()
function Who are you? Anna
Welcome Anna
• The input() function
returns a string
80
Converting User Input
• If we want to read a inp = input(‘Europe floor?’)
number from the user, we usf = int(inp) + 1
must convert it from a print (“US floor: ”, usf)
string to a number using a
type conversion function
Europe floor? 0
• Later we will deal with bad
US floor : 1
input data
81
Comments in Python
• Anything after a # is ignored by Python
• Why comment?
• Describe what is going to happen in a sequence of code
• Document who wrote the code or other ancillary
information
• Turn off a line of code - perhaps temporarily
82
# Get the name of the file and open it
name = input("Enter file:")
handle = open(name, "r") # This is a file h
andle
text = handle.read()
words = text.split()
83
String Operations
• Some operators apply to >>> print ('abc' + '123‘)
strings abc123
• + implies “concatenation”
>>> print ('Hi' * 5)
• * implies “multiple HiHiHiHiHi
concatenation”
• Python knows when it is
dealing with a string or a
number and behaves
appropriately
84
Mnemonic Variable Names
• Since we programmers are given a choice in how we choose
our variable names, there is a bit of “best practice”
• We name variables to help us remember what we intend to
store in them (“mnemonic” = “memory aid”)
• This can confuse beginning students because well named
variables often “sound” so good that they must be keywords
85
x1q3z9ocd = 35.0 a = 35.0
x1q3z9afd = 12.50 b = 12.50
x1q3p9afd = x1q3z9ocd * x1q3z9afd c = a * b
print (x1q3p9afd) print (c)
hours = 35.0
What is this rate = 12.50
code doing? pay = hours * rate
print (pay)
86
Exercise 1
Whenever you are experimenting with a new feature, you should
try to make mistakes. This kind of experiment helps you remember
what you read; it also helps when you are programming, because
you get to know what the error messages mean.
1. In a print statement, what happens if you leave out one of the
parentheses, or both?
2. If you are trying to print a string, what happens if you leave out
one of the quotation marks, or both?
3. You can use a minus sign to make a negative number like -2.
What happens if you put a plus sign before a number? What
about 2++2?
4. In math notation, leading zeros are ok, as in 09. What happens
if you try this in Python? What about 011?
5. What happens if you have two values with no operator
between them?
87
Exercise 2
Start the Python interpreter and use it as a calculator.
1. How many seconds are there in 42 minutes 42 seconds?
2. How many miles are there in 10 kilometers? Hint: there
are 1.61 kilometers in a mile.
3. If you run a 10 kilometer race in 42 minutes 42 seconds,
what is your average pace (time per mile in minutes and
seconds)? What is your average speed in miles per hour?
88
Exercise 3
Write a program to prompt the user for hours and rate per
hour to compute gross pay.
• Enter Hours: 35
• Enter Rate: 2.75
• Pay: 96.25
89
Exercise 4
• Rewrite the following figure in Python using print statement
______
/ \
/ \
\ /
\______/
\ /
\______/
+--------+
/ \
/ \
| STOP |
\ /
\______/
/ \
/ \
+--------+
90
References
1. MIT Introduction to Computer Science and Programming
in Python
2. Think Python: How to Think Like a Computer Scientist:
https://greenteapress.com/thinkpython2/html/index.html
91
Thank you for
your attention!
92