Python fundamentals

Python is a very powerful tool for automating tasks that would otherwise be time-consuming or impossible to do by hand or other conventional tools. Here, we’ll go over basic ways to use Python to introduce you to a slice of its potential.

Materials:

Question 1: Do it yourself!

Write a message and print it out!

#  INSTRUCTIONS:   Write a message in the quotes.
#  type Shift+Enter to run the cell.
message = ''

print(message)

Python as a calculator

An incredibly simple yet pivotal role of Python is to perform math calculations (addition, subtraction, multiplication, etc.). We show how to basic action below.

You’ll see the symbol # used often. These are comments, and they are used to write descriptions. Any characters following # are not run or executed.

3 + 4 * 5  # addition and multiplication
23

After we run a cell, an output is displayed below.

You may have noticed from that example that order of operations mattered for that calculation. You can parentheses too if you want to group calculations.

12 / (6 - 4) # division and substraction
6.0

Exponentiation (e.g. \(2^3\)) looks a little bit odd in Python as it uses ** instead of a more traditional ^.

2 ** 3 # exponentiation
8

Question 2: Writing math

Calculate the following value in Python:

\[\frac{25}{(35 - 3)^3}\]
Solution

Remember to include parentheses when needed, but Python also follows standard order of operations.

25/(35-3)**3

Assigning Variables

A foundational tool in Python is assigning values to variables. We do this with the = operator.

x = 50 # x is 50

This sets the variable x to be 50, an integer, or int. This value of x is now stored in our notebook, and we can access this value in other cells until the notebook is reset. For instance, subtracting 20 from x prints out a value of 30.

# What if I use x again in a different cell?
x - 20
30

Note

Variables persist between cells once they have been run (executed).

If we ever want to check the value of any variable, we can use the built-in print() command to display the value.

y = 35
print(y)
35

We can also assign the value of one variable to another variable. If we execute x = y, x takes the current value of y and assigns that to x.

Warning

y will be unaffected by this assignment. x = y should be interpretted as “let x take the current value of y”.

x = y
print(x)
print(y)
35
35

If we change y to be a different value, x will be unaffected.

y = 3.8
print(x) # will not always be the same value as y
print(y)
35
3.8

Variables only change value when something is assigned to them.

They are not like spreadsheets where a cell can depend on another and update automatically.

Question 3: Swapping values

Given the code below, what is the value of the variable swap by the end of the block?

x = 1.0
y = 3.0
swap = x
x = y
y = swap
Solution

The only statements here that effect the value of swap are x = 1.0 and swap = x.

1.0

What’s in a name? Variable name conventions

  • Use only letters, digits, and underscores (_)

  • can use camelcase (capitalizeEveryWord)

  • Start with a letter (typically lower case)

  • Variable names are case sensitive

  • Use meaningful names!

Variables must be created before they are used. Otherwise, Python will throw an error.

print(z) # we haven't initialized z yet!
NameError: name 'z' is not defined

In the following example, we specify a value for a variable after we print it. This will not work. Within a cell, the statements are executed from top to bottom. If the Python interpreter finds an error, execution stops.

print(last_name) # last name does not exist yet
# What happens if I try to correct my error in the same cell?
last_name='Montoya'
print(last_name)

If we want to increase a value of a variable by a certain value, we can use the += operator. Here, we add 2 to the current value of x.

print(x) # before incrementing
x += 2
print(x) # after incrementing
35
37

This is equivalent to running x = x + 2. We can also do similar operations with subtraction, multiplication, and division.

x = 8
x -= 2 # 8 - 2
print("subtraction:", x)
x *= 4 # 6 * 4
print("multiplication:", x)
x /= 6 # 24 / 6
print("division:", x)
subtraction: 6
multiplication: 24
division: 4.0

Question 4: Using variables

a has been initialized to be 25. Assign variable b to be 5 less than a without using b = 20. Print the value of b.

a = 25
# write your code here:
Solution

We can use variable a to assign value of a-5 to b.

a = 25
b = a - 5
print(b)

Strings

So far, we have only assigned integer values to variables. We can also assign values characters to variables. These are called strings. You can specify a string by putting text within either single quotation ('single') or double quotation marks ("double").

