Expressions instruct the program to perform an instruction.
Arithmetic operators act as you would expect. They require two numbers.
>>> 16 + 17 33
>>> 3 - 8 -5
>>> 2 * -3 -6
>>> 14 / 5 2.8
Expressions can be chained together. One or more expressions on a line is called a statement.
Arithmetic statements follow the order-of-operations you would expect, complete with parenthesis for grouping.
>>> 2 + 3 + 4 + 5 14
>>> 2 * (3 + 5) 16
>>> -2 * 3 + 4 -2
Python also has operators for things other than numbers. A string is a sequence of characters, identified by quotes ("" or '') around them. We use the + operator to instruct the program to concatenates two strings.
>>> "Hi" + "there" + "bob" 'Hitherebob'
>>> "Hi " + "there " + "bob" 'Hi there bob'
Attempting to call an operation on mismatching data causes an error:
>>> "Hello" + 45
Traceback (most recent call last):
  File "<pyshell#65>", line 1, in <module>
    "Hello" + 45
TypeError: Can't convert 'int' object to str implicitly
        In all these examples, we say that each expression evaluates to a value. 5 + 7 evaluates to 12. 2 + 3 + 4 evaluates 2 + 3 first, then 5 + 4.
Variables store data. They are like named boxes. We call the contents of the box its value
You tell Python to store a value in a variable (and create it if necessary) using an assignment statement.
Variable names are made of letters, numbers and the underscore _. They are case-sensitive. The name should reflect what you plan to store.
>>> name = "emmett"
>>> age = 42
>>> cost = 16.45
>>> number_of_people = 76
>>> universityName = 'UT Rio Grande Valley'
In spite of using the = sign, assignment is not like equality in math. You can reassign a variable multiple times and it replaces the value.
>>> age = 9 >>> age = 10 >>> age = 11
Variables evaluate to their value. This means that they can be used in expressions anywhere you would use data. We call that non-variable data we were using literal data.
>>> universityName 'UT Rio Grande Valley'
>>> age 42
>>> 7 + age 49
>>> cost * 4 65.8
>>> count = 5 >>> count = count + 1 >>> count = count + 1 >>> count 7
Trying to use a variable that hasn't been created yet causes an error.
>>> bad_variable
Traceback (most recent call last):
  File "<pyshell#75>", line 1, in <module>
    bad_variable
NameError: name 'bad_variable' is not defined
      Operators are one way to name actions that Python can execute. Functions are another. Functions are called by name with parenthesis () after.
>>> print()
Sometime functions need to be given more information, like what to print. We call these pieces of information parameters. We say that a parameter is passed into a function.
Multiple parameters for a function are separated by commas. What a function does with its parameters is up to that function. print just prints them all, separated by commas.
Expressions can be used as parameters too - they are evaluated and the resulting value is passed into the function.
Variables can be used as parameters too - they evaluate to their value, which is passed into the function.
>>> print("Hi there")
Hi there
>>> print(17) 17
>>> print(17, 18, 19) 17 18 19
>>> print(17 + 18 + 19) 54
>>> print(age) 42
>>> print(age + 5) 47
>>> print("I am", 42, "years old")
I am 42 years old
         The input() function tells Python to wait for the user to type a sequence of characters and hit return.
>>> input() This is what I type 'This is what I type'
Note that after I typed, the string that I typed appeared again. This is because functions can evaluate to a value just like operations and variables. 7 + 2 evaluates to 9. input() evaluates to whatever the user typed. Notice the same mechanics at work:
>>> height = 6.3
>>> print('The height is:', height)
The height is: 6.3
>>> user_input = input()
this is me the user typing a bunch of stuff
>>> print('The input is:', user_input)
The input is: this is me the user typing a bunch of stuff
      Data in Python has a type. 6 is an whole number, which computers store as an int. 6.3 is a real number, which computers store a floating point or float. 'Emmett' is a string. These are all different things to the machine.
>>> 56 + 32 88
>>> '56' + '32' '5632'
There are functions to convert from one type to another. Each function take data of one type and evaluates to the equivalent data of another type.
>>> str(56) '56'
>>> int('56')
56
>>> int(5.6) 5
>>> float(45) 45.0
At the moment this is relevant to you because input() returns a string (sequence of characters), which you may have to convert to a number.
>>> number = input()
33.1
>>> number + 2
Traceback (most recent call last):
  File "<pyshell#84>", line 1, in <module>
    number + 2
TypeError: Can't convert 'int' object to str implicitly
>>> number = input() 33.1 >>> number = float(number) + 2 >>> print(number) 35.1