# Never forget the PEMDAS rule
# This is another example of a comment
In Microsoft VSCode, type Ctrl + /
to automatically comment an entire line. To comment a multiple lines, select all the lines with your mouse and then press Ctrl + /
Variables are always assigned with the variable name on the left and the value on the right of the equal sign. Variables must be assigned before they can be used. Variables can be:
x = 50
current\_year = 2020
full\_name = 'jane doe'
position = "machine learning engineer"
radius = 10
circumference = 2 \* pi \* radius # variables can be complex math operations as well
new\_score = 4520
highest\_score = new\_score # variables can be assigned to other variables
linus\_torvalds = 'Linus at FOSSConf, "Talk is cheap. Show me the code."
**String literals can be declared with either single or double quotes. You can have quotes inside your strings, but make sure they **are different.
message = "Welcome to RST"
user = "Guido"
greeting = message + ", " + user # 'Welcome to RST, Guido'
# You can also use the "+=" operator. (in-place operators)
name = "Guido"
name += "van Rossum"
print(name) # '**Guido van Rossum'
items\_in\_cart = 8
message = f"You have {items\_in\_cart} items in your shopping cart."
print(message) # You have 8 items in your shopping cart.
net\_amount = 100
GST\_rate = 12
GST\_amount = (GST\_rate / 100) \* net\_amount
msg = f"Your total is only ₹{net\_amount + GST\_amount}"
String indexing is zero-based.
"hello"
"hello"\[0\] # 'h'
name = "Yukihiro"
name\[3\] # 'i'
name\[6\] # 'r'
str(), int(), float(), list(), tuple(), dict(), set()
decimal = 3.141592653589793238
integer = int(decimal) # 3
num\_string = "2134"
num\_int = int(num\_string) # 2134
number = 2134
number\_string = str(number) # "2134"
python\_list = \[1, 2, 3\]
python\_list\_as\_strings = str(python\_list) # '\[1, 2, 3\]'
my\_dictionary = {"name": "John Doe", "age": 22, "address": "123, baker street"}
my\_dict\_string = str(my\_dictionary) # {"name": "John Doe", "age": 22, "address": "123, baker street"}
tuple(python\_list) # (1,2,3)
set(python\_list) # {1,2,3}
To print something on the terminal
\# Print a string
print("Hello World") # "Hello World"
# Print number
print(22) # 22
print(100 + 50) # 150
# Print the value of some variable
some\_variable = (20 / 3) + 155
print(some\_variable) # 161.66666666666666
Python has a built-in function called input that will prompt the user and give us back the result, which we can store into a variable.
print("Please enter your full name")
name = input()
name = input("P**lease enter your full name: ")
if name == "Mark Zuckerberg":
print("Facebook")
elif name == "Jack Dorsey":
print("Twitter")
elif name == "Sundar Pichai":
print("Google")
else:
print("Someone I don't know")
All conditional checks resolve to either True
or False
. We can call values that resolve to True as “truthy”, and values that resolve to False as “falsy”. Besides False, other things that are naturally falsy include: empty objects, empty strings, None and zero (0).
x = 1
x is 1 # True
x is 0 # False
Consider we are comparing two variables, x and y. Ex. x > y
In Python, == and is are very similar in functionality, but they are not the same. ==
checks for the content, whereas is
checks if both variables point to the same object in memory.
x = \[1, 2, 3\] # A list of numbers.
y = \[1, 2, 3\] # Don't worry about these for now
x == y # True
x is y # False
z = y
y is z # True
\# Ask for age
age = input("How old are you? ")
if age:
if int(age) >= 18 and int(age) < 21:
# 18-21 wristband
print("Entry permitted, but wristband necessary.")
elif int(age) >= 21:
# 21+ normal entry
print("Entry granted")
else:
# underage
print("Entry denied!")
else:
print("Please enter your age!")
for item in iterable\_object:
# do something with item -> (code block)
\[40, 32, 73\]
"hello"
range(1, 10)
# Strings
for char in "rstforum":
print(char)
# Range (1-9)
for x in range(1, 10):
print(x)
print("----")
# FizzBuzz Examples
for num in range(1, 21):
if num == 5 or num == 16:
print(f"{num}: FizzBuzz")
elif num % 2 == 0:
print(f"{num}: Fizz is even")
else:
print(f"{num}: Fizz is odd")
**Python ranges come in multiple forms:
while
loops continue to execute while a certain condition is truthy, and will end when they become falsy. while loops require a lot more setup than for loops, since you have to specify the termination conditions manually. If the condition doesn’t become false at some point, the loop will continue forever!
secret\_password = None
while secret\_password != "balony1":
secret\_password = input("Incorrect! Enter password again: ")
Python’s break
statement will immediately terminate a loop. This helps us exit out of a loop whenever we want.
while True:
command = input("Type 'exit' to exit: ")
if (command == "exit"):
break
for num in range(1, 21):
print(num)
if num == 5:
break
t**asks = \["Install Python", "Install VSCode", "Setup Auto PEP8"\] # comma-separated values
first\_task = "Install Python"
second\_task = "Install VSCode"
third\_task = "Setup Auto PEP8"
tasks = \[first\_task, second\_task, third\_task\]
tasks = \["Install Python", "Install VSCode", "Setup Auto PEP8"\]
len(tasks) # 3
Another built-in function to create list from a range: list()
tasks = list(range(1, 4))
tasks # \[1, 2, 3\]
print(tasks\[0\]) # 'Install Python'
print(tasks\[1\]) # 'Install VSCode'
print(tasks\[2\]) # 'Setup Auto PEP8'
print(tasks\[-1\]) # 'Install Python'
print(tasks\[-3\]) # 'Setup Auto PEP8'
print(tasks\[-4\]) # IndexError
in
operator)langs = \["Python", "JavaScript", "Rust", "Elm", "WASM"\]
"Python" in langs # true
"Rust" in langs # true
"C++" in langs # false
"python" in langs # false
\# append() - Add an item to the end of a list.
random\_numbers = \[1, 4, 34, 21, 86\]
random\_numbers.append(9)
print(random\_numbers) # \[1, 4, 34, 21, 86, 9\]
# extend() - Add several items to the end of a list at the same time.
my\_list = \[1, 2, 3\]
my\_list.append(4, 5, 6, 7) # does not work!
my\_list.append(\[4, 5, 6, 7\]) # \[1, 2, 3, \[4, 5, 6, 7\]\]
my\_list.extent(\[4, 5, 6, 7\])
print(my\_list) # \[1, 2, 3, 4, 5, 6, 7\]
# insert() - Insert an item at a given index position
my\_list = \[1, 2, 3, 4\]
my\_list.insert(2, "What a number!")
print(my\_list) # \[1, 2, "What a number!", 3, 4\]
my\_list.insert(-1, "Last number.")
# \[1, 2, "What a number!", 3, "Last number", 4\]
# clear() - Remove all items from a list
my\_list = \[1, 2, 3, 4\]
my\_list.clear() # parenthesis are required
print(my\_list) # \[\]
# pop() - Remove the items at a given position, and return it. If no index is specified, it removes & returns the last item.
my\_list = \[1, 2, 3, 4\]
my\_list.pop() # 4
my\_list.pop(1) # 2
# remove() - Removes the first occurrence of the item we provide. Throws a ValueError if the item we provided is not found.
my\_list = \[1, 2, 3, 4, 4, 4\]
my\_list.remove(2)
print(my\_list) # \[1, 3, 4, 4, 4\]
my\_list.remove(4)
print(my\_list) # \[1, 3, 4, 4\]
# index() - Returns the index of the specified item in the list
my\_list = \[1, 34, 11, 8, 4, 9, 211, 45, 98, 38, 7\]
my\_list.index(11) # 2
my\_list.index(45) # 7
# Can specify start and end
my\_list = \[3, 3, 3, 5, 23, 3, 34, 8, 8, 4, 9, 211\]
my\_list.index(3) # 0
my\_list.index(3, 1) # 1
my\_list.index(3, 3) # 5
my\_list.index(8, 6, 9) # 7
# count() - Receives a value we provide and returns the number of times it appears in the list.
my\_list = \[1, 2, 2, 3, 4, 55, 23, 3, 2, 65, 2\]
my\_list.count(2) # 4
my\_list.count(45) # 0
my\_list.count(3) # 2
# reverse() - Reverse the elements of the list (in-place)
my\_list = \[1, 2, 3, 4\]
my\_list.reverse()
print(my\_list) # \[4, 3, 2, 1\]
# sort() - Sort the items of the list (in-place)
some\_list = \[3, 4, 7, 2, 9, 8, 0\]
some\_list.sort()
print(some\_list) # \[0, 2, 3, 4, 7, 8, 9\]
# join()
# Technically a String method that takes an iterable argument.
# Concatenates a copy of that base string between each item of the iterable and then returns a new string.
# Can be used to make sentences out of a list of words by joining on a space.
words = \["wax", "on", "wax", "off"\]
" ".join(words) # 'wax on wax off'
fsociety = \["the", "world", "is", "a", "hoax"\]
"\_".join(fsociety) # 'the\_world\_is\_a\_hoax'
**Make new lists using slices of the old list. some_list[start:end:step]
\# start: What index to start slicing from
my\_list = \[1, 2, 3, 4\]
my\_list\[1:\] # \[2, 3, 4\]
my\_list\[3:\] # \[4\]
# start: Starting with a negative number will slice that many number of times from the end
my\_list = \[1, 2, 3, 4\]
my\_list\[-1:\] # \[4\]
my\_list\[-3:\] # \[2, 3, 4\]
# end: The index to copy up to (exclusive counting)
my\_list = \[1, 2, 3, 4\]
my\_list\[:2\] # \[1, 2\]
my\_list\[:4\] # \[1, 2, 3, 4\]
my\_list\[1:3\] # \[2, 3\] # start index is inclusive
# end: With negative numbers, how many items to exclude from the end (indexing by counting backwards)
my\_list = \[1, 2, 3, 4\]
my\_list\[:-1\] # \[1, 2, 3\]
my\_list\[1:-1\] # \[2, 3\]
# step: the number to count at a time (sane as step in ranges)
my\_list = \[1, 2, 3, 4, 5, 6\]
my\_list\[1::2\] # \[2, 4, 6\]
my\_list\[::2\] # \[1, 3, 5\]
# step: With negative numbers, reverse the order
my\_list = \[1, 2, 3, 4, 5, 6\]
my\_list\[1::-1\] # \[2, 1\]
my\_list\[:1:-1\] # \[6, 5, 4, 3\]
my\_list\[2::-1\] # \[3, 2, 1\]
# Reversing lists / strings
string = "Hello Python!"
string\[::-1\] # '!nohtyP olleH'
# Modifying portions of lists
numbers = \[1, 2, 3, 4, 5\]
numbers\[1:3\] = \['a', 'b', 'c'\] # \[1, 'a', 'b', 'c', 4, 5\]
numbers\[:4\]\[::-1\] # chaining
frameworks = \["Django", "Flask"\]
frameworks\[0\], frameworks\[1\] = frameworks\[1\], frameworks\[0\]
print(frameworks)
The rough idea is we take an existing list and output another list with different values based upon the first list.
Syntax: **[**item logic **for** item (every) **in** list**]**
numbers = \[1, 2, 3, 4, 5\]
\[num\*10 for num in numbers\] # \[10, 20, 30, 40, 50\]
\[num/2 for num in numbers\] # \[0.5, 1.0, 1.5, 2.0, 2.5\]
# List Comprehensions with conditional logic
numbers = \[1, 2, 3, 4, 5, 6\]
evens = \[num for num in numbers if num % 2 == 0\]
odds = \[num for num in numbers if num % 2 != 0\]
\[num\*2 if num % 2 == 0 else num/2 for num in numbers\]
# \[0.5, 4, 1.5, 8, 2.5, 12\]
Lists inside of other lists. Also referred to as multidimensional lists
nested\_list = \[\[1, 2, 3\], \[4, 5, 6\], \[7, 8, 9\]\]
len(nested\_list) # 3
nested\_list = \[\[1, 2, 3\], \[4, 5, 6\], \[7, 8, 9\]\]
nested\_list\[0\]\[1\] # 2
nested\_list\[1\]\[-1\] # 6
# Iterating throught nested loops
for list in nested\_list:
for val in list:
print(val)
nested\_list = \[\[1, 2, 3\], \[4, 5, 6\], \[7, 8, 9\]\]
# Would need to write two comprehensions
\[\[print(val) for val in list\] for list in nested\_list\]
board = \[\[num for num in range(1, 4)\] for val in range(1, 4)\]
\[\[1, 2, 3\], \[1, 2, 3\], \[1, 2, 3\]\]
\[\["X" if num % 2 != 0 else "O" for num in range(1, 4)\] for val in range(1, 4)\]
# \[\['X', 'O', 'X'\], \['X', 'O', 'X'\], \['X', 'O', 'X'\]\]