0% found this document useful (0 votes)
35 views

Chapter 1. Introduction

- Dr. Dinh Viet Sang teaches the Introduction to Python course at SOICT, HUST University. - The course covers topics like variables, expressions, statements, control flow, functions, strings, lists, dictionaries, classes and exceptions using Python. - Students are encouraged to bring their laptops to class for hands-on practice exercises and the course evaluation includes a midterm exam, homework, in-class practices and a final exam.

Uploaded by

Anh Nhật Bùi
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views

Chapter 1. Introduction

- Dr. Dinh Viet Sang teaches the Introduction to Python course at SOICT, HUST University. - The course covers topics like variables, expressions, statements, control flow, functions, strings, lists, dictionaries, classes and exceptions using Python. - Students are encouraged to bring their laptops to class for hands-on practice exercises and the course evaluation includes a midterm exam, homework, in-class practices and a final exam.

Uploaded by

Anh Nhật Bùi
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 92

Chapter 1:

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

Module Evaluation method Percent


A1. Mid-term (*) Progress 50%
A1.1. Mid-term exam 20%
A1.2. Homework 10%
A1.3. Practice 20%
A2. Final term A2.1. Final exam 50%

(*) 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

Cornell University: CS 1110: Introduction to Computing Using


Python

University of Whashington: CSE 143: Computer Programming

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

g g*g x/g (g+x/g)/2


3 9 16/3 4.17
4.17 17.36 3.837 4.0035
4.0035 16.0277 3.997 4.000002

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 (")

>>> print (123)


123
>>> print (98.6)
98.6
>>> print ('Hello world’)
Hello world

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

x = 12.2 x 12.2 100


y = 14
x = 100 y 14
47
Identifiers/Variable Names
• Identifiers are names given to variables, functions, etc.
• An identifier is a sequence of characters that consists of
letters, digits, underscores (_), and asterisk (*).
• An identifier must start with a letter or an underscore. It
cannot start with a digit.
• An identifier cannot be a reserved word. Reserved words
have special meanings in Python, which we will later.
• An identifier can be of any length.

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

and del for is raise assert elif


from lambda return break else
global not try class except if or while
continue exec import pass
yield def finally in print

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

radius = radius+1 15.1976

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

Right side is an expression. 0.936

Once expression is evaluated, the


x 0.936
result is placed in (assigned to) x

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 )

Right side is an expression. Once


expression is evaluated, the result
0.93
is placed in (assigned to) the
variable on the left side (i.e. 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

§ i*j à the product


§ i/j à division result is float

§ i%j à the remainder when i is divided by j


§ i**j à i to the power of j

59
Numeric Operators

Name Meaning Example Result

+ Addition 34 + 1 35

- Subtraction 34.0 – 0.1 33.9

* Multiplication 300 * 30 9000

/ Float Division 1 / 2 0.5

// Integer Division 1 // 2 0

** Exponentiation 4 ** 0.5 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

“/” does true division for all types


“//” does floor division for integers

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:

Saturday is the 6th day in a week


A week has 7 days
(6 + 10) % 7 is 2
The 2nd day in a week is Tuesday
After 10 days

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

(3+4*x)/5 – 10*(y-5)*(a+b+c)/x + 9*(4/x + (9+x)/y)

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

Note 8/4 goes before 4*5 1+2*5


because of the left-right
rule.

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

>>> print (1 + 2 * 3 / 4.0 – 5)


-2.5
>>>

72
Augmented Assignment Operators

Operator Example Equivalent


+= i += 8 i = i + 8
-= f -= 8.0 f = f - 8.0
*= i *= 8 i = i * 8
/= i /= 8 i = i / 8
%= i %= 8 i = i % 8

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

You might also like