# Python Cheat Sheet

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

# Basic syntax

## Literal values

```# This is a comment
"this is a string"
'so is this'
```
```# This is a number
1234
```
```# These are booleans
True
False
```

## Variable assignment

```# No need to declare a variable before assigning to it
variable = value
```
```# You can set the value at some index in a list as well
some_list[2] = value
```
```# You can extract several items from a list at once
(first, second, third) = [1, 2, 3]
```

## Arithmetic & logic

```# Order of operations applies
1 + 2 / 6 + 3  # 4.3333
```
```True and True  # True
True or False  # True
not False      # True
3 == "3"       # False
4 != 4.1       # True
```

# Control flow

## Conditions

```if name == "Jim":
print("Hi Jim")
elif name == "Todd":
print("go away todd")
else:
print("do I know you?")
```

## Loops

```for number in [3, 5, 6, 32]:
print(number)
for number in range(1, 5):
print(number) # 1...4
```
```number = 0

while number < 10:
number += 1
print(number)
```

`range()` is a function you will be using a lot. It returns a list of numbers in a range. `range(a, b)` returns `[a, b)` in math terms, ie `a` is included but `b` is not.

In python, most functions dealing with ranges, slices, etc, are not inclusive – meaning they don’t include the last number.

`range()` also has an optional third argument which is the step to count by. If you want to count from 1 to 10 by 2, you can do `range(1, 10, 2)`.

# Functions

Why? Functions let us do a few things:

1. Logically separate things into independent units
2. Avoid repeating ourselves

When beginning programming it may be tempting to dump everything in the top-level of your code and avoid functions, but don’t do this! Functions make your code easier to read and understand, easier to debug, and easier to write. Your functions should logically do one task an operate only on the data passed in as arguments.

When in doubt, break your task into small parts that can each be a self contained function.

## Defining functions

```# a, b, and c are the "formal parameters" of the function
# whatever you pass in the first position will be called "a" within the
# body of the function. 2nd will be b, 3rd c, etc

def my_function(a, b, c):
return a + b * c
```

## Calling functions

```my_function(3, 6, 12)
my_function(input("number"), 4, 6)
print(my_function(3, 2, 1/53))
```

# Lists

## Creating lists

You can put anything inside a list, including other lists

```colors = ["red", "green", "blue"]
stuff = [32, 4, "hi", colors]
joined = [1, 2, 3] + [4, 5, 6]
```

Lists that contain other lists are called 2D lists. You use them as shown:

```some_2d_list = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
some_2d_list[1][2]  # 6
```

## Accessing parts of lists

```first_color = colors[0]
last_color = colors[-1]
middle = stuff[1:3] # [4, "hi"]
last2 = stuff[-2:]  # ["hi", [...]]
first2 = stuff[:2]  # [32, 4]
```

The `list[start:end]` syntax is called a slice or a range. As is customary in python, the `end` index is not included, so `1:3` would give indices 1 and 2 but not 3.

## Modifying lists

Lists are mutable, meaning you can change what’s in them.

```# Append a single item onto a list
colors.append("yellow")
```
```# Join two lists together with +
colors += ["indigo", "violet"]
```
```# Remove an item from a list
colors.remove("green")
```

# Dictionaries

## Creating dictionaries

```ages = {"joe": 17, "tim": 21}
```

The string on the left of the `:` is called the key, whatever is on the right is the corresponding value. Dictionaries associate a value (“definition”) with a certain string (“key”). The definition can be any value: a number, string, another dictionary, some other data structure – anything.

## Looking things up in a dictionary

```joes_age = ages["joe"]
print(ages[input("name")])
```

Check if there is a value associated with the key `"joe"`

```"joe" in ages   # True
```

## Modifying a dictionary

```ages["jane"] = 24
del ages["joe"]
ages["joe"]    # KeyError: 'joe'
```