Cheatsheets are good when you want to revise some of the concepts but not an idle way to start learning. Theory Python is a scripting language. - Language like c++/java's code needs to be compiled by its compiler. After compilation, it is just machine-level code. Whereas in a scripting language, its interpreter will be run the code on the spot one line at a time. Scripting vs. Compiled? VSCODE extension: Python Python for vscode Magic Python Arepl Making a virtual env: Why Virtual env? Because managing python dependencies is a mess, this will install dependencies for that project only instead of globally. this will create a venv folder in your directory. python -m venv venv this will activate this virtual env. source ./venv/bin/activate Comments in python single-line use # # single line comments multiline use . often called as docstring, as it is just to document function/classes. ''' ''' This is a example of Multiline comment. ''' Data Types: int # Whole Numbers float # Number with decimals. str # String list # ordered sequence of object dict # unordered key-value pairs. tup # ordered immutable seq. of objects. set # Unordered collection of unique objs. bool # Logical value True / False. None # no value Naming conventions: Use underscore for variables. variables cannot Start with a number. Avoid special meaning keywords. Use snake case for functions. Use CamelCase for Classes names. Printing in Python: print("") Numbers in Python: print(1+2) # Addition print(3-2) # Subtraction print(3*2) # Multiplication print(3/2) # Division print(3%2) # Mod. print(3**2) # Power print((3 + 10) * 15) # Using Braces. Using with variables: a = 10 print(a) # TO check the type: print(type(a)) Variables make it easy to understands the code. my_income = 100 tax_rate = 0.1 my_taxes = my_income*tax_rate print("My income tax is",my_taxes) Strings in Python: String is nothing but ordered seq. of characters. Note: Strings are immutable Using directly with print: print("Simple String") print('Add quotes inside the "string" by using single quote.') print("concat string "+"like this") Taking Input greeting = "Hello" name = input("Enter your name: ") print(greeting + ' ' + name) Use instead of This will auto seprate them by spaces. , + print(greeting,name) Escape characters in python: print("Hello\nWorld") # or print(""" --- Hello world\ Yeahh!! "Quotes" 'Single quote' --- """) Check the length of the string: print(len("Hey")) String indexing a = "Hello" a[0] Will return H String Slicing a[start:end:step] a[0:2] # Start from 0th index till 2(excluding) a[::2] # Step will be 2. # We can use this to print a string backwards s[::-1] String methods: # Multiply Strings a = 'H' * 10 # Upper Case a string s.upper() # Lower case s.lower() # Splitting s.split('W') s.split() # split via whitespace. Formatting strings: .format() F-string f"" print('The {2} {1} {0}'.format('fox','brown','quick')) print('First Object: {a}, Second Object: {b}, Third Object: {c}'.format(a=1,b='Two',c=12.3)) num = 23.45 print("My 10 character, four decimal number is:{0:10.4f}".format(num)) print(f"My 10 character, four decimal number is:{num:10.4f}") String Print alignment left_alignment = "Left Text" center_alignment = "Centered Text" right_alignment = "Right Text" print(f"{left_alignment : <20}|{center_alignment : ^15}|{right_alignment : >20}") More about this: https://pyformat.info/ Lists in Python: Basic Usage # Supports dynamic types, as it is python :) my_list = [100,2.5,"Mohit"] # len(my_list) for length # Change objs: my_list[0]=1000 Slicing is same as String slicing Concat a = [1,2,3] b = [4,5] c = a + b Append the list my_list.append(10.8) Poping objs my_list.pop(index) # default index is -1, returns popped element. Sorting a = [1,2,3] a.sort() # in-place sort, it will modify the list, returns None # Tip: use sorted(a) it will return the value instead of in-place Reverse a = [1,2,3] a.reverse() # also in-place Nested list a = [1, 2, 3, [4,5,]] print(a[3][1]) # Returns 5. Dictionaries in Python Unordered key-value mappings, basically you can have custom keys </br>Think it like, you can use this to make dynamic variables, where key will be the variable name. </br>Like list value can be any data type. Basic Usage prices = {"apple":10, "orange":20.5} print(prices) print(prices["apple"]) print(prices.keys()) # get keys print(prices.values()) # get values print(prices.items()) # get items, return tuples with keys and values print(prices.pop("apple")) # Pop the object print(prices) print(prices.clear()) # Clear All print(prices) print(prices.get("banana")) # it will check if it is present, return None if not. print(prices.__contains__("apple")) # Returns true/false Tuples in Python Same as a list, but immutable. Basic Usage a = (1,2,2,4) print(a) # Interesting Fact: tuple supports only two methods: a.count(2) # This can be use with list as well. a.index(3) # This can be use with list as well. Sets in Python Sets are an unordered collection of unique elements. a = set() a.add(1) a.add(1) a.add(1) print(a) # {1} Convert list to set a = [1,1,2,2,2,3,3,3] a = set(a) File IO with Python init file obj file = open("file.txt") read contents contents = file.read() print(contents) move the cursor/pointer file.seek(0) read line by line contents = file.readlines() # returns list of lines. close the file file.close() Using context manager with open("file.txt") as file: print(file.read()) different modes for file : Read r : Read and Write r+ : Write (will override the file) w : Write + Read (will override the file) w+ : Append the file a Chaining comparison operators: To chain these operators, we have these logical operators ==, != <, >, >=, <= and is and or not if 2 > 3 and 2 > 5: print("I am inevitable") if "hello" is "world" or "india" is "country": print("Yeah!!") if not 10 == 10: print("Tough luck!" ) Python Statements: Indentation is in python. important if, elif, else loc = 'Bank' if loc == 'Auto Shop': print('Welcome to the Auto Shop!') elif loc == 'Bank': print('Welcome to the bank!') else: print('Where are you?') for loops # iterate list/string/tuple l = [1,2,3] for item in l: print(item) # extraction made easy list2 = [(2,4),(6,8),(10,12)] for t1,t2 in list2: # Same as dict. t1 will be key, t2 will be value. print(t1) # will print 2,6,10 # Protip about dict: use .value() and .keys() for looping Values/keys. white loops in python we can use python with else statement. x = 1 while x < 3: print(f"x is {x}") x = x + 1 else: print("Uhhoo! x > 3") Statement in python : Breaks out of the current closest enclosing loop. break : Goes to the top of the closest enclosing loop. continue : Does nothing at all, Programmers use this for placeholder. pass def future_method(): # Todo: implement it later. pass while True: break for i in range(10): if i == 5: #omit continue print(i) Some useful operators range() range is a generator. <br/> : <br/> Use directly with loops for iteration. Syntax range(start,end,step) a = list(range(0,11,2)) # returns 0,2,4,..10 enumerate() with help of this we can keep track of index and value. a = [20,100,5,3,6] for index,value in enumerate(a): print(f"{index}\t{value}") zip() zip multiple lists. a = [1,2,3] b = [4,5,6] for item in zip(a,b): print(item) in operator: a = [1,2,3] print(3 in a) # True min and max: a = [1,2,3] print(min(a)) # 1 print(max(a)) # 3 List Comprehensions Quicker and unique way to create lists. # Grab every letter in string lst = [x for x in 'word'] # Square numbers in range and turn into list lst = [x**2 for x in range(0,11)] # Check for even numbers in a range lst = [x for x in range(11) if x % 2 == 0] help function in python if you are lazy like me, want to learn documentation about specific inbuilt method via terminal, you can use help() a = [1,2,3] help(a.insert) # will print info about this method Functions in python Basic function with argument and default value # def keyword to define functions. def say_hello(name="world"): print(f"Hello {name}!") # or return f"Hello {name}!" if you want to return it. *args and **kwargs : N number of arguments, returns tuple. *args : N number of keyword arguments, returns dict. **kwargs def total_income(*args, **kwargs): print(f"Income for month, {kwargs['month']} is : {sum(args)}") total_income(10,20,300,month="July") lamda, filter and map #map def square(num): return num**2 my_nums = [1,2,3,4,5] map(square,my_nums) # 1, 4, 9, 16, 25 # filter def check_even(num): return num % 2 == 0 nums = [0,1,2,3,4,5,6,7,8,9,10] filter(check_even, nums) # 0, 2, 4, 6, 8, 10 # lets convert each of the above function to lambda. map(lambda num:num**2,my_nums) filter(lambda num:num%2==0, nums) Classes in python Basic implementation class Circle: pi = 3.14 # Circle gets instantiated with a radius (default is 1) def __init__(self, radius=1): self.radius = radius self.area = radius * radius * Circle.pi # Method for resetting Radius def setRadius(self, new_radius): self.radius = new_radius self.area = new_radius * new_radius * self.pi # Method for getting Circumference def getCircumference(self): return self.radius * self.pi * 2 c = Circle() print('Radius is: ',c.radius) print('Area is: ',c.area) print('Circumference is: ',c.getCircumference()) Inheritance class Animal: def __init__(self): print("Animal created") def whoAmI(self): print("Animal") def eat(self): print("Eating") class Dog(Animal): def __init__(self): Animal.__init__(self) print("Dog created") def whoAmI(self): print("Dog") def bark(self): print("Woof!") Polymorphism class Animal: def __init__(self, name): # Constructor of the class self.name = name def speak(self): # Abstract method, defined by convention only raise NotImplementedError("Subclass must implement abstract method") class Dog(Animal): def speak(self): return self.name+' says Woof!' class Cat(Animal): def speak(self): return self.name+' says Meow!' fido = Dog('Fido') isis = Cat('Isis') print(fido.speak()) print(isis.speak()) Using Special methods Just like we have more special methods. __init__ class Book: def __init__(self, title, author, pages): print("A book is created") self.title = title self.author = author self.pages = pages def __str__(self): return "Title: %s, author: %s, pages: %s" %(self.title, self.author, self.pages) def __len__(self): return self.pages def __del__(self): print("A book is destroyed") book = Book("Python Rocks!", "Jose Portilla", 159) #Special Methods print(book) print(len(book)) del book Exception Handling try, except, finally, and else. def askint(): while True: try: val = int(input("Please enter an integer: ")) except: # You can also expect specific error like TypeError or generic type Exception print("Looks like you did not enter an integer!") continue else: print("Yep that's an integer!") break finally: print("Finally, I executed!") print(val) Decorators def new_decorator(func): def wrap_func(): print("Code would be here, before executing the func") func() print("Code here will execute after the func()") return wrap_func @new_decorator def func_needs_decorator(): print("This function is in need of a Decorator") func_needs_decorator() # Code would be here, before executing the func # This function is in need of a Decorator # Code here will execute after the func() Generators # Without generator def get_me_cubes(n): output_list = [] for i in range(n): output_list.append(i**3) return output_list print(get_me_cubes(10)) # With generator def generate_cubes(n): for i in range(n): yield i**3 print(generate_cubes(10)) Useful Python modules you should look. collections os shutil datetime math random pdb re timeit zipfile Working with CSVs in python # don't forget to install csv import csv data = open('example.csv',encoding="utf-8") # passing encoding is important otherwise you will get the Unicode error. csv_data = csv.reader(data) # reading data_lines = list(csv_data) # writing file_to_output = open('to_save_file.csv','w',newline='') # use 'a' for append csv_writer = csv.writer(file_to_output,delimiter=',') csv_writer.writerow(['a','b','c']) file_to_output.close() Working with pdfs in python # don't forget to use PyPDF2 import PyPDF2 f = open('Working_Business_Proposal.pdf','rb') # we need to pass rb for binary files. pdf_text = [] pdf_reader = PyPDF2.PdfFileReader(f) for p in range(pdf_reader.numPages): page = pdf_reader.getPage(p) pdf_text.append(page.extractText()) Sending Emails with python import smtplib smtp_object = smtplib.SMTP('smtp.gmail.com',587) email = "youremail@email.com" password = "yourpassword" # Tip: search about how you generate app passwords. smtp_object.login(email,password) from_address = "fromemail@email.com" to_address = "toemail@email.com" subject = "Subject" message = "Message" msg = "Subject: " + subject + '\n' + message smtp_object.sendmail(from_address,to_address,msg) smtp_object.quit() That’s it. I would recommend you to learn in-depth from this course: Udemy Course If you can self learn, then you can refer to this Repository: Github