DEV Community

Cover image for Basic Python Notes
Bryan C Guner
Bryan C Guner

Posted on

4 1

Basic Python Notes

Basics of Python


import sys
print('Hello, World')
print("It's raining!")
print('''
Welcome to Python
Have a great day!!!
''')

a = None
print(a)
Enter fullscreen mode Exit fullscreen mode

Arithmetic in Python

- numeric types: integer and float

- add, subtract, multiply => notice numeric types of results

- powers, division

- integer division & modulo teaming up

- warning: watch for rounding errors

x = 25    # integer
y = 17.0  # float

 print(x)
 print(y)

 print(x + y)
 print(x - y)

 print(x * y)
 print(x / y)

 print(x // y) # integer division
 print(x % y) # modulo

 print(f'The result is {int(x // y)} remainder {int(x % y)}')

 print(x ** 2)
 print(y ** 2)

 x = 25
 y = 17.6
Enter fullscreen mode Exit fullscreen mode

rounding errors due to floats

we can cast to int, round(num, digits), etc.


 print(x * y)
 print(int(x * y))
 print(round(x * y, 2))
Enter fullscreen mode Exit fullscreen mode

Casting will truncate (floor) our float

print(int(17.2))
print(int(17.9))
Enter fullscreen mode Exit fullscreen mode

Simple Input and Formatted Printing

- Prompt for input()

- Formatted printing 4 ways

name = input('What is your name?\n')

print('Hi, ' + name + '.')
print('Hi, %s.' % name)
print('Hi, {fname} {lname}.'.format(lname="Doe", fname="John"))
print(f'Hi, {name}.')
Enter fullscreen mode Exit fullscreen mode

Duck Typing

- len()

- try ... except

a = False
try:
    print(len(a))
except:
    print(f'{a} has no length')
Enter fullscreen mode Exit fullscreen mode
# More complex try blocks

a = 'False'
b = 6
c = 2
try:
    print(len(a))
    print(b/c)
    print(a[47])
except TypeError:
    print(f'{a} has no length')
except ZeroDivisionError as err:
    print(f'Cannot divide by zero! Error: {err}')
except:
    print(f'Uh oh, unknown error: {sys.exc_info()}')
else:
    print('No errors! Nice!')
finally:
    print('Thanks for using the program!')
# Arithmetic with Strings

a = "a"
b = "b"
an = "an"

print(b + an)
print(b + a*7)
print(b + an*2 + a)

print("$1" + ",000"*3)

# Length of a string
print(len("Spaghetti"))    # => 9

# Indexing into strings
print("Spaghetti"[0])    # => S
print("Spaghetti"[4])    # => h
print("Spaghetti"[-1])    # => i
print("Spaghetti"[-4])    # => e

# Indexing with ranges
print("Spaghetti"[1:4])  # => pag
print("Spaghetti"[4:-1])    # => hett
print("Spaghetti"[4:4])  # => (empty string)
print("Spaghetti"[:4])  # => Spag
print("Spaghetti"[:-1])    # => Spaghett
print("Spaghetti"[1:])  # => paghetti
print("Spaghetti"[-4:])    # => etti

# Using invalid indices
# print("Spaghetti"[15])    # => IndexError: string index out of range
# print("Spaghetti"[-15])    # => IndexError: string index out of range
print("Spaghetti"[:15])    # => Spaghetti
print("Spaghetti"[15:])    # => (empty string)
print("Spaghetti"[-15:])    # => Spaghetti
print("Spaghetti"[:-15])    # => (empty string)
print("Spaghetti"[15:20])    # => (empty string)

# .index() function
# Returns the first index where the character is found
print("Spaghetti".index("t"))    # => 6
# print("Spaghetti".index("s"))    # => ValueError: substring not found

# .count() function
# Returns the number of times the substring is found
print("Spaghetti".count("h"))    # => 1
print("Spaghetti".count("t"))    # => 2
print("Spaghetti".count("s"))    # => 0

# .split() function
# Returns a list (array) of substrings, split on the character passed
# If no character is passed, a space is used to split on
print("Hello World".split())    # => ["Hello", "World"]
print("i-am-a-dog".split("-"))    # => ["i", "am", "a", "dog"]

# .join() function
# Works in reverse from what you may be used to with JavaScript
# Called on a string that should be used to join each substring from the passed list
print(" ".join(["Hello", "World"]))    # => "Hello World"
# ["Hello", "World"].join(" ") JavaScript
print("-".join(["i", "am", "a", "dog"]))    # => "i-am-a-dog"

# .upper() and .lower() transformation functions
# These functions do not mutate
a = 'Hello'
print(a)
print(a.upper())
print(a)

# Some testing methods
# islower()
# isupper()
# startswith("substring")
# endswith("substring")
# isalpha() - only letters
# isalnum() - letters and numbers
# isdecimal() - only numbers
# isspace() - only whitespace
# istitle() - only title-cased letters (does not account for special words like 'a')
print('Once Upon A Time'.istitle())  # => True
print('Once Upon a Time'.istitle())  # => False
# Assignment Operators in Python
# - Increment (no postfix/prefix)
# - Powers and Integer division
# - Big Numbers
# - Stopping a runaway process (control+c)

i = 1
# i++ does not exist in Python, we have to use i += 1
i += 1
print(i)  # > 2

i += 4
print(i)  # > 6

i **= 2
print(i)  # > 36

i //= 10
print(i)  # > 3

i *= 10**200
print(i)  # > 3 followed by 200 0s (all written out)

print(float(i))  # > 3e+200 (floats are written in scientific notation)

i = 3
i **= 10**200
print(i)  # runaway process! control+c triggers a KeyboardInterrupt to stop it

# Meaning of Truth in Python
# - numeric types equivalent, but not strings
# - conditionals (if, elif, else)
# - truth equivalence

a = 1
b = 1.0
c = "1"

# print(a == b)
# print(a == c)
# print(b == c)

# if (a == c):
#     print("match")
# elif (a == b):
#     print("a matches b")
# else:
#     print("not a match")

a = []
# Falsy Values:
# 0, 0.0, 0j (complex number)
# ''
# False
# None
# []
# ()
# {}
# set()
# range(0)

if (a):
    print(f'{a} is true')
else:
    print(f'{a} is false')

# Logical Operators
# We use the keywords 'and', 'or', and 'not' in Python instead of &&, ||, and !
print(True and False)  # > False
print(True or False)  # > True
print(True and not False)  # > True

# Grouping Conditions
# Parentheses can group our conditions, just like JavaScript
print(False and (True or True))  # > False
print((False and True) or True)  # > True

# Short Circuiting
# If we can already determine the overall outcome of a compound conditional
# Python will not bother evaluating the rest of the statement
# False and (anything else) is always False, so the print is not evaluated
False and print("not printed")
# Cannot determine overall value so we have to evaluate the right side
False or print("printed #1")
# Cannot determine overall value so we have to evaluate the right side
True and print("printed #2")
# True or (anything else) is always True, so the print is not evaluated
True or print("not printed")

# JavaScript use case of short circuiting
# const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
# While loops follow a very similar structure to JavaScript
i = 0
while i < 5:
    print(f'{i+1}. Hello, world.')
    i += 1

# The 'continue' keyword goes to the next loop
# The 'break' keyword exits out of the loop completely
i = 0
while True:
    print(f'{i+1}. Hello, world.')
    if i < 4:
        i += 1
        continue
    print("You've printed 5 times. Goodbye.")
    break

# Identity vs. Equality
# - is vs. ==
# - working with literals
# - isinstance()

a = 1
b = 1.0
c = "1"

print(a == b)
print(a is b)

print(c == "1")
print(c is "1")

print(b == 1)
print(b is 1)

print(b == 1 and isinstance(b, int))
print(a == 1 and isinstance(a, int))

# d = 100000000000000000000000000000000
d = float(10)
e = float(10)

print(id(d))
print(id(e))
print(d == e)
print(d is e)

b = int(b)
print(b)
print(b == 1 and isinstance(b, int))

print(a)
print(float(a))
print(str(a))

print(str(a) is c)
print(str(a) == c)

# Make an xor function
# Truth table
# | left  | right | Result |
# |-------|-------|--------|
# | True  | True  | False  |
# | True  | False | True   |
# | False | True  | True   |
# | False | False | False  |
# def xor(left, right):
#   return left != right


def xor(left, right): return left != right


print(xor(True, True))  # > False
print(xor(True, False))  # > True
print(xor(False, True))  # > True
print(xor(False, False))  # > False


def print_powers_of(base, exp=1):
    i = 1
    while i <= exp:
        print(base ** i)
        i += 1


# We are not hoisting the function declaration, we need to invoke after declared
print_powers_of(15)
print_powers_of(exp=6, base=7)
print_powers_of(2, 5)
print_powers_of(3, 5)
print_powers_of(10, 5)

if True:
    x = 10

print(x)
print(i)


def greeting_maker(salutation):
    print(salutation)

    def greeting(name):
        return f"{salutation} {name}"
    return greeting
# print(salutation) # Error, salutation is not defined at this scope


hello = greeting_maker("Hello")
hiya = greeting_maker("Hiya")

print(hello("Monica"))
print(hello("Raja"))

print(hiya("Raul"))
print(hiya("Tariq"))
Enter fullscreen mode Exit fullscreen mode



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oxgd7r73mtx2q835j85g.jpg)
Enter fullscreen mode Exit fullscreen mode

Sentry blog image

How to reduce TTFB

In the past few years in the web dev world, we’ve seen a significant push towards rendering our websites on the server. Doing so is better for SEO and performs better on low-powered devices, but one thing we had to sacrifice is TTFB.

In this article, we’ll see how we can identify what makes our TTFB high so we can fix it.

Read more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay