KEMBAR78
Intro-to-Python-Part-1-first-part-edition.pdf
Introduction to Python
Part 1
Brian Gregor
Research Computing Services
Information Services & Technology
RCS Team and Expertise
 Our Team
 Scientific Programmers
 Systems Administrators
 Graphics/Visualization Specialists
 Account/Project Managers
 Special Initiatives (Grants)
 Maintains and administers the Shared
Computing Cluster
 Located in Holyoke, MA
 ~17,000 CPUs running Linux
 Consulting Focus:
 Bioinformatics
 Data Analysis / Statistics
 Molecular modeling
 Geographic Information Systems
 Scientific / Engineering Simulation
 Visualization
 CONTACT US: help@scv.bu.edu
About You
 Working with Python already?
 Have you used any other programming languages?
 Why do you want to learn Python?
Running Python for the Tutorial
 If you have an SCC account, log into it and use Python
there.
 Run:
module load python/3.6.2
spyder &
Links on the Rm 107 Terminals
 On the Desktop open the folders:
Tutorial Files  RCS_Tutorials  Tutorial Files  Introduction to Python
 Copy the whole Introduction to Python folder to the desktop or to a flash
drive.
 When you log out the desktop copy will be deleted!

Run Spyder
 Click on the Start Menu in
the bottom left corner and
type: spyder
 After a second or two it will
be found. Click to run it.
Running Python: Installing it yourself
 There are many ways to install Python on your laptop/PC/etc.
 https://www.python.org/downloads/
 https://www.anaconda.com/download/
 https://www.enthought.com/product/enthought-python-distribution/
 https://python-xy.github.io/
BU’s most popular option: Anaconda
 https://www.anaconda.com/download/
 Anaconda is a packaged set of programs including the Python language,
a huge number of libraries, and several tools.
 These include the Spyder development environment and Jupyter
notebooks.
 Anaconda can be used on the SCC, with some caveats.
Python 2 vs. 3
 Python 2: released in 2000, Python 3 released in 2008
 Python 2 is in “maintenance mode” – no new features are expected
 Py3 is not completely compatible with Py2
 For learning Python these differences are almost negligible
 Which one to learn?
 If your research group / advisor / boss / friends all use one version that’s probably the best one
for you to choose.
 If you have a compelling reason to focus on one vs the other
 Otherwise just choose Py3. This is where the language development is happening!
Spyder – a Python development environment
 Pros:
 Faster development
 Easier debugging!
 Helps organize code
 Increased efficiency
 Cons
 Learning curve
 Can add complexity to smaller
problems
Tutorial Outline – Part 1
 What is Python?
 Operators
 Variables
 If / Else
 Lists
 Loops
 Functions
Tutorial Outline – Part 2
 Functions
 Tuples and dictionaries
 Modules
 numpy and matplotlib modules
 Script setup
 Classes
 Debugging
Tutorial Outline – Part 1
 What is Python?
 Operators
 Variables
 If / Else
 Lists
 Loops
 Functions
What is Python?
 Python…
 …is a general purpose interpreted programming language.
 …is a language that supports multiple approaches to software design,
principally structured and object-oriented programming.
 …provides automatic memory management and garbage collection
 …is extensible
 …is dynamically typed.
 By the end of the tutorial you will understand all of these terms!
Some History
 “Over six years ago, in December 1989, I was looking for a "hobby"
programming project that would keep me occupied during the week
around Christmas…I chose Python as a working title for the project, being
in a slightly irreverent mood (and a big fan of Monty Python's Flying
Circus).”
–Python creator Guido Van Rossum, from the foreward to Programming Python (1st
ed.)
 Goals:
 An easy and intuitive language just as powerful as major competitors
 Open source, so anyone can contribute to its development
 Code that is as understandable as plain English
 Suitability for everyday tasks, allowing for short development times
Compiled Languages (ex. C++ or Fortran)
Interpreted Languages (ex. Python or R)
Source code files
prog.py
math.py
Python interpreter
bytecode
conversion
Python interpreter:
follows bytecode
instructions
python prog.py
 Clearly, a lot less work is done to get a program to start running compared with compiled
languages!
 Bytecodes are an internal representation of the text program that can be efficiently run by