my_name = "Inigo Montoya"
print(my_name)
Inigo Montoya

We can print out a string directly in print(), as well.

print("My name is")
print(my_name) # will print on a second line
My name is
Inigo Montoya

We can also print out multiple values in a single print() statement.

print("My name is", my_name) # print() adds a space between the values
My name is Inigo Montoya

If we print out a string with an integer variable, it will convert the integer to a string in order to print it.

num_balloons = 25
print("I would like", num_balloons, "balloons.")
I would like 25 balloons.

Question 5: String syntax

What will happen if you run the following code?

last_name = Montoya
print(last_name)
Solution

We receive a NameError because we have not defined the varable Montoya previously. You may also see additional text describing more details about the error, such as where it occurred.

NameError: name 'Montoya' is not defined

Data Types

  • integers (int) represent positive or negative whole numbers like 3 or -512

  • floating point numbers (float) represent real numbers like 3.14159 or -2.5

  • character strings (str) are text

    • written with single or double quotes (matching)

    • quotations aren’t printed when the string is displayed

# Find the type with function type()
print(type(52))
print(type("Inigo Montoya"))
print(type(3.14))

# notice we are nesting functions -> type() is inside of print()
<class 'int'>
<class 'int'>
<class 'str'>
<class 'float'>

Combining and adding data types

The + operator concatenates (adds) strings together. However if you try to add an integer and a string, you will receive an error.

print("several" + " concatenated" + " strings") # need to manually add spaces when concatenating
several concatenated strings
print(1 + "2") # adding string to int doesn't work
TypeError: unsupported operand type(s) for +: 'int' and 'str'

We can convert an int to a string with the str() function to combine them. We must convert numbers to strings or vice versa when operating on them. Consistency is key!

print(1+int('2')) # convert string to int to do addition
print(str(1)+'2') # convert int to string to concatenate
3
12

However, we can mix integers and floats freely in operations. This will result in the final value being a float.

print('half is', 1/2.0
print('three squared is', 3.0 ** 2)
half is 0.5
three squared is 9.0

Length

Strings have length (how many characters long they are), which can find with len(). Floats and ints do not have length.

print( len("a long string") ) # spaces count in length
13
print( len(3.1415) ) # will get an error

Division Types with numbers

  • // operator performs integer floor division (rounds down to nearest integer)

  • / operator performs floating point division (returns a number with a decimal point)

  • % modulo operator returns the remainder from integer division

print(5//3)
print(5/3)
print(5%3)
1
1.6666666666666667
2

Question 6: Picking between data types

Choose the type (int, float, str) that each of these descriptions should be:

  1. Time elapsed from the start of the year until now in days.

  2. Serial code of a piece of lab equipment

  3. A lab specimen’s age

Solution
  1. int if only considering full days, float otherwise.

  2. str: Identifiers can often have letters or leading zeros.

  3. Depends on the specimen. If using countable units, int, otherwise float.

Question 7: Quadratic formula

A quadratic equation has the following form:

\[0 = ax^2 + bx + c\]

We can use the quadratic forumula (below) to find the roots of a quadratic equation.

\[x = \frac{-b\pm\sqrt{b^2-4ac}}{2a}\]

Create variables \(a\), \(b\), and \(c\) with the value of \(4\), \(-25\), and \(20\), respectively.

Calculate the values of \(x\) for a quadratic equation with \(a=4\), \(b=-25\), and \(c = 20\). Remember to calculate the values for both plus and minus (\(\pm\)).

# your code below:
Solution
# initialize my variables
a = 4
b = -25
c = 20

# positive side
x_p = (-b + (b**2-4*a*c)**0.5)/(2*a)

# negative
x_m = (-b - (b**2-4*a*c)**0.5)/(2*a)

print(x_p)
print(x_m)

Question 8: Converting data types

first  = 1.0
second = "1"
third  = "1.1"

Which of the following will return the floating point number 2.0?

# first + float(second)          # choice a
# float(second) + float(third)   # choice b
# first + int(third)             # choice c
# first + int(float(third))      # choice d
# int(first) + int(float(third)) # choice e
# 2.0 * second                   # choice f
2.0

Reference and Resource

This lesson is adapted from Software Carpentry.