Skip to main content

Python Basics

This page provides an introduction to python basics.

Variable

# str
name = "abc"

# int
age = 5

# float
height = 172.2

# bool
is_student = True

String Formatting

print(f"name: {name}, age: {age}, height: {height}, is_student: {is_student}")
# o/p: name: abc, age: 5, height: 172.2, is_student: True

Typecasting

# get type of a variable 
print(f"type of name: {type(name)}, value: {name}")
# o/p: type of name: <class 'str'>, value: abc



# convert int to float
print(f"type of age: {type(age)}, value: {age}")
# o/p: type of age: <class 'int'>, value: 5


age_float = float(age)
print(f"type of age_float: {type(age_float)}, value: {age_float}")
# o/p: type of age_float: <class 'float'>, value: 5.0



# convert bool to str
print(f"type of is_student: {type(is_student)}, value: {is_student}")
# o/p: type of is_student: <class 'bool'>, value: True


is_student_str = str(is_student)
print(f"type of is_student_str: {type(is_student_str)}, value: {is_student_str}")
# o/p: type of is_student_str: <class 'str'>, value: True



# convert str to bool
print(f"type of name: {type(name)}, value: {name}")
# o/p: type of name: <class 'str'>, value: abc


name_bool = bool(name)
print(f"type of name_bool: {type(name_bool)}, value: {name_bool}")
# o/p: type of name_bool: <class 'bool'>, value: True
info

Converting a value to a boolean returns True if the value is non-zero or non-empty, and False otherwise.

User Input

name = input("Enter your name: ")
print(f"Hello {name}")
# o/p: Hello, abc
info

The input will always be of type str.

Arithmetic Operators

count = 1


# add
count = count + 1
count += 1


# substract
count = count - 1
count -= 1


# multiply
count = count * 5
count *= 5


# divide
count = count / 2
count /= 2


# exponent
count = count ** 2
count **= 2


# modulus
count = count % 3

# round
count = round(count)

# abs
count = abs(count)

# pow
count = pow(count, 3)


# assign values
x = 1
y = 3.3
z = 4


# max
max_value = max(x, y, z)

# min
min_value = min(x, y, z)



import math

# pi
math.pi

# e
math.e

# sqrt
count = math.sqrt(count)

# ceil
math.ceil(y)

# floor
math.floor(y)

If Else

if age <= 0: print("Invalid")
elif age < 18: print("No")
else: print("Yes")

Conditional Expression

num = 2
condition = "Positive" if num >= 0 else "Negative"
print(condition)

Logical Operator

# not 
if not age:
print("Invalid")
# and
elif age >= 0 and age <= 18:
print("No")
# or
elif age >= 18 or age <= 30:
print("Yes")

String Methods

# len
len(name)
3

# find
name.find("o")

# reverse find - last occurance
name.rfind("q")

# capitalize
name.capitalize()

# upper
name.upper()

# lower
name.lower()

# isdigit - if string contains only digits
name.isdigit()

# isalpha - if string contains only alphabets
name.isalpha()
info

To list all the methods of string you can do print(help(str)).

String Indexing

credit_card_number = "0123-4567-8901-2345"

print(credit_card_number[0])
# o/p: 0

print(credit_card_number[:4])
# o/p: 0123

print(credit_card_number[5:9])
# o/p: 4567

print(credit_card_number[5:])
# o/p: 4567-8901

print(credit_card_number[-1])
# o/p: 5

print(credit_card_number[::2]) # prints every 2 character in a string
# o/p: 02-5780-35
info

Last example uses syntax [start : end : step]

Format Specifiers

price_1 = -3.14159
price_2 = 987000.65
price_3 = 12.34

# decimal places
print(f"Price 1 is ${price_1:.2f}")
# o/p: Price 1 is $-3.14
print(f"Price 2 is ${price_2:.1f}")
# o/p: Price 2 is $987000.7
print(f"Price 3 is ${price_3:.3f}")
# o/p: Price 3 is $12.340



# width
print(f"Price 1 is ${price_1:10}")
# o/p: Price 1 is $ -3.14159
print(f"Price 2 is ${price_2:10}")
# o/p: Price 2 is $ 987000.65
print(f"Price 3 is ${price_3:10}")
# o/p: Price 3 is $ 12.34




# preset with zero
print(f"Price 1 is ${price_1:010}")
# o/p: Price 1 is $-003.14159
print(f"Price 2 is ${price_2:010}")
# o/p: Price 2 is $0987000.65
print(f"Price 3 is ${price_3:010}")
# o/p: Price 3 is $0000012.34