the Python interpreter.
 The interpreter itself is written in C and is a compiled program.
Comparison
Interpreted
 Faster development
 Easier debugging
 Debugging can stop anywhere, swap in
new code, more control over state of
program
 (almost always) takes less code to
get things done
 Slower programs
 Sometimes as fast as compiled, rarely
faster
 Less control over program behavior
Compiled
 Longer development
 Edit / compile / test cycle is longer!
 Harder to debug
 Usually requires a special compilation
 (almost always) takes more code to
get things done
 Faster
 Compiled code runs directly on CPU
 Can communicate directly with
hardware
 More control over program behavior
The Python Prompt
 The standard Python prompt looks like this:
 The IPython prompt in Spyder looks like this:
 IPython adds some handy behavior around the standard Python prompt.
The Spyder IDE
editor
Python console
Variable and file explorer
Tutorial Outline – Part 1
 What is Python?
 Operators
 Variables
 If / Else
 Lists
 Loops
 Functions
Operators
 Python supports a wide variety of operators which act like functions, i.e.
they do something and return a value:
 Arithmetic: + - * / % **
 Logical: and or not
 Comparison: > < >= <= != ==
 Assignment: =
 Bitwise: & | ~ ^ >> <<
 Identity: is is not
 Membership: in not in
Try Python as a calculator
 Go to the Python prompt.
 Try out some arithmetic operators:
+ - * / % ** == ( )
 Can you identify what they all do?
Try Python as a calculator
 Go to the Python prompt.
 Try out some arithmetic operators:
+ - * / % ** == ()
Operator Function
+ Addition
- Subtraction
* Multiplication
/ Division (Note: 3 / 4 is 0.75!)
% Remainder (aka modulus)
** Exponentiation
== Equals
More Operators
 Try some comparisons and Boolean operators. True and False are the
keywords indicating those values:
Comments
 # is the Python comment character. On
any line everything after the # character
is ignored by Python.
 There is no multi-line comment
character as in C or C++.
 An editor like Spyder makes it very easy
to comment blocks of code or vice-
versa. Check the Edit menu
Tutorial Outline – Part 1
 What is Python?
 Operators
 Variables
 If / Else
 Lists
 Loops
 Functions
Variables
 Variables are assigned values using the = operator
 In the Python console, typing the name of a variable
prints its value
 Not true in a script!
 Variables can be reassigned at any time
 Variable type is not specified
 Types can be changed with a reassignment
Variables cont’d
 Variables refer to a value stored in memory and are created when first
assigned
 Variable names:
 Must begin with a letter (a - z, A - B) or underscore _
 Other characters can be letters, numbers or _
 Are case sensitive: capitalization counts!
 Can be any reasonable length
 Assignment can be done en masse:
x = y = z = 1
 Multiple assignments can be done on one line:
x, y, z = 1, 2.39, 'cat'
Try these out!
Variable Data Types
 Python determines data types for variables based on the context
 The type is identified when the program runs, called dynamic typing
 Compare with compiled languages like C++ or Fortran, where types are identified by
the programmer and by the compiler before the program is run.
 Run-time typing is very convenient and helps with rapid code
development…but requires the programmer to do more code testing for
reliability.
 The larger the program, the more significant the burden this is!!
Variable Data Types
 Available basic types:
 Numbers: Integers and floating point (64-bit)
 Complex numbers: x = complex(3,1) or x = 3+1j
 Strings, using double or single quotes: "cat" 'dog'
 Boolean: True and False
 Lists, dictionaries, and tuples
 These hold collections of variables
 Specialty types: files, network connections, objects
 Custom types can be defined. This will be covered in Part 2.
Variable modifying operators
 Some additional arithmetic operators that modify variable values:
 The += operator is by far the most commonly used of these!
Operator Effect Equivalent to…
x += y Add the value of y to x x = x + y
x -= y Subtract the value of y
from x
x = x - y
x *= y Multiply the value of x
by y
x = x * y
x /= y Divide the value of x by
y
x = x / y
Check a type
 A built-in function, type(), returns the
type of the data assigned to a variable.
 It’s unusual to need to use this in a
program, but it’s available if you need it!
 Try this out in Python – do some
