Python Programming-1-28
Python Programming-1-28
Programming
Hans-Petter Halvorsen
https://www.halvorsen.blog
Python Programming
Python Programming
Hans-Petter Halvorsen
2019
Python Programming
c Hans-Petter Halvorsen
ISBN:978-82-691106-4-7
1
Preface
Python is a popular programming language, and it is one of the most used pro-
gramming languages today.
Python works on all the main platforms and operating systems used today, such
Windows, macOS, and Linux.
Here you find lots of technical resources about Technology, Programming, Soft-
ware Engineering, Automation and Control, Industrial IT, etc.
https://www.halvorsen.blog/documents/programming/python/
These resources are a supplement to this textbook. Here you can download the
software, download code examples, etc.
LATEXis a document preparation system used for the communication and publi-
cation of scientific documents.
2
For more information about LATEX:
https://www.latex-project.org
Python Books
You find other Python textbooks within different domains on my Python Web
page:
https://www.halvorsen.blog/documents/programming/python/
Python Books:
3
Programming
The way we create software today has changed dramatically the last 30 years,
from the childhood of personal computers in the early 80s to today’s powerful
devices such as Smartphones, Tablets and PCs.
The Internet has also changed the way we use devices and software. We still
have traditional desktop applications, but Web Sites, Web Applications and so-
called Apps for Smartphones, etc. are dominating the software market today.
We need to find and learn Programming Languages that are suitable for the
New Age of Programming.
Software Engineering
Software Engineering is the discipline for creating software applications. A
systematic approach to the design, development, testing, and maintenance of
software.
• Planning
• Requirements Analysis
• Design
• Implementation
• Testing
4
5
Contents
2 What is Python? 17
2.1 Introduction to Python . . . . . . . . . . . . . . . . . . . . . . . 17
2.1.1 Interpreted vs. Compiled . . . . . . . . . . . . . . . . . . 18
2.2 Python Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.1 Python Packages for Science and Numerical Computations 20
2.3 Anaconda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4 Python Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4.1 Python IDLE . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4.2 Visual Studio Code . . . . . . . . . . . . . . . . . . . . . . 22
2.4.3 Spyder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.4 Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.5 PyCharm . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.6 Wing Python IDE . . . . . . . . . . . . . . . . . . . . . . 23
2.4.7 Jupyter Notebook . . . . . . . . . . . . . . . . . . . . . . 23
2.5 Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6 Installing Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6.1 Python Windows 10 Store App . . . . . . . . . . . . . . . 24
2.6.2 Installing Anaconda . . . . . . . . . . . . . . . . . . . . . 24
2.6.3 Installing Visual Studio Code . . . . . . . . . . . . . . . . 24
6
3.5.4 Run Python Scripts from Spyder . . . . . . . . . . . . . . 33
II Python Programming 50
5 Python Programming 51
5.1 If ... Else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.2 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.3 For Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.3.1 Nested For Loops . . . . . . . . . . . . . . . . . . . . . . . 57
5.4 While Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.5 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7
10 Error Handling in Python 79
10.1 Introduction to Error Handling . . . . . . . . . . . . . . . . . . . 79
10.1.1 Syntax Errors . . . . . . . . . . . . . . . . . . . . . . . . . 79
10.1.2 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . 79
10.2 Exceptions Handling . . . . . . . . . . . . . . . . . . . . . . . . . 80
11 Debugging in Python 82
14 Anaconda 88
14.1 Anaconda Navigator . . . . . . . . . . . . . . . . . . . . . . . . . 88
15 Enthought Canopy 90
IV Python Editors 91
16 Python Editors 92
17 Spyder 94
19 Visual Studio 98
19.1 Introduction to Visual Studio . . . . . . . . . . . . . . . . . . . . 98
19.2 Work with Python in Visual Studio . . . . . . . . . . . . . . . . . 98
19.2.1 Make Visual Studio ready for Python Programming . . . 99
19.2.2 Python Interactive . . . . . . . . . . . . . . . . . . . . . . 99
19.2.3 New Python Project . . . . . . . . . . . . . . . . . . . . . 100
20 PyCharm 106
8
V Python for Mathematics Applications 113
23 Mathematics in Python 114
23.1 Basic Math Functions . . . . . . . . . . . . . . . . . . . . . . . . 114
23.1.1 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
23.2 Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
23.2.1 Introduction to Statistics . . . . . . . . . . . . . . . . . . 118
23.2.2 Statistics functions in Python . . . . . . . . . . . . . . . . 119
23.3 Trigonometric Functions . . . . . . . . . . . . . . . . . . . . . . . 121
23.4 Polynomials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
VI Resources 128
24 Python Resources 129
24.1 Python Distributions . . . . . . . . . . . . . . . . . . . . . . . . . 129
24.2 Python Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
24.3 Python Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
24.4 Python Tutorials . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
24.5 Python in Visual Studio . . . . . . . . . . . . . . . . . . . . . . . 130
9
Part I
10
Chapter 1
Introduction
With this textbook you will learn basic Python programming. The textbook
contains lots of examples and self-paced tasks that the users should go through
and solve in their own pace.
The Internet has also changed the way we use devices and software. We still
have traditional desktop applications, but Web Sites, Web Applications and so-
called Apps for Smartphones, etc. are dominating the software market today.
We need to find and learn Programming Languages that are suitable for the
New Age of Programming.
11
Figure 1.1: Web Site - Python
Python has during the last 10 years become more and more popular. Today,
Python has become one of the most popular Programming Languages.
There are many different rankings regarding which programming language which
is most popular. In most of these ranking, Python is in top 10.
One of these rankings is the IEEE Spectrum’s ranking of the top programming
languages [3].
From this ranking we see that Python is the most popular Programming Lan-
guage in 2018. See Figure 1.2
As we see in Figure 1.2 they categorize the different Programming Languages
into the following categories:
• Web
12
Figure 1.2: The Most Popular Programming Languages
• Mobile
• Enterprise
• Embedded
According to Figure 1.2 we see that Python can be used to program Web Ap-
plications, Enterprise Applications and Embedded Applications.
So far Python is not used or not optimized for creating Mobile Applications. We
have today 2 major Mobile platforms; iOS Applications are mainly programmed
with the Swift Programming language, while Android Applications are mainly
programmed with either Java or Kotlin.
Another survey is the ”Stack Overflow Developer Survey 2018” [4]. See Figure
1.3.
As we can see from [5] and Figure 1.4, Python becomes more and more popular
year by year.
Based on Figure 1.4, the source [5] try to predict the future of Python, see
Figure 1.5.
Based on the surveys and statistics mention above, obviously Python is a pro-
gramming language that you should learn.
Lets summarize:
• Python is fun to learn and use and it is also named after the British
comedy group called Monty Python.
• Python has a simple and flexible code structure and the code is easy to
read.
13
Figure 1.3: The Top Programming Languages - Stack Overflow Survey
14
Figure 1.4: The Incredible Growth of Python
• Databases (such as SQL Server and MySQL) and using the Structured
Query Language (SQL) or the upcoming NoSQL databases
• App Development for the 2 main platforms iOS (XCode using the Swift
Programming Language) and Android (Android Studio using the Java
Programming Language or Kotlin Programming language)
If you have skills in most of the tools, programming languages and frameworks
mention above, you are well suited for working as a full-time programmer or
software engineer.
1.2 MATLAB
If you are looking for MATLAB, please see the following:
https://www.halvorsen.blog/documents/programming/matlab/
15
Figure 1.5: The Future of Python
16
Chapter 2
What is Python?
But this is just the Python core, i.e. the interpreter a very basic editor, and the
minimum needed to create basic Python programs.
Typically you will need more features for solving your tasks. Then you can in-
stall and use separate Python packages created by third parties. These packages
need to be downloaded and installed separately (typically you use something
called PIP), or you choose to use, e.g., a distribution package like Anaconda.
17
Figure 2.1: IDLE - Basic Python Editor
you write Python (.py) files in a text editor and then put those files into the
python interpreter to be executed. Depending on the Editor you are using, this
is either done automatically, or you need to do it manually.
18
With interpreted languages, the code is saved in the same format that you en-
tered. Compiled programs generally run faster than interpreted ones because
interpreted programs must be reduced to machine instructions at run-time. It
is usually easier to develop applications in an interpreted environment because
you don’t have to recompile your application each time you want to test a small
section.
Compiled languages are all translated by running the source code through a
compiler. This results in very efficient code that can be executed any number of
times. The overhead for the translation is incurred just once, when the source
is compiled; thereafter, it need only be loaded and executed.
During the design of an application, you might need to decide whether to use a
compiled language or an interpreted language for the application source code.
Thus, an interpreted language is generally more suited for doing ”ad hoc” cal-
culations or simulations, while compiled languages are better for permanent
applications where speed is in focus.
This is also typical approach for open source software, because everybody can
create their own Python packages and distribute them. In that way you also
find Python packages for almost everything, from Scientific Computing to Web
Development.
19
These packages need to be downloaded and installed separately, or you choose
to use, e.g., a distribution package like Anaconda, where you typically get the
packages you need for scientific computing. With Anaconda you typically get
the same features as with MATLAB.
Lots of Python packages exists, depending on what you are going to solve.
We have Python packages for Desktop GUI Development, Database Develop-
ment, Web Development, Software Development, etc.
Here you can search for, download and install many hundreds Python Packages
within different topics and applications. You can also make your own Python
Packages and distribute them here.
2.3 Anaconda
Anaconda is a distribution package, where you get Python compiler, Python
packages and the Spyder editor, all in one package.
Anaconda includes Python, the Jupyter Notebook, and other commonly used
packages for scientific computing and data science.
20
They offer a free version (Anaconda Distribution) and a paid version (Enter-
prise) Anaconda is available for Windows, macOS, and Linux
Web:
https://www.anaconda.com
Wikipedia:
https://en.wikipedia.org/wiki/Anaconda( P ythond istribution)
Spyder and the Python packages (NumPy, SciPy, Matplotlib, ...) mention above
+++ are included in the Anaconda Distribution.
Which editor you should use depends on your background, what kind of code
editors you have used previously, your programming skills, what your are going
to develop in Python, etc.
Web:
https://www.python.org
21
2.4.2 Visual Studio Code
Visual Studio Code is a source code editor developed by Microsoft for Windows,
Linux and macOS.
Web:
https://code.visualstudio.com
2.4.3 Spyder
Spyder is an open source cross-platform integrated development environment
(IDE) for scientific programming in the Python language.
Web:
https://www.spyder-ide.org
Wikipedia:
https://en.wikipedia.org/wiki/Spyder( sof tware)
Visual Studio (from 2017), has integrated support for Python, it is called
”Python Support in Visual Studio”.
Web:
https://visualstudio.microsoft.com
Wikipedia:
https://en.wikipedia.org/wiki/MicrosoftV isualS tudio
2.4.5 PyCharm
PyCharm is cross-platform, with Windows, macOS and Linux versions. The
Community Edition is free to use, while the Professional Edition (paid version)
has some extra features.
22
Web:
https://www.jetbrains.com/pycharm/
• Wing 101 – a very simplified free version, for teaching beginning pro-
grammers
• Wing Personal – free version that omits some features, for students and
hobbyists
• Wing Pro – a full-featured commercial (paid) version, for professional
programmers
Web:
http://jupyter.org
Wikipedia:
https://en.wikipedia.org/wiki/ProjectJ upyter
2.5 Resources
Here are some useful Python resources:
• The official Python Tutorial
- https://docs.python.org/3.7/tutorial/index.html
• The official Python Documentation
- https://docs.python.org/3.7/index.html
• Python Tutorial (w3schools.com) [13]
- https://www.w3schools.com/python/
23
https://www.python.org
Here you can download the basic Python features in one package, which includes
the Python programming language interpreter, and a basic code editor, or an
integrated development environment, called IDLE. See Figure 2.1
For more advanced Python Programming you typically need a better Code Ed-
itor and additional Packages.
For the basic Python examples in the beginning, the basic Python software
from:
https://www.python.org is good enough.
I suggest you start with the basic Python software in order to learn the basics,
then you can upgrade to a better Editor, install addition Python packages (either
manually or or install Anaconda where ”everything” is included).
The Microsoft Store version of Python 3.7 is a simplified installer for running
scripts and packages.
Microsoft Store version of Python 3.7 is very basic but it’s good enough to run
the simple scripts.
Python 3.7 Microsoft Store edition will receive all updates automatically when
they are released and no manual action is required from your end.
In order to install the Microsoft Store version of Python just open Microsoft
Store in Windows 10 and search for Python.
24
Download and install from:
https://code.visualstudio.com
25