# left justify
print(f"Price 1 is ${price_1:<010}")
# o/p: Price 1 is $-3.1415900
print(f"Price 2 is ${price_2:<010}")
# o/p: Price 2 is $987000.650
print(f"Price 3 is ${price_3:<010}")
# o/p: Price 3 is $12.3400000




# right justify
print(f"Price 1 is ${price_1:>10}")
# o/p: Price 1 is $ -3.14159
print(f"Price 2 is ${price_2:>10}")
# o/p: Price 2 is $ 987000.65
print(f"Price 3 is ${price_3:>10}")
# o/p: Price 3 is $ 12.34




# center
print(f"Price 1 is ${price_1:^10}")
# o/p: Price 1 is $ -3.14159
print(f"Price 2 is ${price_2:^10}")
# o/p: Price 2 is $987000.65
print(f"Price 3 is ${price_3:^10}")
# o/p: Price 3 is $ 12.34




# assign sign
print(f"Price 1 is ${price_1:+10}")
# o/p: Price 1 is $ -3.14159
print(f"Price 2 is ${price_2:+10}")
# o/p: Price 2 is $+987000.65
print(f"Price 3 is ${price_3:+10}")
# o/p: Price 3 is $ +12.34




# thousand seperator
print(f"Price 1 is ${price_1:,}")
# o/p: Price 1 is $-3.14159
print(f"Price 2 is ${price_2:,}")
# o/p: Price 2 is $987,000.65
print(f"Price 3 is ${price_3:,}")
# o/p: Price 3 is $12.34




# thousand seperator, with decimal places
print(f"Price 1 is ${price_1:,.2f}")
# o/p: Price 1 is $-3.14
print(f"Price 2 is ${price_2:,.2f}")
# o/p: Price 2 is $987,000.65
print(f"Price 3 is ${price_3:,.2f}")
# o/p: Price 3 is $12.34

While Loop

your_name = None
while not your_name:
your_name = input("Enter your name: ")
if your_name : print(f"Hello, {your_name}")

For Loop

for i in range(1, 11): 
print(i)
# o/p: 1, 2, 3, 4, 5, 6. 7, 8, 9, 10


# reversing for loop
for i in reversed(range(1, 11)):
print(i)
# o/p: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1


# increment by 2
for i in range(1, 11, 2):
print(i)
# o/p: 1, 3, 5, 7, 9


# iterate over string
for i in "abc":
print(i)
# o/p: a, b, c
info

For loop range is inclusive on left side and exclusive on right side.

Random

import random

# random int
random.randint(1, 6)
# o/p: 4


# random float
random.random()
# o/p: 0.2813447139323776


# random choice
options = ["rock", "paper", "scissors"]
random.choice(options)
# o/p: rock


# shuffle collection
cards = ["A", "2", "3", "4", "5", "6"]
random.shuffle(cards)
# o/p: ['A', '6', '5', '3', '2', '4']
info

Random is inclusive on both sides.

Functions

# defining a function
def happy_birthday(name):
print(f"Happy Birthday {name}")


# calling function
happy_birthday("abc")
# o/p: Happy Birthday abc


happy_birthday("pqr")
# o/p: Happy Birthday pqr


happy_birthday("xyz")
# o/p: Happy Birthday xyz


# defining a function with return value
def add(x, y):
return x + y


# calling function
add(1, 2)
# o/p: 3

Arbitary Arguments

Arbitary arguments are of two types:

  • *args: passed as tuple.
  • **kwargs: passed as dictionary.
# *args example
def add(*args):
total = 0
for arg in args:
total += arg
return total


# calling a function with *args
add(1,2,3,4,5,6,7,8,9,10)
# o/p: 55
# **kwargs example
def print_address(**kwargs):
for value in kwargs.values():
print(value, end =" ")


# calling function
print_address(street="123 Street", city="San Jose", state="CA")
# o/p: 123 Street San Jose CA
info

In above examples name of the variable doesn't have to be args and kwargs, it can be anything.

Match Statement

def day_of_week(day):
match day:
case 1: return "Sunday"
case 2: return "Monday"
case 3: return "Tuesday"
case 4: return "Wednesday"
case 5: return "Thrusday"
case 6: return "Friday"
case 7: return "Saturday"
case _: return "Invalid"


day_of_week(5)
# o/p: Thrusday

Module

# importing a module
import math
print(math.pi)


import math as m
print(m.pi)


from math import pi
print(pi)
info

To list all the modules in python, run help("modules")

Main Guard

Main Guard allows python script to be imported or to run as standalone program.

# script_1.py
def favorite_food(food):
print("Your favorite food is {food}")


def main():
print("This is script_1")
favorite_food("pizza")


if __name__ == '__main__':
main()
# script_2.py
from script_1 import *
favorite_food("curry")
info

In the example above, you can import favorite_food function in script_2.py.