assignments and reassignments and
see what type() returns.
Strings
 Strings are a basic data type in Python.
 Indicated using pairs of single '' or
double "" quotes.
 Multiline strings use a triple set of
quotes (single or double) to start and
end them.
 Strings have many built-in functions…
String functions
 In the Python console, create a string variable
called mystr
 type: dir(mystr)
 Try out some functions:
 Need help? Try:
help(mystr.title)
len(mystr)
mystr.upper()
mystr.title()
mystr.isdecimal()
help(mystr.isdecimal)
The len() function
 The len() function is not a string specific function.
 It’ll return the length of any Python variable that contains
some sort of countable thing.
 In the case of strings it is the number of characters in the
string.
String operators
 Try using the + and += operators with strings in the
Python console.
 + concatenates strings.
 += appends strings.
 Index strings using square brackets, starting at 0.
String operators
 Changing elements of a string by an index is not allowed:
 Python strings are immutable, i.e. they can’t be changed.
String Substitutions
 Python provides an easy way
to stick variable values into
strings called substitutions
 Syntax for one variable:
 For more than one:
%s means sub in
value
variable name
comes after a %
Variables are listed in the
substitution order inside ()
Variables with operators
 Operators can be combined
freely with variables and
variable assignment.
 Try some out again!
 This time type them into the
editor. Click the green
triangle to run the file. Save
the file and it will run.
Spyder setup
 The first time you run a script Spyder
will prompt you with a setup dialog:
 Just click “Run” to run the script. This
will only appear once.
 The Variable Explorer
window is displaying
variables and types
defined in the console.
 Only the print function
printed values from the
script.
 Key difference between
scripts and the console!
Tutorial Outline – Part 1
 What is Python?
 Operators
 Variables
 If / Else
 Lists
 Loops
 Functions
If / Else
 If, elif, and else statements are used to implement conditional program
behavior
 Syntax:
 elif and else are not required – used to chain together multiple conditional
statements or provide a default case.
if Boolean_value:
…some code
elif Boolean_value:
…some other code
else:
…more code
 Try out something like this in the Spyder
editor.
 Do you get any error messages in the
console?
 Try using an elif or else statement by
itself without a preceding if. What error
message comes up?
Indentation of code…easier on the eyes!
 C:
or
 Matlab:
or
The Use of Indentation
 Python uses whitespace (spaces or tabs) to define code blocks.
 Code blocks are logical groupings of commands. They are always
preceded by a colon :
 This is due to an emphasis on code readability.
 Fewer characters to type and easier on the eyes!
 Spaces or tabs can be mixed in a file but not within a code block.
A code block
Another code block
If / Else code blocks
 Python knows a code block has
ended when the indentation is
removed.
 Code blocks can be nested
inside others therefore if-elif-else
statements can be freely nested
within others. • Note the lack of “end if”,
“end”, curly braces, etc.
File vs. Console Code Blocks
 Python knows a code block
has ended when the
indentation is removed.
 EXCEPT when typing code
into the Python console.
There an empty line indicates
the end of a code block.
 Let’s try this out in Spyder
 This sometimes causes
problems when pasting code
into the console.
 This issue is something the
IPython console helps with.
Tutorial Outline – Part 1
 What is Python?
 Operators
 Variables
 If / Else
 Lists
 Loops
 Functions
Lists
 A Python list is a general purpose 1-dimensional container for variables.
 i.e. it is a row, column, or vector of things
 Lots of things in Python act like lists or use list-style notation.
 Variables in a list can be of any type at any location, including other lists.
 Lists can change in size: elements can be added or removed
 Lists are not meant for high performance numerical computing!
 We’ll cover a library for that in Part 2
 Please don’t implement your own linear algebra with Python lists unless it’s for your
own educational interests.
Making a list and checking it twice…
 Make a list with [ ] brackets.
 Append with the append() function
 Create a list with some initial elements
 Create a list with N repeated elements
Try these out yourself!
Edit the file in Spyder and run it.
Add some print() calls to see the lists.
List functions
 Try dir(list_1)
 Like strings, lists have a number of
built-in functions
 Let’s try out a few…
 Also try the len() function to see how
many things are in the list: len(list_1)
Accessing List Elements
 Lists are accessed by index.
 All of this applies to accessing strings by index as well!
 Index #’s start at 0.
 List: x=['a', 'b', 'c', 'd' ,'e']
 First element: x[0]
 Nth element: x[2]
 Last element: x[-1]
 Next-to-last: x[-2]
List Indexing
 Elements in a list are accessed by an index number.
 Index #’s start at 0.
 List: x=['a', 'b', 'c', 'd' ,'e']
 First element: x[0]  'a'
 Nth element: x[2]  'c'
 Last element: x[-1] 'e'
 Next-to-last: x[-2] 'd'
List Slicing
 List: x=['a', 'b', 'c', 'd' ,'e']
 Slice syntax: x[start:end:step]
 The start value is inclusive, the end value is exclusive.
 Step is optional and defaults to 1.
 Leaving out the end value means “go to the end”
 Slicing always returns a new list copied from the existing list
 x[0:1]  ['a']
 x[0:2]  ['a','b']
 x[-3:]  ['c', 'd', 'e'] # Third from the end to the end
 x[2:5:2]  ['c', 'e']
List assignments and deletions
 Lists can have their elements overwritten or deleted (with the del) command.
 List: x=['a', 'b', 'c', 'd' ,'e']
 x[0] = -3.14  x is now [-3.14, 'b', 'c', 'd', 'e']
 del x[-1]  x is now [-3.14, 'b', 'c', 'd']
DIY Lists
 In the Spyder editor try the following things:
 Assign some lists to some variables.
 Try an empty list, repeated elements, initial set of elements
 Add two lists: a + b What happens?
 Try list indexing, deletion, functions from dir(my_list)
 Try assigning the result of a list slice to a new variable
• Go to the menu FileNew File
• Enter your list commands there
• Give the file a name when you save it
• Use print() to print out results
More on Lists and Variables
 Open the sample file list_variables.py
but don’t run it yet!
 What do you think will be printed?
 Now run it…were you right?
Variables and Memory Locations
 Variables refer to a value stored in
memory.
 y = x does not mean “make a copy of
the list x and assign it to y” it means
“make a copy of the memory location in
x and assign it to y”
 x is not the list it’s just a reference to it.
x
y
Copying Lists
 How to copy (2 ways…there are more!):
 y = x[:] or y=list(x)
 In list_variables.py uncomment the code at the bottom and run it.
 This behavior seems weird at first. It will make more sense when calling
functions.
Tutorial Outline – Part 1
 What is Python?
 Operators
 Variables
 If / Else
 Lists
 Loops
 Functions
While Loops
 While loops have a condition and a
code block.
 the indentation indicates what’s in the while loop.
 The loop runs until the condition is false.
 The break keyword will stop a while
loop running.
 In the Spyder edit enter in some
loops like these. Save and run them
one at a time. What happens with
the 1st loop?
For loops
 for loops are a little different. They
loop through a collection of things.
 The for loop syntax has a collection
and a code block.
 Each element in the collection is accessed in
order by a reference variable
 Each element can be used in the code block.
 The break keyword can be used in for
loops too.
collection
In-loop reference
variable for each
collection element
The code block
Processing lists element-by-element
 A for loop is a convenient way to process every element in a list.
 There are several ways:
 Loop over the list elements
 Loop over a list of index values and access the list by index
 Do both at the same time
 Use a shorthand syntax called a list comprehension
 Open the file looping_lists.py
 Let’s look at code samples for each of these.
The range() function
 The range() function auto-generates sequences of numbers that can be
used for indexing into lists.
 Syntax: range(start, exclusive end, increment)
 range(0,4)  produces the sequence of numbers 0,1,2,3
 range(-3,15,3)  -3,0,3,6,9,12
 range(4,-3,2)  4,2,0,-2
 Try this: print(range(4))
Lists With Loops
 Open the file read_a_file.py
 This is an example of reading a file
into a list. The file is shown to the
right, numbers.txt
 We want to read the lines in the file
into a list of strings (1 string for each
line), then extract separate lists of
the odd and even numbers.
odds  [1,3,5…]
evens  [2,4,6…]
• Edit read_a_file.py and try to
figure this out.
• A solution is available in
read_a_file_solved.py
• Use the editor and run the code
frequently after small changes!

Intro-to-Python-Part-1-first-part-edition.pdf

  • 1.
    Introduction to Python Part1 Brian Gregor Research Computing Services Information Services & Technology
  • 2.
    RCS Team andExpertise  Our Team  Scientific Programmers  Systems Administrators  Graphics/Visualization Specialists  Account/Project Managers  Special Initiatives (Grants)  Maintains and administers the Shared Computing Cluster  Located in Holyoke, MA  ~17,000 CPUs running Linux  Consulting Focus:  Bioinformatics  Data Analysis / Statistics  Molecular modeling  Geographic Information Systems  Scientific / Engineering Simulation  Visualization  CONTACT US: help@scv.bu.edu
  • 3.
    About You  Workingwith Python already?  Have you used any other programming languages?  Why do you want to learn Python?
  • 4.
    Running Python forthe Tutorial  If you have an SCC account, log into it and use Python there.  Run: module load python/3.6.2 spyder &
  • 5.
    Links on theRm 107 Terminals  On the Desktop open the folders: Tutorial Files  RCS_Tutorials  Tutorial Files  Introduction to Python  Copy the whole Introduction to Python folder to the desktop or to a flash drive.  When you log out the desktop copy will be deleted! 
  • 6.
    Run Spyder  Clickon the Start Menu in the bottom left corner and type: spyder  After a second or two it will be found. Click to run it.
  • 7.
    Running Python: Installingit yourself  There are many ways to install Python on your laptop/PC/etc.  https://www.python.org/downloads/  https://www.anaconda.com/download/  https://www.enthought.com/product/enthought-python-distribution/  https://python-xy.github.io/
  • 8.
    BU’s most popularoption: Anaconda  https://www.anaconda.com/download/  Anaconda is a packaged set of programs including the Python language, a huge number of libraries, and several tools.  These include the Spyder development environment and Jupyter notebooks.  Anaconda can be used on the SCC, with some caveats.
  • 9.
    Python 2 vs.3  Python 2: released in 2000, Python 3 released in 2008  Python 2 is in “maintenance mode” – no new features are expected  Py3 is not completely compatible with Py2  For learning Python these differences are almost negligible  Which one to learn?  If your research group / advisor / boss / friends all use one version that’s probably the best one for you to choose.  If you have a compelling reason to focus on one vs the other  Otherwise just choose Py3. This is where the language development is happening!
  • 10.
    Spyder – aPython development environment  Pros:  Faster development  Easier debugging!  Helps organize code  Increased efficiency  Cons  Learning curve  Can add complexity to smaller problems
  • 11.
    Tutorial Outline –Part 1  What is Python?  Operators  Variables  If / Else  Lists  Loops  Functions
  • 12.
    Tutorial Outline –Part 2  Functions  Tuples and dictionaries  Modules  numpy and matplotlib modules  Script setup  Classes  Debugging
  • 13.
    Tutorial Outline –Part 1  What is Python?  Operators  Variables  If / Else  Lists  Loops  Functions
  • 14.
    What is Python? Python…  …is a general purpose interpreted programming language.  …is a language that supports multiple approaches to software design, principally structured and object-oriented programming.  …provides automatic memory management and garbage collection  …is extensible  …is dynamically typed.  By the end of the tutorial you will understand all of these terms!
  • 15.
    Some History  “Oversix years ago, in December 1989, I was looking for a "hobby" programming project that would keep me occupied during the week around Christmas…I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python's Flying Circus).” –Python creator Guido Van Rossum, from the foreward to Programming Python (1st ed.)  Goals:  An easy and intuitive language just as powerful as major competitors  Open source, so anyone can contribute to its development  Code that is as understandable as plain English  Suitability for everyday tasks, allowing for short development times
  • 16.
    Compiled Languages (ex.C++ or Fortran)
  • 17.
    Interpreted Languages (ex.Python or R) Source code files prog.py math.py Python interpreter bytecode conversion Python interpreter: follows bytecode instructions python prog.py  Clearly, a lot less work is done to get a program to start running compared with compiled languages!  Bytecodes are an internal representation of the text program that can be efficiently run by the Python interpreter.  The interpreter itself is written in C and is a compiled program.
  • 18.
    Comparison Interpreted  Faster development Easier debugging  Debugging can stop anywhere, swap in new code, more control over state of program  (almost always) takes less code to get things done  Slower programs  Sometimes as fast as compiled, rarely faster  Less control over program behavior Compiled  Longer development  Edit / compile / test cycle is longer!  Harder to debug  Usually requires a special compilation  (almost always) takes more code to get things done  Faster  Compiled code runs directly on CPU  Can communicate directly with hardware  More control over program behavior
  • 19.
    The Python Prompt The standard Python prompt looks like this:  The IPython prompt in Spyder looks like this:  IPython adds some handy behavior around the standard Python prompt.
  • 20.
    The Spyder IDE editor Pythonconsole Variable and file explorer
  • 21.
    Tutorial Outline –Part 1  What is Python?  Operators  Variables  If / Else  Lists  Loops  Functions
  • 22.
    Operators  Python supportsa wide variety of operators which act like functions, i.e. they do something and return a value:  Arithmetic: + - * / % **  Logical: and or not  Comparison: > < >= <= != ==  Assignment: =  Bitwise: & | ~ ^ >> <<  Identity: is is not  Membership: in not in
  • 23.
    Try Python asa calculator  Go to the Python prompt.  Try out some arithmetic operators: + - * / % ** == ( )  Can you identify what they all do?
  • 24.
    Try Python asa calculator  Go to the Python prompt.  Try out some arithmetic operators: + - * / % ** == () Operator Function + Addition - Subtraction * Multiplication / Division (Note: 3 / 4 is 0.75!) % Remainder (aka modulus) ** Exponentiation == Equals
  • 25.
    More Operators  Trysome comparisons and Boolean operators. True and False are the keywords indicating those values:
  • 26.
    Comments  # isthe Python comment character. On any line everything after the # character is ignored by Python.  There is no multi-line comment character as in C or C++.  An editor like Spyder makes it very easy to comment blocks of code or vice- versa. Check the Edit menu
  • 27.
    Tutorial Outline –Part 1  What is Python?  Operators  Variables  If / Else  Lists  Loops  Functions
  • 28.
    Variables  Variables areassigned values using the = operator  In the Python console, typing the name of a variable prints its value  Not true in a script!  Variables can be reassigned at any time  Variable type is not specified  Types can be changed with a reassignment
  • 29.
    Variables cont’d  Variablesrefer to a value stored in memory and are created when first assigned  Variable names:  Must begin with a letter (a - z, A - B) or underscore _  Other characters can be letters, numbers or _  Are case sensitive: capitalization counts!  Can be any reasonable length  Assignment can be done en masse: x = y = z = 1  Multiple assignments can be done on one line: x, y, z = 1, 2.39, 'cat' Try these out!
  • 30.
    Variable Data Types Python determines data types for variables based on the context  The type is identified when the program runs, called dynamic typing  Compare with compiled languages like C++ or Fortran, where types are identified by the programmer and by the compiler before the program is run.  Run-time typing is very convenient and helps with rapid code development…but requires the programmer to do more code testing for reliability.  The larger the program, the more significant the burden this is!!
  • 31.
    Variable Data Types Available basic types:  Numbers: Integers and floating point (64-bit)  Complex numbers: x = complex(3,1) or x = 3+1j  Strings, using double or single quotes: "cat" 'dog'  Boolean: True and False  Lists, dictionaries, and tuples  These hold collections of variables  Specialty types: files, network connections, objects  Custom types can be defined. This will be covered in Part 2.
  • 32.
    Variable modifying operators Some additional arithmetic operators that modify variable values:  The += operator is by far the most commonly used of these! Operator Effect Equivalent to… x += y Add the value of y to x x = x + y x -= y Subtract the value of y from x x = x - y x *= y Multiply the value of x by y x = x * y x /= y Divide the value of x by y x = x / y
  • 33.
    Check a type A built-in function, type(), returns the type of the data assigned to a variable.  It’s unusual to need to use this in a program, but it’s available if you need it!  Try this out in Python – do some assignments and reassignments and see what type() returns.
  • 34.
    Strings  Strings area basic data type in Python.  Indicated using pairs of single '' or double "" quotes.  Multiline strings use a triple set of quotes (single or double) to start and end them.  Strings have many built-in functions…
  • 35.
    String functions  Inthe Python console, create a string variable called mystr  type: dir(mystr)  Try out some functions:  Need help? Try: help(mystr.title) len(mystr) mystr.upper() mystr.title() mystr.isdecimal() help(mystr.isdecimal)
  • 36.
    The len() function The len() function is not a string specific function.  It’ll return the length of any Python variable that contains some sort of countable thing.  In the case of strings it is the number of characters in the string.
  • 37.
    String operators  Tryusing the + and += operators with strings in the Python console.  + concatenates strings.  += appends strings.  Index strings using square brackets, starting at 0.
  • 38.
    String operators  Changingelements of a string by an index is not allowed:  Python strings are immutable, i.e. they can’t be changed.
  • 39.
    String Substitutions  Pythonprovides an easy way to stick variable values into strings called substitutions  Syntax for one variable:  For more than one: %s means sub in value variable name comes after a % Variables are listed in the substitution order inside ()
  • 40.
    Variables with operators Operators can be combined freely with variables and variable assignment.  Try some out again!  This time type them into the editor. Click the green triangle to run the file. Save the file and it will run.
  • 41.
    Spyder setup  Thefirst time you run a script Spyder will prompt you with a setup dialog:  Just click “Run” to run the script. This will only appear once.
  • 42.
     The VariableExplorer window is displaying variables and types defined in the console.  Only the print function printed values from the script.  Key difference between scripts and the console!
  • 43.
    Tutorial Outline –Part 1  What is Python?  Operators  Variables  If / Else  Lists  Loops  Functions
  • 44.
    If / Else If, elif, and else statements are used to implement conditional program behavior  Syntax:  elif and else are not required – used to chain together multiple conditional statements or provide a default case. if Boolean_value: …some code elif Boolean_value: …some other code else: …more code
  • 45.
     Try outsomething like this in the Spyder editor.  Do you get any error messages in the console?  Try using an elif or else statement by itself without a preceding if. What error message comes up?
  • 46.
    Indentation of code…easieron the eyes!  C: or  Matlab: or
  • 47.
    The Use ofIndentation  Python uses whitespace (spaces or tabs) to define code blocks.  Code blocks are logical groupings of commands. They are always preceded by a colon :  This is due to an emphasis on code readability.  Fewer characters to type and easier on the eyes!  Spaces or tabs can be mixed in a file but not within a code block. A code block Another code block
  • 48.
    If / Elsecode blocks  Python knows a code block has ended when the indentation is removed.  Code blocks can be nested inside others therefore if-elif-else statements can be freely nested within others. • Note the lack of “end if”, “end”, curly braces, etc.
  • 49.
    File vs. ConsoleCode Blocks  Python knows a code block has ended when the indentation is removed.  EXCEPT when typing code into the Python console. There an empty line indicates the end of a code block.  Let’s try this out in Spyder  This sometimes causes problems when pasting code into the console.  This issue is something the IPython console helps with.
  • 50.
    Tutorial Outline –Part 1  What is Python?  Operators  Variables  If / Else  Lists  Loops  Functions
  • 51.
    Lists  A Pythonlist is a general purpose 1-dimensional container for variables.  i.e. it is a row, column, or vector of things  Lots of things in Python act like lists or use list-style notation.  Variables in a list can be of any type at any location, including other lists.  Lists can change in size: elements can be added or removed  Lists are not meant for high performance numerical computing!  We’ll cover a library for that in Part 2  Please don’t implement your own linear algebra with Python lists unless it’s for your own educational interests.
  • 52.
    Making a listand checking it twice…  Make a list with [ ] brackets.  Append with the append() function  Create a list with some initial elements  Create a list with N repeated elements Try these out yourself! Edit the file in Spyder and run it. Add some print() calls to see the lists.
  • 53.
    List functions  Trydir(list_1)  Like strings, lists have a number of built-in functions  Let’s try out a few…  Also try the len() function to see how many things are in the list: len(list_1)
  • 54.
    Accessing List Elements Lists are accessed by index.  All of this applies to accessing strings by index as well!  Index #’s start at 0.  List: x=['a', 'b', 'c', 'd' ,'e']  First element: x[0]  Nth element: x[2]  Last element: x[-1]  Next-to-last: x[-2]
  • 55.
    List Indexing  Elementsin a list are accessed by an index number.  Index #’s start at 0.  List: x=['a', 'b', 'c', 'd' ,'e']  First element: x[0]  'a'  Nth element: x[2]  'c'  Last element: x[-1] 'e'  Next-to-last: x[-2] 'd'
  • 56.
    List Slicing  List:x=['a', 'b', 'c', 'd' ,'e']  Slice syntax: x[start:end:step]  The start value is inclusive, the end value is exclusive.  Step is optional and defaults to 1.  Leaving out the end value means “go to the end”  Slicing always returns a new list copied from the existing list  x[0:1]  ['a']  x[0:2]  ['a','b']  x[-3:]  ['c', 'd', 'e'] # Third from the end to the end  x[2:5:2]  ['c', 'e']
  • 57.
    List assignments anddeletions  Lists can have their elements overwritten or deleted (with the del) command.  List: x=['a', 'b', 'c', 'd' ,'e']  x[0] = -3.14  x is now [-3.14, 'b', 'c', 'd', 'e']  del x[-1]  x is now [-3.14, 'b', 'c', 'd']
  • 58.
    DIY Lists  Inthe Spyder editor try the following things:  Assign some lists to some variables.  Try an empty list, repeated elements, initial set of elements  Add two lists: a + b What happens?  Try list indexing, deletion, functions from dir(my_list)  Try assigning the result of a list slice to a new variable • Go to the menu FileNew File • Enter your list commands there • Give the file a name when you save it • Use print() to print out results
  • 59.
    More on Listsand Variables  Open the sample file list_variables.py but don’t run it yet!  What do you think will be printed?  Now run it…were you right?
  • 60.
    Variables and MemoryLocations  Variables refer to a value stored in memory.  y = x does not mean “make a copy of the list x and assign it to y” it means “make a copy of the memory location in x and assign it to y”  x is not the list it’s just a reference to it. x y
  • 61.
    Copying Lists  Howto copy (2 ways…there are more!):  y = x[:] or y=list(x)  In list_variables.py uncomment the code at the bottom and run it.  This behavior seems weird at first. It will make more sense when calling functions.
  • 62.
    Tutorial Outline –Part 1  What is Python?  Operators  Variables  If / Else  Lists  Loops  Functions
  • 63.
    While Loops  Whileloops have a condition and a code block.  the indentation indicates what’s in the while loop.  The loop runs until the condition is false.  The break keyword will stop a while loop running.  In the Spyder edit enter in some loops like these. Save and run them one at a time. What happens with the 1st loop?
  • 64.
    For loops  forloops are a little different. They loop through a collection of things.  The for loop syntax has a collection and a code block.  Each element in the collection is accessed in order by a reference variable  Each element can be used in the code block.  The break keyword can be used in for loops too. collection In-loop reference variable for each collection element The code block
  • 65.
    Processing lists element-by-element A for loop is a convenient way to process every element in a list.  There are several ways:  Loop over the list elements  Loop over a list of index values and access the list by index  Do both at the same time  Use a shorthand syntax called a list comprehension  Open the file looping_lists.py  Let’s look at code samples for each of these.
  • 66.
    The range() function The range() function auto-generates sequences of numbers that can be used for indexing into lists.  Syntax: range(start, exclusive end, increment)  range(0,4)  produces the sequence of numbers 0,1,2,3  range(-3,15,3)  -3,0,3,6,9,12  range(4,-3,2)  4,2,0,-2  Try this: print(range(4))
  • 67.
    Lists With Loops Open the file read_a_file.py  This is an example of reading a file into a list. The file is shown to the right, numbers.txt  We want to read the lines in the file into a list of strings (1 string for each line), then extract separate lists of the odd and even numbers. odds  [1,3,5…] evens  [2,4,6…] • Edit read_a_file.py and try to figure this out. • A solution is available in read_a_file_solved.py • Use the editor and run the code frequently after small changes!