#1. Python programming- Python interpreter (python.org)
#2. Data analytics - desriptive stats
#3. Python visualization
#4. Database & SQL (OLTP)
#5. Inferential stats
#6. warehousing (OLAP)
#7. machine learning (using Python)
#8.Visualization using Power BI ====>
#9. Machine learning using R programming
#10. Intro Tableau
# each topic will have a project
#assignments - they will not have code
# go through job description of the jobs you are interested in and put them in an excel
# you X against topics you know
#how to build your resume/profile
###################
# 1. Software to install: Python interpreter from Python.org
# 2. IDE - Integrated Development Environment
## pycharm, vs code, jupyter, colab (online)
print("Hello Everyone",end=". "); #this is comment which will not be executed by Python.
print("wiefsisdkjnsjdosidviosdosdiv");
print("Hello","How are you?","I am fine");print("5+4=",5+4,"another equation: 6+4=",6+4)
# f-string (format string)
print(f"5+4={5+4} another equation: 10/3={10/3:.2f}",end="")
#data type-what kind of value is it? - integer(int), float, complex,string (str), boolean(bool)
print()
var1=5 #<class 'int'>
print(type(var1))
var1="HEllo"
print(type(var1)) #<class 'str'>
var1=5.0 #<class 'float'>
print(type(var1))
var1=5j #<class 'complex'>
print(type(var1))
print(var1 * var1)
#bool
var1 = True #False
print(type(var1))
var1= "true"
select * from hr.employees;
Select first_name, last_name, email from hr.employees;
Select first_name, last_name, email,salary from hr.employees where salary > 7000;
select first_name || ‘ ‘ ||last_name “FULL NAME”, email “EMAIL ID”,salary from hr.employees where salary > 7000;
Select first_name name, last_name last,salary, DEPARTMENT_ID from hr.employees where salary > 7000 and DEPARTMENT_ID=100;
Select first_name name, last_name last,salary, DEPARTMENT_ID from hr.employees where salary > 7000 or DEPARTMENT_ID=100;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where COMMISSION_PCT IS NOT NULL;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where COMMISSION_PCT <> NULL;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where DEPARTMENT_ID <> 100;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where DEPARTMENT_ID <> 100 and last_name =’Tuvault’;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where DEPARTMENT_ID <> 100 and first_name like’A%’;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where DEPARTMENT_ID <> 100 and first_name like’%t%t%’;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where DEPARTMENT_ID <> 100 order by first_name;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where DEPARTMENT_ID <> 100 order by first_name desc;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where DEPARTMENT_ID <> 100 order by DEPARTMENT_ID, first_name;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where DEPARTMENT_ID <> 100 order by DEPARTMENT_ID, first_name;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees order by COMMISSION_PCT NULLS FIRST;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees order by COMMISSION_PCT DESC
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where DEPARTMENT_ID <> 100;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where DEPARTMENT_ID > 100;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where DEPARTMENT_ID < 100;
Select first_name name, last_name last,salary, DEPARTMENT_ID, COMMISSION_PCT from hr.employees where DEPARTMENT_ID = 100;
select * from hr.employees;
select * from dual;
— Functions that work on rows
select abs(-99), round(45.61) from dual;
select to_number(‘12345.12678′,’99999.99999’) from dual;
select ‘12345.12678’ from dual;
— 12-Jan-2023
select to_date(‘May 15, 2023 5:25 P.M.’,’Month dd, yyyy HH:MI P.M.’) from dual;
select to_char(to_date(’11 January, 2023 5:25 P.M.’,’HH Month, yyyy DD:MI P.M.’), ‘Mon dd yyyy hh:mi’) from dual;
select first_name, last_name, hire_date, to_char(hire_date, ‘Month dd yyyy hh:mi’), salary, to_char(salary,’$99,999.9′) from hr.employees;
— DECODE
select decode(5+3,9,’Correct’,’Incorrect’) from dual;
— AGGREAGATE Functions – that work on columns
select count(*), round(avg(salary)), sum(salary), min(salary), max(salary) ,DEPARTMENT_ID from hr.employees group by DEPARTMENT_ID having avg(salary) > 7000;
Select * from hr.employees;
select * from hr.departments;
— Cartesian
select first_name, last_name, e.DEPARTMENT_ID, DEPARTMENT_NAME from hr.employees e , hr.departments d
select first_name, last_name, e.DEPARTMENT_ID, DEPARTMENT_NAME from hr.employees e join hr.departments d on (e.DEPARTMENT_ID=d.department_ID)
— Right Outer
select first_name, last_name, e.DEPARTMENT_ID, DEPARTMENT_NAME from hr.employees e , hr.departments d where e.DEPARTMENT_ID (+)=d.department_ID
— Left Outer
select first_name, last_name, e.DEPARTMENT_ID, DEPARTMENT_NAME from hr.employees e , hr.departments d where e.DEPARTMENT_ID =d.department_ID (+)
— FULL OUTER
select first_name, last_name, e.DEPARTMENT_ID, DEPARTMENT_NAME from hr.employees e full outer join hr.departments d on (e.DEPARTMENT_ID=d.department_ID)
— Sub query
select * from HR.employees where first_name in (select first_name from hr.employees where salary>6000)
select * from HR.employees where department_ID = (select department_ID from hr.departments where department_name=’Shipping’)
select * from HR.employees e, hr.departments d where e.DEPARTMENT_ID =d.department_ID and d.department_name = ‘Shipping’
print("HELLO")
# 1. INSTALLATION - getting your computer ready
# a. you can practice online at Google Colab (colab.reaserch.google.com)
# b. install all software on your machine -
## i. install Python : python.org and download the version of your choice
## ii. you can program on Python but its very easy to do
## iii. Another software to make it user friendly - IDE
## integrated development environment - you can practice
## eg Pycharm (jetbrains.com), VS Code , Notebooks like Jupyter, etc
print("HELLO", end="\n")
print("Good Morning")
# variables - we variable to store data and use it again and again when we want it
var1 = 5
# single line comment
# integer means - numbers without decimal part- includes _ve , +ve & zero
# type() - it gives the data type of the variable
print(type(var1)) # integer - int
# basic data types in Python- integer, float, string, boolean & complex
# basic = single value
print(var1)
var1 = 5.0 #float
print(type(var1))
var1 = 5+2j
print(type(var1))
print(var1 * var1) # 25 -4 +20j
print(2j * 2j)
var1 = "7890"
print(type(var1)) # str -> string
var2 = '5.4t'
print(var2)
print(type(var2))
#bool -> boolean : True / False
var1 = True
var2 = False
print(type(var1))
### use these values/ variables
# Arithematic operations - input as numbers and output are also numbers
# + - * / // ** %(modulo)
var1 = 14
var2 = 5
print(f"{var1} + {var2} : ",var1 + var2)
print("{var1} + {var2} : ",var1 + var2)
print(f"var1 + var2 : ",var1 + var2)
print(f"{var1} - {var2} : ",var1 - var2)
print(f"{var1} * {var2} : ",var1 * var2)
print(f"{var1} / {var2} : ",var1 / var2)
print(f"{var1} // {var2} : ",var1 // var2) #integer division
print(f"{var1} % {var2} : ",var1 % var2) #remainder from division
print(f"{var1} ** {var2} : ",var1 ** var2) #power- var1 to the power var2
print(f"{var1} ** {var2} : ",var1 * var1* var1*var1*var1)
# round() - round it off to the nearest integer value
### round(5.1) = 5 , round(5.6) = 6
# floor() - rounds it off to the lowest integer value
### floor(5.1) = 5 , floor(5.6) = 5 => similar to integer division
# ceil() - rounds it off to the higher integer value
### ceil(5.1) = 6 , ceil(5.6) = 6
# types of variables (data types) - Basic data types - they can store only one value at a time
var1 = 5 # integer - int
var1 = 5.0 # float
var1 = 5j #complex
var1 = "5" #string - str
var1 = False #boolean - bool
# arithematic operators: + - * / // %(mod) ** (power)
# Comparison operators: numeric as input and output is bool
num1, num2 = 10,20
print(num1, num2)
# > >= <= < == !=
print("num1==10: ",num1==10) # is num1 equal to 10 ?
print("num1!=10: ",num1!=10) # is num1 not equal to 10?
print(num1 > num2)
print(num1 < num2)
print(num1 >= 10)
print(num1 <= num2)
# Logical operators
#input values and output values - are all boolean
#operations = and or not
print("not True: ",not True)
print("not False: ",not False)
# and -> both values have to be True for it to be True else its False
print(True and False)
#tell: I will do this work and that work
#actual: I did only this work
#did I meet my committment ? - NO
# or - both values have to be False to be False otherwise its always True
#tell: I will do this work or that work
#actual: I did both
print("OR = ", True or False)
num1,num2 = 10,20
print("==> ",num1==10 and num1!=10 or num1 > num2 and num1 < num2 or num1 >= 10 or num1 <= num2)
# True
radius = 4
pi = 3.14
area_of_circle = pi * radius**2
circumference = 2 * pi * radius
print("Area of a circle with radius",radius,"is",area_of_circle,"square unit and circumference is",circumference,"unit")
# f - string is for formatting
print(f"Area of a circle with radius {radius} is {area_of_circle} square unit and circumference is {circumference} unit")
# Assignment -
# 1. WAP to find area and perimeter for a square
# 2. WAP to find area and perimeter for a rectangle
# for both the programs, display output is complete message as we have done above with circle.
# to check given number is an odd or even ?
# 5 - odd, 6 - even
num1 = 5
if num1 % 2==0:
print("EVEN Number")
else:
print("ODD Number")
#variables are used to store some values
var1 = 50
var2 = 100
print(var1 + var2)
var1 = 500
var2 = 100
print(var1 + var2)
#Basic
#datatypes: str, int, float, bool, complex
var1 = "HELLO" # str - you have the value in quoation
print(type(var1))
var1 = 100 #without any decimal part - integer(int)
print(type(var1))
var1 = 100.0 #float value
print(type(var1))
var1 = True #bool - False
print(type(var1))
var1 = 5j #complex (python)=imaginary (maths)
var2 = var1 * var1 #implicit conversion into complex since var1 is also complex
print(var2)
print(type(var1))
#
var1 = 100
var2 = 3.5
var3 = var1 + var2 #implicit conversion into float since var2 is a float
print()
str1 = "55"
str1 = int(str1) #explicit conversion
#int(), str(), float(), bool(), complex()
var1 = 0;var1 = bool(var1);print(var1); #False - bool
var1 = "";
var1 = bool(var1);
print(var1) ; #False - bool
len = float(input("Enter length of the rectangle: "))
breadth = float(input("Enter breadth of the rectangle: "))
area = len * breadth
print("Area of the rectangle is ",area)
print(f"Rectangle with length = {len} and breadth = {breadth} has an area of {area:.1f}")
player = "Imbababonbeta"
country = "Zimbabwe"
position = "wicket-keeper"
print(f"Player {player:<16} plays for {country:^10} and is {position:>15} of the team")
player = "Rohit"
country = "India"
position = "captain"
print(f"Player {player:<16} plays for {country:^10} and is {position:>15} of the team")
#Player Imbababonbeta plays for Zimbabwe and is wicket-keeper of the team
#Player Rohit plays for India and is captain of the team
########
## OPERATORS
### ARITHMETIC OPERATORS: + - * /
## input values have to be numeric (int, float, complex)
var1 = 50
var2 = 20
print(var1 + var2)
print(var1 - var2)
print(var1 * var2)
print(var1 / var2)
# ** power, 5 ** 4 => 5 * 5 * 5 * 5
print(var1 ** var2) # 50 to the power of 20
# how to find square root of 21 ?
print(21 ** 0.5) #4.58257569495584
#cube root of 21 =
print(21 ** (1/3))
# // - integer division
print(10 / 3)
print("Integer Division = ",10 // 3)
# % Modulo - remainder
#20 / 3 = 6 + 2/3
print(20 % 3)
print(50 % 30) # 20 is remainder
# Comparison operators: compare the values (bigger/smaller)
# input as numeric and output is BOOL
var1 = 15
var2 = 25
print(var1 > var2) #false
#Arithematic operations: + - * / , **, // and % (modulo)
## input as numbers and output was numbers
#Comparison operators: input are the numbers / output - bool
# > >= < <= == !=
val1 = 30
val2 = 40
val3 = 30
print(val1 > val2) #is leftside val greater than rightside value?
print(val1 > val3) #False
print(val1 >= val3) #is val1 greater than or equal to? - True
print(val1 < val2) #
print(val1 <= val3) #
print(val1 == val3) # == is for asking question, are they equal?
print(val1 == val2) #False
print(val1 != val3) #False
print(val1 != val2) #True
#bool operators - Logical operators : Input and Output- bool
#Prediction 1: Sachin and Laxman are going to do this job - F
#Prediction 2: Sachin or Laxman are going to do this job - T
#Actual: Sachin and Rahul did the job
#AND - even one False will make output False
#OR - even one TRUE will make output True
#NOT - opposite
val1 = 30
val2 = 40
val3 = 30
print("==>: ",val1 > val2 or val1 > val3 and val1 >= val3 or
val1 < val2 and val1 <= val3 or val1 == val3 and val1 == val2 or
val1 != val3 or val1 != val2)
#T
#membership operator - in
print(5 in [2,4,5,6,8])
#bitwise operator - works by converting the numbers to boolean
# binary equivalent of 33 ?
print(bin(33)) #0b100001
print(int(0b101111011111))
# and (&) or (|) >> (right shift) << (left shift)
print(22 & 33) #0
print(33 & 22) #0
print(bin(33), bin(22))
## 33 = 100001
## 22 = 010110
## (&) 000000
## (|) 110111
print(int(0b110111)) #55
print(33 | 22) # 55
##
print(55 >>2)
# 55 = 110111 >> 1 = 11011 >> 1 = 1101
print(int(0b1101)) #13
print(55 << 2) # 110111 << 1 = 1101110 << 1 = 11011100
###
# if - checking conditions
val1 = 30
if val1 > 0:
print("Value is positive")
print("Positive Positive Positive")
print("Thank you for using my program")
# 300 pts
## ? 300
print("You win")
print("You lose")
print("Tied")
#TUPLE - immutable version of List
str1 = "hello"
str2 = 'Good evening' \
'How are you?'
str3 = '''Hello there
hope you are doing good
we shall meet soon'''
str4 = """I am fine
how are you"""
print(str2)
print(str3)
print(type(str1))
#functions (global) v methods (belong to a class)
str1 = "hello"
print(str1.islower())
print(str1.isupper())
#isdigit()
val1 = input("Enter length of the rectangle: ")
if val1.isdigit():
val1 = int(val1)
print(val1)
else:
print("Sorry, this is not a valid number")
name1 = "Sachin Tendulkar"
print(name1.isalpha())
txt1 = "hello@123"
print(txt1.isalnum())
###
str1 = "HellOOO how are YOU?"
print(str1.lower())
#### Build a game - guessing number ####
import random
num = 55
attempt = 0
low,high = 1,100
while True:
#guess = int(input("Enter the number: "))
guess = random.randint(low, high)
attempt+=1
if guess ==num:
print(f"You got it in {attempt} attempts!")
break
elif guess > num:
print(f"Hint: Your value {guess} is higher")
high=guess-1
else:
print(f"Hint: Your value {guess} is lower")
low=guess+1
str1 = "Hello"
print(str1[-1] , str1[len(str1)-1])
print(str1[1])
print("Length = ",len(str1))
# range(a,b,c) - a=initial value, b = ending value, c=increment
# range(2,14,3) - 2,5,8,11
print(str1[0:4], str1[:4])
print(str1[-5:-1], str1[:-1])
# llo
print(str1[2:5], str1[2:])
print(str1[-3:])
vowel_count = 0
str1 = "This is a Sample STATEMENT to test"
for i in str1:
#print("Hello: ",i)
if i in 'aeiouAEOIU':
vowel_count+=1
print(f"Total vowels in '{str1}' is {vowel_count}")
# strings are immutable
str1 = "Hello"
str1=str1[0]+'E'+str1[2:]
print("New str1 = ", str1)
str2 = "This is a Sample STATEMENT to test"
str3="This,is,a,sample,text2,work,on,it"
output1 = str2.split()
output1 = str3.split(',')
print(output1)
print(str2)
print("Index: ",str2.index('i',3,len(str2)))
str4='abcd abc ab a'
#find all indices of b
tot = str4.count('ab')
print("Total bs = ",tot)
srt = 0
for i in range(3):
print(str4.index('ab',srt))
srt=str4.index('ab',srt)+1
### LIST: linear ordered mutable collection
l1 = []
print(type(l1))
l1=[3,"Hello",False,5.0, [2,4,6]]
l1.append(45)
#collection - stores multiple values with single variable name
#List, Tuple, Dictionary and Set
#List - linear collection
l1 = [5,"Hello",False,[4,8,12]]
print(type(l1)) #<class 'list'>
#accessing (similar to strings)
print(l1[1][0])
print(type(l1[1]))
print(l1[-1][1])
l2 = [5.6,"Good Evening"]
print(l1+l2)
print(l2 * 3)
l3=[-1]*10
print(l3)
for i in l1:
print(i)
for i in range(len(l1)):
print(l1[i])
l4=[]
#read the value from the user and if its number only then add to this list
val1 = input("Enter a number: ")
if val1.isdigit():
l4.append(int(val1))
print("After first step, L4 looks like: ",l4)
l5 = []
l5.append(100)
l5.append(200)
l5.insert(1,300) # takes- pos, value
l5.insert(1,400)
print("After addition: ",l5)
l5.pop(2) #input as position(index)
l5.remove(200) #takes values as input
print(l5)
### Stack & Queue ##
## Stack - LIFO data structure
stack=[]
while True:
print("Enter your options: ")
print("1. Display Your Stack")
print("2. Add a member to the stack")
print("3. Remove a member from the stack")
print("4. Exit")
ch=input("Choice : ")
if ch=="1":
print("Content of the stack is:\n",stack)
elif ch=="2":
pass
elif ch=="3":
pass
elif ch=="4":
break
else:
print("Sorry I dont understand you, try again!")
# Queue: First element added is the first one to go - FIFO (First In First Out)
l6 = [100,200,300,400,100,200,300,100,200,100]
print(l6.index(100)) #element
print(l6.index(100, 2)) # element with start position
print(l6.index(100, 5,8)) # element with start and end pos
print("count = ",l6.count(200))
#Deep and Shallow copy
l7 = l6 #Deep copy - 2 names for same set of values
l8 = l6.copy() #creates a duplicate copy -
print("1. L6 = ",l6)
print("1. L7 = ",l7)
print("1. L8 = ",l8)
l6.append(500)
l7.append(600)
l8.append(700)
print("2. L6 = ",l6)
print("2. L7 = ",l7)
print("2. L8 = ",l8)
# list is linear ordered mutable collection
l6[0] = 110 #edit the value unlike string
print(l6)
l7 = [2,4,6,8,10]
print(l6+l7) #l6 and l7 retains original values
l6.extend(l7) #l6 will get l7 values
print(l6)
print("Before Reverse: ",l6)
l6.reverse()
print("After Reverse: ",l6)
l6.sort()
print("After Sort: ",l6)
l6.sort(reverse=True)
print("After Reverse Sort: ",l6)
l6.clear()
print("Last: ",l6)
str1 = "HELLO HOW ARE YOU"
print(str1.split())
print(str1) #didnt change as it is immutable
l6.append(66)
print(l6) #existing list got changed as it is mutable
#Sequential search
list1 = [12,14,8,6,10,20,4,10,16,18,2]
num = 10
count_num=0
count_index = []
for i in range(len(list1)):
if list1[i]==num:
count_num+=1
count_index.append(i)
print(f"Number of values = {count_num} and indices are: {count_index}")
# Binary Search
list1 = [12,14,8,6,10,20,4,10,16,18,2]
list1.sort()
num = 22
first = 0
last = len(list1)-1
isFound = False
while True:
mid = (first+last) // 2
if list1[mid] ==num:
isFound = True
break
elif list1[mid] <num:
first = mid+1
else:
last = mid-1
if first> last:
break
if isFound:
print("Number is in the list")
else:
print("Number is not in the list")
Q_LIST = ["What is 1+3? (a) 4 (b) 8 (c) 2 (d) 10",
"What is 4+3? (a) 5 (b) 7 (c) 12 (d) 16",
"What is 4*3? (a) 6 (b) 8 (c) 12 (d) 16"]
A_LIST = ["A","B","C"]
import random
q_no = random.randint(0,2)
print("Let's play the Quiz!")
print(Q_LIST[q_no])
inp=input("Your answer please (select a/b/c/d) : ")
if inp.upper() ==A_LIST[q_no]:
print("Congratulations! You win")
else:
print("Sorry, thats not right")
### input: 29 3 2023 output: 29th March 2023
months= ["January","February","March","April","May","June","July","August",
"September","October","November","December"]
date_ending = ['st','nd','rd']+17*['th']+['st','nd','rd'] + 7*['th']+['st']
month_val = 3
print(months[3-1])
date = 21
print(str(date)+date_ending[date-1])
#Tuple - linear ordered immutable collection
t1 = ()
print("type 1 = ",type(t1), len(t1))
t1 = (1,)
print("type 1 = ",type(t1), len(t1))
t1 = (1,2,3,4,1,2,3,1,2,1) #packcing
print("type 1 = ",type(t1), len(t1))
print("4th member - ", t1[3])
print("2s = ",t1.count(2))
print("Position of 3 = ",t1.index(3))
t2 = (2,4,6,8)
a,b,c,d = t2 #unpacking
print(c,d,b,a)
# you can convert tuple to list and list to tuple
t2 = list(t2)
t2 = tuple(t2)
# Tuple like String, is immutable
#advantage is - working with Tuples is faster than reading through a list
##### DICTIONARY
# Dictionary - mutable collection of key-value pair
d1 = {}
print(type(d1))
d1 = {"Advait":[45,34,89,81],"Saurav":[12,42,23,44]}
print(d1["Advait"])
d2 = {False: 45,45:"Cricket","Name": "Sachin",10:"Zeeeero"}
# dictionary should have unique keys
print(d2)
d2.update(d1)
print("After Update: ", d2)
print("Only Keys = ",d2.keys())
print("Only Values = ",d2.values())
print("Only Items = ",d2.items())
for j in d2.keys():
print(j," = " ,d2[j])
print("Printing Items: ")
for i,j in d2.items():
print("Key:",i," & Value: ",j)
# to remove: pop(), popitem()
#popitem removes the last updated KEY (not value)
d3 ={1:"Hello",2:"Hola",3:"Namaste",4:"Bon Jor"}
print("D3 = ",d3)
d3.popitem()
print("After Popitem: ",d3)
d3 ={1:"Hello",2:"Hola",3:"Namaste",4:"Bon Jor",1:"Good Morning"}
print("D3 = ",d3)
d3.popitem()
print("2. After Popitem: ",d3)
d3.pop(1)
print("1. After Pop = ",d3)
actors = {"David":32,"Tim":42,"Rebecca":21,"Mary":45}
male = {"David":"LA","Tim":"NY"}
female = {"Rebecca":"SD","Mary":"WS"}
# David who is a male of 32 years lives in LA
for name in actors.keys():
print_sentence=name +" who is a "
for male_city in male.keys():
if name==male_city:
print_sentence+="male of "+str(actors[name]) +" years lives in "+ male[name]
for female_city in female.keys():
if name==female_city:
print_sentence+="female of "+str(actors[name]) +" years lives in "+ female[name]
print(print_sentence)
# SET - sets - linear unordered mutable collection - doesnt allow duplicate
set1 = {'Apple','Grapes','Banana','Orange'}
print(type(set1))
set1.add('Cherry')
set2 = {"Pineapple","Mango","Apple","Orange"}
# two ways to remove
set1.remove("Banana")
set1.discard("Apple")
#set1.remove("Rose") - if value isnt there throws error
set1.discard("Rose") #doesnt throw error
print("1. Set1: ",set1)
set1.pop()
set1.update(set2) #union
print("2. Set1: ",set1)
set1.clear()
print("3. Set1: ",set1)
### SET FUNCTIONS ####
set1 = {'Apple','Grapes','Banana','Orange'}
set2 = {"Pineapple","Mango","Apple","Orange"}
#UNION
print("UNION")
print(set1 | set2)
print(set1.union(set2))
print("INTERSECTION")
print(set1 & set2)
print(set1.intersection(set2))
print("DIFFERENCE")
print(set1 - set2)
print(set1.difference(set2))
print(set2 - set1)
print(set2.difference(set1))
print("SYMMETRIC DIFFERENCE")
print(set1 ^ set2)
print(set2 ^ set1)
print(set1.symmetric_difference(set2))
#update() will update the values of main set
# set1.union(set2) - this gives a new set as output
# set1.update(set2) - set1 is updated with the values
# union - update()
set1.update(set2)
print(set1)
# intersection: intersection_update()
set1.intersection_update(set2)
print(set1)
# difference_update()
set1.difference_update(set2)
print(set1)
#symmetric_difference_update()
set1.symmetric_difference_update(set2)
print(set1)
# set, list, tuple => they are inter-convertible
list1 = [3,6,9,12,3,6,9,3,6,3]
list1 = list(set(list1))
print(list1)
set1 = {'Apple','Grapes','Banana','Orange'}
set1 = list(set1)
set1.index("Grapes")
set1 = set(set1)
set1 = tuple(set1)
set1 = set(set1)
print(set1.issubset(set2))
#
list1 = [3,6,9,12,3,6,9,3,6,3]
list2 = [3,6,9,12,15]
#does all the elements of list2 present in list1?
t_list1 =set(list1)
if set(list1).issuperset(set(list2)):
print("yes, list2 value exists in list1")
else:
print("No, list2 has additional elements")
# Session on MODULES
#Create a python file with name p2.py and paste below programs there
#Run below programs from different file
var1 = 5
var1 = 50
print(var1)
#[1] 50
print(var1 + var4)
var = 55
var = 55
var4 = 55
#print(var1, var4)
#Error in print.default(var1, var4) : invalid printing digits 55
cat(var1, var4) #50 55
print(‘var1 + var4’)
cat(‘var1 + var4=’,var1 + var4)
var1 + var4= 105
#class
print(class(var2)) #[1] “list”
#class
var2 <- 6
print(class(var2)) #[1] “numeric”
#class
var2 <- 6
print(class(var2)) #[1] “numeric”
var2 <- 6.0
print(class(var2)) #[1] “numeric”
var2 <- 6L #”numeric”
print(class(var2)) #[1] “integer”
var2 <- “6L” #”integer”
print(class(var2)) #[1] “character”
var2 = TRUE
print(class(var2)) ## “logical”
var1 = 10
var2 = 15
print(var1 %% var2) #modulo – remainder
var1 = 100
print(var1 %% var2) #modulo – remainder
var1 = 95
var2 = 15
print(var1 %% var2) #modulo – remainder
var1 = 5
var2 = 15
print(var1 ^ var2) #power:
var1<- 15
var2 <- 20
var3 <- 15
#Relational Operator / comparison operator – output is Logical
print(var1 > var2) #is var1 greater than var2? – FALSE
print(var1 >= var3)
print(var1 <= var3)
print(var1 == var3) # double = is for asking is it equal?
print(var1 != var3)
#Logical operator- input and output both are logical
#I will do work 1 and work 2 today
#actual – I did only work 1 => No
#I will do work 1 or work 2 today
#actual – I did only work 1 => Yes
print(var1 == var3 | var1 != var3) #
print(var1 == var3 & var1 != var3)
#CONDITIONAL STATEMENTS
var1 <- 0
# is it positive or not ?
if (var1 >0) {
print(“Its positive”)
}
if (var1 >0) {
print(“Its positive”)
} else {
print(“Its not positive”)
}
if (var1 >0) {
print(“Its positive”)
} else if (var1<0){
print(“Its negative”)
} else {
print(“Its zero”)
}
#Collections: Vectors, Lists, Matrices, Arrays, Factors & DataFrames
#Vectors: will store multiple values of same datatype
vec1 <- c(45,56,36)
print(vec1)
#List: multiple data types
list1 = list(45,56,”Hello”,c(2,4,6))
print(list1)
#Matrix
mat1 = matrix(c(2,2,4,4,6,6,8,8,10,10,11,11) ,nrow=3,ncol = 4,byrow = FALSE)
print(mat1)
#Arrays – more than 2-D
arr1 = array(c(2,2,4,4,6,6,8,8,10,10,11,11),dim=c(2,4,2,2))
print(arr1)
#factors: categorical values
gender = factor(c(“M”,”M”,”M”,’F’,”F”,”F”))
print(class(gender))
print(nlevels(gender))
#DataFrame
players_stats <- data.frame(
ID= c(10,20,30),
Name=c(“Sachin”,”Virat”,”Dhoni”)
)
print(players_stats)
#membership: %in% : check if left side value is in right side or not
cities<- c(“Delhii”,”New York”,”London”)
print(“Delhi” %in% cities)
avg <- 98
## avg: 80: Grade A, 70-80: B, 60-70- C, 50-60 – D, 40-50: E , <40: Failed
if (avg >=80) {
print(“Grade: A”)
if (avg>=90){
print(“You win special certificate!”)
if (avg>=95) {
print(“You win medal”)
}
}
} else if (avg>=70) {
print(“Grade: B”)
} else if (avg>=60) {
print(“Grade: C”)
} else if (avg >=50) {
print(“Grade: D”)
} else if (avg>=40) {
print(“Grade: E”)
} else {
print(“Failed”)
}
result = 3
val1 <- switch(result,
“Grade A”,”Grade B”,”Grade C”,”Grade D”,”Grade E”, “Grade F”)
cat(“Result – “,val1)
#Loops – to repeat:
#repeat: keep repeating – break when a condition is met -EXIT Controlled
#while: will check for the condition and then repeat: ENTRY Controlled
#for (exactly how many times to run)
start = 1
repeat{
print(start)
if (start==10){
break
}
start = start+1
}
start = 11
while (start <=20) {
print(start)
start = start + 1
}
#For loop
words <- LETTERS[1:5]
for (i in words) {
print(i)
}
numbers <- seq(1,10,by=3)
for (i in numbers) {
print(i)
}
num = 30
start = 2
isPrime=TRUE
repeat{
if (num%%start==0){
isPrime = FALSE
break
}
if (start==num-1) {
break
}
start=start+1
}
if (isPrime) {
print(“Number is Prime”)
} else {
print(“Number is not Prime”)
}
## Assignment 1: Do the above with WHILE and FOR
## Assignment 2: Extend the same logic (one of the 3) to generate prime numbers
## between 1000 and 1500
for (num in 10:20){
#print(num)
num1=53
Isprime=TRUE
for (a in 3:(num1-1)) {
# cat(“testing value a”,a)
if (num1%%a == 0) {
Isprime=FALSE
#print(a)
#print(“inside Hello”)
break
}
}
if (Isprime==TRUE){
print(num)
}
}
########################
#Built-in function
print() #parameter
myfunc.generatePrime <- function(num) {
isPrime=TRUE
for(i in 2:(num-1)) {
if (num %%i==0) {
isPrime=FALSE
}
}
if (isPrime){
print(‘num is prime’)
} else {
print(‘num is not Prime’)
}
}
val <- mean(1:100)
print(val)
myfunc.generatePrime(30)
myfunc.checkPrime2 <- function(num) {
isPrime=TRUE
for(i in 2:(num-1)) {
if (num %%i==0) {
isPrime=FALSE
}
}
return(isPrime)
}
output <- myfunc.checkPrime2(53)
if (output){
print(‘num is prime’)
} else {
print(‘num is not Prime’)
}
for (num in 1000:1300) {
output <- myfunc.checkPrime2(num)
if (output){
print(num)
}
}
###### ##################### ################
#built in functions
print(seq(10,90))
print(max(10:90))
print(mean(10:90))
#user defined functions
sum.func <- function(num1=1, num2=2,num3=4,num4=6) {
cat(“Number 1 = “,num1)
cat(“\n Number 2 = “,num2,”\n”)
cat(“Number 3 = “,num3)
cat(“\n Number 4 = “,num4,”\n”)
result = num1 * num2
print(result)
}
#calling the functions by parameters
sum.func(40,30)
#call by name
sum.func(num2=40,num4=30)
## Assignments: Logic built using loops- convert them to
## functions
# #####################
a <- “Whats your name”
b <- ‘What\’s your name?’
print(paste(a,b,sep = “:”))
print(substring(a,2,6))
print(tolower(a))
print(toupper(a))
vector1 = c(“Monday”, TRUE,5,”Thursday”)
print(vector1)
print(vector1[2])
print(vector1[-2])
print(vector1[-2])
print(vector1[c(2,4)])
list1 = list(“Monday”, TRUE,5,”Thursday”)
print(list1)
library(ggplot2)
dataset2 <- data.frame(city=c(“City A”,”City B”,”City C”),
revenue=c(200,220,190))
ggplot(dataset2, aes(x=city,y=revenue)) +
geom_bar(stat=”identity”)
##############################
# VECTORS
vec1 <- c(2,4,”HELLO”, 5,6)
print(vec1)
#built-in
vec2 <- 5:50
print(vec2)
vec2 <- 5.4:30.8
print(vec2)
#start, end and increment by
vec3 <- seq(5,30.2,by=0.9)
print(vec3)
vec1 <- c(2,4,”HELLO”, 5,6,9,11)
print(vec1[c(2,3,6)])
vec1 <- c(2,4,6,8,10)
vec2 <- c(1,2,1,2,0)
print(vec1 + vec2)
vec1 <- c(2,4,6,8,10,12)
vec2 <- c(1,2)
print(vec1 + vec2)
vec1 <- c(2,4,16,18,10,12)
vec3 <- sort(vec1)
print(vec3)
vec3 <- sort(vec1, decreasing = TRUE)
print(vec3)
## LIST
list1 <- list(55,”Hello”,c(2,4,6), 5.4)
print(list1)
print(list1[c(1,3)])
list2 <- list(33,99)
mergedlist <- c(list1,list2)
print(mergedlist)
###MATRICES
mat1 <- matrix(c(2,4,6,8,10,12),nrow = 3,byrow=FALSE)
print(mat1)
mat2 <- matrix(c(2,4,6,8,10,12),nrow = 3,byrow=TRUE)
print(mat2)
print(mat1 + mat2)
print(mat1 – mat2)
print(mat1 * mat2)
print(mat1 / mat2)
## ARRAY
arr1 <- array(c(2:20),dim = c(2,2,2))
print(arr1)
print(arr1[1,2,1])
print(arr1[,2,1])
# c(1,2,1)
## Factors
regions<- factor(c(“N”,”S”,”S”,”W”,”N”,”E”,”E”,”E”))
print(is.factor(regions))
dataset1 <- data.frame(
quarter = c(“Q1″,”Q2″,”Q3″,”Q4”),
revenue = c(100,150,200,170),
fruits = c(“Apple”,”Banana”,”Mango”,”Oranges”)
)
print(dataset1)
shorterrow <- dataset1[2:3,]
print(shorterrow)
print(dataset1[,c(2,3)])
setwd(“D:\\dataset”)
dataset <- read.csv(“1_Data_PreProcessing.csv”)
print(dataset)
dataset$Salesperson = ifelse(is.na(dataset$Salesperson),
ave(dataset$Salesperson,FUN=function(x) mean(x,na.rm=TRUE)),
dataset$Salesperson)
dataset$Quotation = ifelse(is.na(dataset$Quotation),
ave(dataset$Quotation,FUN=function(x) mean(x,na.rm=TRUE)),
dataset$Quotation)
#connecting to SQL Server
#ipaddress, username, password, dbname
#install and run library – RODBC
#sql_connection = odbcConnect(“SQLSERVERODBC”)
#sqlQuery(sql_connection,”Select * from table1″)
#handling the categorical value
dataset$Region = factor(dataset$Region)
#step 3: breaking into training and test set
library(caTools)
split = sample.split(dataset$Win, SplitRatio = 0.8)
training_set = subset(dataset,split==TRUE)
test_set = subset(dataset,split==FALSE)
#Step 4: Feature Scaling
# to bring dataset in similar range
### 1. divide the column with higher value, inthis case quotation by 1000
### 2. Min-Max Scaling – values ranges between 0 to 1
### 3. Z Score normalization – preferred
training_set[,2:3] = scale(training_set[,2:3])
test_set[,2:3] = scale(test_set[,2:3])
test_set
setwd(‘D:\\dataset’)
dataset = read.csv(“2_Marks_Data.csv”)
scatter.smooth(x=dataset$Hours,y=dataset$Marks,main=”Hours Studied v Marks Obtained”)
#split the dataset into training set and test set
library(caTools)
split = sample.split(dataset$Marks, SplitRatio=0.8)
training_set = subset(dataset, split=TRUE)
test_set = subset(dataset, split=FALSE)
#create regression object
regressor=lm(formula = Marks~Hours, data = training_set)
summary(regressor)
# y = 20.76 + 7.57x
#
# While solving machine learning problem –
## 1. Is my data in a ready state to run the algorithm
## 2. Run the algorithm and check the values
#### 2.1. Is this the best performance of this model (can I improve this model)
#### 2.2: Is this the best model
## 3. Evaluate the performance of the algorithm
## RMSE and Rsquare (o to 1) – closer to 1 means best formance
## training performance v test performance – over fitting and under fitting
setwd(‘D:\\dataset’)
dataset = read.csv(“2_Marks_Data.csv”)
print(dataset)
scatter.smooth(x=dataset$Hours,y=dataset$Marks,main=”Hours Studied v Marks Obtained”)
#split the dataset into training set and test set
library(caTools)
split = sample.split(dataset$Marks, SplitRatio=0.75)
#training_set = subset(dataset, split=TRUE)
training_set = dataset[split,]
print(training_set)
test_set = dataset[!split,]
print(test_set)
#create regression object
regressor=lm(formula = Marks~Hours, data = training_set)
summary(regressor)
# y = 20.76 + 7.57x
#
# While solving machine learning problem –
## 1. Is my data in a ready state to run the algorithm
## 2. Run the algorithm and check the values
#### 2.1. Is this the best performance of this model (can I improve this model)
#### 2.2: Is this the best model
## 3. Evaluate the performance of the algorithm
## RMSE and Rsquare (o to 1) – closer to 1 means best formance
## training performance v test performance – over fitting and under fitting
y_predict = predict(regressor, newdata = test_set)
#y_predict = predict(regressor, newdata = training_set)
comparison = cbind(test_set, y_predict)
print(comparison)
mse = mean((comparison$Marks – comparison$y_predict)^2)
print(mse)
library(MLmetrics)
mape.value = MAPE(comparison$y_predict, comparison$Marks)
print(mape.value)
y_predict = predict(regressor, newdata = training_set)
#y_predict = predict(regressor, newdata = training_set)
comparison = cbind(test_set, y_predict)
print(comparison)
mse = mean((comparison$Marks – comparison$y_predict)^2)
print(mse)
library(MLmetrics)
mape.value = MAPE(comparison$y_predict, comparison$Marks)
print(mape.value)
########################
####
str1 = 'HELLO'
str2 = "I am fine"
str3 = '''Where are you going?
How long will you be here?
What are you going to do?'''
str4 = """I am here
I will be here for next 7 days
I am going to just relax and chill"""
print(type(str1),type(str2),type(str3),type(str4))
print(str1)
print(str2)
print(str3)
print(str4)
# What's you name?
str5 = "What's your name?"
print(str5)
#He asked,"Where are you?"
str6 = 'He asked,"Where are you?"'
print(str6)
#He asked,"What's your name?"
#escape sequence \
print('''He asked,"What's your name?"''')
print("He asked,\"What's your name?\"")
print('nnnnn\nnn\tnn')
print("\FOlder\\newfolder")
# \n is used to print newline in python
print("\\n is used to print newline in python")
# \\n will not print newline in python
print("\\\\n will not print newline in python")
str1 = "Hello You"
str2 = "There"
print(str1 + str2)
print(str1 *5)
for i in str1:
print("Hello")
#indexing
print(str1[2])
print("last element: ",str1[4])
print("last element: ",str1[-1])
print("second element: ",str1[-8])
print("ell: ",str1[1:4])
print("ell: ",str1[-8:-5])
print("First 3: ",str1[:3])
print("First 3: ",str1[:-6])
print("Last 3: ",str1[6:])
print("Last 3: ",str1[-3:])
#Methods - exactly same as your functions - only difference is they are linked to a class
import time
str1 = "HELLO"
print(str1.replace("L","X",1))
sub_str = "LL"
str2 = "HELLO HOW WELL ARE YOU LL"
cnt = str2.find(sub_str)
print("Count = ",cnt)
if cnt<0:
print("Sorry, no matching value hence removing")
else:
print("Value found, now replacing")
for i in range(5):
print(". ",end="")
time.sleep(0.5)
print("\n")
print(str2.replace(sub_str,"OOOO"))
out_res = str2.split("LL")
print("Output Result = ",out_res)
out_str = "LL".join(out_res)
print(out_str)
print(str2.title())
print(str2.lower())
print(str2.upper())
str3 = 'hello how well are you ll'
print(str3.islower())
print(str3.isupper())
num1 = input("Enter a number: ")
if num1.isdigit():
num1 = int(num1)
else:
print("Invaid input")
ename = input("Enter your first name: ")
if ename.isalpha():
print("Your name is being saved...")
else:
print("Invaid name")
#WAP to count of vowels in a sentence
para1 = "Work, family, and endless to-do lists can make it tough to find the time to catch up. But you'll never regret taking a break to chat with your friend, Frost reminds us. Everything else will still be there later."
sum=0
for l in para1:
if l=='a' or l=='A' or l=='e' or l=='E' or l=='i' or l=='I' or l=='o' or l=='O' or l=='u' or l=='3':
sum+=1
print("Total vowesl = ",sum)
sum=0
for l in para1.lower():
if l=='a' or l=='e' or l=='i' or l=='o' or l=='u':
sum+=1
print("Total vowesl = ",sum)
sum=0
for l in para1.lower():
if l in 'aeiou':
sum+=1
print("Total vowesl = ",sum)
########## LIST
#LIST
#collection of linear ordered items
list1 = [1,2,3,4,5]
print(type(list1))
print("Size = ",len(list1))
print(list1[0])
print(list1[-1])
print(list1[3])
print(list1[:3])
print(list1[-3:])
print(list1[1:4])
for i in list1:
print(i)
print([2,3,4]+[6,4,9])
print([2,3,4]*3)
str2 = "A B C D A B C A B A "
print(str2.count("D"))
print(list1.count(3))
l1 = [2,4,6,8]
print(l1.append(12))
print(l1)
l1[0]=10
print(l1)
l1.insert(2,15)
print(l1)
# Queue: FIFO
# Stack: LIFO
if 16 in l1:
l1.remove(16) #takes in value to remove
l1.remove(15)
print(l1)
l1.pop(1) #index
print(l1)
#################
while False:
print("Queue is: ",l1)
print("1. Add\n2. Remove\n3. Exit")
ch=input("Enter your choice: ")
if ch=="1":
val = input("Enter the value: ")
l1.append(val)
elif ch=="2":
l1.pop(0)
elif ch=="3":
break
else:
print("Try again!")
while False:
print("Stack is: ",l1)
print("1. Add\n2. Remove\n3. Exit")
ch=input("Enter your choice: ")
if ch=="1":
val = input("Enter the value: ")
l1.append(val)
elif ch=="2":
l1.pop(-1)
elif ch=="3":
break
else:
print("Try again!")
l2 = l1 #they become same
l3 = l1.copy()
print("1. List1 = ",l1)
print("1. List2 = ",l2)
print("1. List3 = ",l3)
l1.append(33)
l2.append(44)
l3.append(55)
print("2. List1 = ",l1)
print("2. List2 = ",l2)
print("2. List3 = ",l3)
l1.extend(l3)
print(l1)
print(l1.count(6))
sum=0
marks=[]
for i in range(3):
m = int(input("Enter marks in subject "+str(i+1)+": "))
marks.append(m)
sum+=m
print("Sum is ",sum, "and average is ",sum/3)
print("Marks obtained is ",marks)
#THREE STUDENTS AND THREE SUBJECTS:
allmarks=[]
for j in range(3):
sum=0
marks=[]
for i in range(3):
m = int(input("Enter marks in subject "+str(i+1)+": "))
marks.append(m)
sum+=m
print("Sum is ",sum, "and average is ",sum/3)
print("Marks obtained is ",marks)
allmarks.append(marks)
print("All the marks are: ",allmarks)
# All the marks are: [[88, 66, 77], [99, 44, 66], [44, 99, 88]]
# find the highest marks of each subject
#Tuple - linear order immutable collection
#strings are also immutable
tuple1 = (1,3,1,4,1,5,1,6)
print(type(tuple1))
print(len(tuple1))
print(tuple1.count(1))
print(tuple1.index(4))
print(tuple1[2])
for i in tuple1:
print(i)
t1 = list(tuple1)
t1.append(55)
t1=tuple(t1)
t2 = (2,4,6,8) #packing
#unpacking
a,b,c,d,e = t2
print(a,b,c,d)
#packing
print('hello')
print(5 +3 )
print('5+3=', 5+3)
var1 = 53
print(type(var1)) #<class 'int'> integer
var1 = '53' # str - string
print(type(var1))
var1 = 53.0 #float
print(type(var1))
var1 = 53j #complex
print(type(var1))
var1 = False #
print(type(var1))
count_of_pens = 23 #variable names can only have alphabets, numbers, _
#variable shouldnt begin with a number
cost_each_pen = 21.23
total_cost = cost_each_pen \
* count_of_pens
print('Cost of each pen is',cost_each_pen,"so for",count_of_pens,"pens, "
"total cost would be",total_cost)
#f-string format string
print(f"Cost of each pen is {cost_each_pen} so for {count_of_pens} pens, total cost would be {total_cost:.1f}")
###################
player= "Rohit"
country = "India"
position = "Captain"
print(f"The Player {player:<15} plays for the country {country:^15} and is {position:>15} of the team")
player= "Mbangawapo"
country = "Zimbabwe"
position = "Wicketkeeper"
print(f"The Player {player:<15} plays for the country {country:^15} and is {position:>15} of the team")
num1 = 5
num2 = 3
#Arithematic Operations
print(num1 + num2)
print(num1 - num2)
print(num1 * num2)
print(num1 / num2) #float output
print(num1 // num2) #integer division (double division)- integer (int)
print(num1 % num2) #remainder - modulo
print(num1 ** num2) #num1 to the power num2
#post office stamp problem for assignment
length = input("Enter length of the rectangle: ")
length = int(length)
print(type(length))
breadth = int(input("Enter breadth of the rectangle: "))
area = length * breadth
perimeter = 2*(length + breadth)
print(f"The rectangle with length {length} and bread {breadth} has an area of {area} and perimeter of {perimeter}")
#Comparison operators: < > <= >= == !=
#input here is variables, output is always bool value
val1=34
val2=34
print("Is val1 less than val2? ", val1 < val2)
print("Is val1 greater than val2? ", val1 > val2)
print("Is val1 less than or equal to val2? ", val1 <= val2)
print("Is val1 greater than or equal to val2? ", val1 >= val2)
print("Is val1 equal to val2? ", val1 == val2)
print("Is val1 not equal to val2? ", val1 != val2)
#Logical operators: and or not: Input is bool and output is also bool
print(val1 < val2 and val1 > val2 or val1 <= val2 and val1 >= val2 and val1 == val2 or val1 != val2)
#in AND - even if you have one false - o/p is False otherwise True
# in OR - even if you have one True - o/p is True otherwise False
print(not val1==val2)
#membership operator: in, not in
print( 5 in [5,10,15,20])
print("a" not in "ABCDE")
marks1 = int(input("Enter the marks in subject 1: "))
marks2 = int(input("Enter the marks in subject 2: "))
marks3 = int(input("Enter the marks in subject 3: "))
total = marks1 + marks2 + marks3
avg = total / 3
print(f"Total marks obtained is {total} and the average is {avg:.2f}")
#Conditional
num1 = -90
if num1 >0:
print("Number is positive")
print("This is second line of if")
if num1 >0:
print("Number is positive")
else:
print("Number is not positive")
if num1 >0:
print("Number is positive")
elif num1 <0:
print("Number is negative")
else:
print("Its Zero")
avg = 80
'''
avg >= 90: Grade A, 80-90: B, 70-80: C, 60-70: D, 50-60:E, 40-50: F and Grade Failed <40
'''
if avg>=90:
print("Grade: A")
elif avg>=80:
print("Grade: B")
elif avg>=70:
print("Grade: C")
elif avg>=60:
print("Grade: D")
elif avg>=50:
print("Grade: E")
elif avg>=40:
print("Grade: F")
else:
print("Grade: FAILED")
if avg>=40:
print("You have passed")
#print - You have passed for all those who got over 40%
avg=99.1
if avg>=40:
print("You have passed")
if avg >= 90:
print("Grade: A")
if avg >=95:
print("You win President's medal")
if avg>=99:
print("WOW")
elif avg >= 80:
print("Grade: B")
elif avg >= 70:
print("Grade: C")
elif avg >= 60:
print("Grade: D")
elif avg >= 50:
print("Grade: E")
else:
print("Grade: F")
else:
print("Grade: FAILED")
#to evaluate an algorithm - we look at Space complexity and Time complexity
# President medal for >95%
num1 = 78
if num1%2==0:
print("Even")
else:
print("Odd")
age=21
nationality = "USA"
if age>21 and nationality=="USA":
print("Vote")
####### LOOPS - repeatition
# for loop: exactly how manytimes to run the loop
# while loop: condition under which to repeat the loop
# range(a,b,c): a= initial value (including), b=end value (excluding), c= increment
#range(3,12,3): 3,6,9
#range(3,13,3): 3,6,9,12
for i in range(3,16,3):
print("HELLO")
print("i = ",i)
for i in range(5):
print("*",end=' ')
print()
'''
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
'''
for j in range(5):
for i in range(5):
print("*",end=' ')
print()
'''
*
* *
* * *
* * * *
* * * * *
'''
for j in range(5):
for i in range(j+1):
print("*",end=' ')
print()
'''
* * * * *
* * * *
* * *
* *
*
'''
for j in range(5):
for i in range(5-j):
print("*",end=' ')
print()
'''
*
* *
* * *
* * * *
* * * * *
'''
for j in range(5):
for i in range(5-j-1):
print(" ",end='')
for k in range(j+1):
print("*",end=' ')
print()
n=5
m=1
for j in range(1,11):
for i in range(1,11):
print(f"{i:>2} * {j:>2} = {j*i:>3}",end=" ")
print()
#### WHILE Loops: no fixed times - based on some condition
i=1
while i<=10:
print(i)
i+=1
#print hello untill user wants
ch='y'
while ch=='y':
print("HELLO")
ch=input("Press y to continue, anyother key to stop: ")
import random
num = random.randint(1,100)
print("==> ",num)
l1="="
total_attempts,max,min=0,0,9999
n=250000
pc = n//100
for i in range(n):
attempt = 0
while True:
guess = int(input("Guess the number: "))
#guess = random.randint(1,100)
attempt +=1 # attempt = attempt + 1
if guess ==num:
print(f"Congratulations! You have guessed it correctly in {attempt} attempts.")
total_attempts +=attempt
if min > attempt:
min = attempt
if max < attempt:
max = attempt
if i%pc==0:
print(i//pc,"% Completed")
break
elif guess > num:
print("Sorry, Actual number is smaller")
else: #guess < num:
#pass
print("Sorry, Actual number is greater")
print("Average number of attempts it took: ",total_attempts/n)
print("Maximum attempt:",max," and minimum attempt:",min)
#########################
######### Attempt 2 ##
import random
#print("==> ",num)
l1="="
total_attempts,max,min=0,0,9999
n=250000
pc = n//100
num = random.randint(1, 100)
for i in range(n):
attempt = 0
start, end = 1, 100
while True:
#guess = int(input("Guess the number: "))
guess = random.randint(start,end)
if guess>100 or guess <1:
continue #takes you to the beginning of the loop
attempt +=1 # attempt = attempt + 1
if guess ==num:
#print(f"Congratulations! You have guessed it correctly in {attempt} attempts.")
total_attempts +=attempt
if min > attempt:
min = attempt
if max < attempt:
max = attempt
if i%pc==0:
print(i//pc,"% Completed")
break
elif guess > num:
#print("Sorry, Actual number is smaller")
end=guess-1
else: #guess < num:
#pass
#print("Sorry, Actual number is greater")
start =guess+1
print("Average number of attempts it took: ",total_attempts/n)
print("Maximum attempt:",max," and minimum attempt:",min)
#Strings
str1 = 'Hello'
str2 = "How are you?"
str3 = """I am fine
I am great
I am amazing"""
str4 = '''I am here'''
print(str3)
print("What's your name?")
print('What\'s your name?')
print(str1 + " "+str2)
print(str1 *5)
for i in str1:
print("Hello")
#subset of the string
str6 = "What's your name?"
print(str6[0])
print(str6[2])
print(len(str6))
print(str6[len(str6) - 1]) #last char
print(str6[len(str6) - 2]) #2nd last char
print(str6[- 1]) #last char
print(str6[- 2]) #2nd last char
print(str6[-len(str6)])
print(str6[:3])
print(str6[-3:])
### Methods
print(str6.index("W"))
str1 = 'How are YOU I AM fine'
#they are immutable - you cant edit them
#str1[0] = 'h' #TypeError: 'str' object does not support item assignment
str1 = 'h'+str1[1:]
print(str1)
#functions are independent - print(), len(), input(), int(), str()
#methods - they are functions written within a class
print(str1.isdigit())
val1 = str(5)#input("Enter a number: ")
if val1.isdigit():
val1 = int(val1)
else:
print("Invalid number! setting val1 to zero")
val1 = 0
print(val1)
str2="Hello123"
print(str2.isalnum())
print(str1.upper()) #isupper()
print(str1.lower())
print(str1.title())
print(str1)
print(str1.split("o")) #default split is done on blank space
l1 = str1.split()
str2 = "|| ||".join(l1)
print(str2)
str3 = "Ioooamooofineooohowoooareoooyouooo?"
str4 = " ".join(str3.split("ooo"))
print(str4)
occ = str3.find("ooo")
print("Occurences = ",occ)
occ = str3.count("ooo")
print("Occurences = ",occ)
start,end=0,len(str3)
for i in range(occ):
po = str3.index('ooo',start,end)
print(po,end=" , ")
start = po+1
print()
# LIST
l1 = []
print(type(l1))
print(len(l1))
l1 = [4,"Hello",8.0,True,[2,4,5],"Fine"]
print(type(l1))
print(len(l1))
print(len(l1[4]))
print(l1[4][1])
#list is mutable (unlike str)
l1[0]= 444
print(l1)
print(l1+l1)
print(l1 *3)
for i in l1[4]:
print(i)
#list methods
#Tuple - immutable version list
t1 = (2,2,4,6,8,10) #packing
a,b,c,d,e,f = t1
#print(a,b,c,d,e,f)
print(type(t1))
print(len(t1))
for i in t1:
print(i," - ",t1)
print(t1[-2:])
#t1[2] = 88
print(t1.index(8))
print(t1.count(2))
t1= list(t1)
t1.append(18)
t1=tuple(t1)
a=(5,88,1,77,99)
b=(5,88,1,77,99)
if a>b:
print(a)
elif b>a:
print(b)
else:
print("both are same")
# List - linear ordered collection
l1=[4,6,8,10,12,8,10,12,8,0,8]
l1.append(55) #add element at the end
print(l1)
l1.insert(3,90)
l1.insert(3,70)
print("2. ",l1)
#
element = 12
if element in l1:
l1.remove(12)
else:
print("Element doesnt exist")
if l1.count(element)<1:
print("Element doesnt exist")
print()
print("3. ",l1)
l1.pop(3)
print("4. ",l1)
print(l1.index(8))
s,e=0,len(l1)
for i in range(l1.count(8)):
inx = l1.index(8,s,e)
print(inx,end=", ")
s=inx+1
print()
print("5. ",l1)
#copy
l2 = l1 #deep copy - (giving another name)
l3 = l1.copy() #shallow copy (photocopy)
print("After copy")
print("L1 = ",l1)
print("L2 = ",l2)
print("L3 = ",l3)
l1.append(101)
l2.append(102)
l3.append(103)
print("After editing")
print("L1 = ",l1)
print("L2 = ",l2)
print("L3 = ",l3)
l1.reverse()
print("Reverse: ",l1)
l1.sort()
print("Sort: ",l1)
l1.sort(reverse=True)
print("Sort R: ",l1)
#stack - LIFO: add using append, remove: pop(-1)
#queue - FIFO: append, pop(0)
# 1,5,8,9,7
#add 5 numbers from the user
sum=0
nums=[]
for i in range(5):
num = int(input("Enter the number: "))
sum+=num
nums.append(num)
print("Sum is ",sum)
print("Printing values: ",nums)
# [[a,b,c],[x,y,z],[p,q,r]]
master_list = []
for i in range(3):
temp=[]
for j in range(3):
m=int(input("Enter the marks: "))
temp.append(m)
master_list.append(temp)
print("Master list: \n",master_list)
'''
Assignment: Exten the above program to find highest marks for each subject and for
each students. Eg if the marks are: [[66, 77, 88], [98, 87, 76], [45, 65, 76]]
Highest for subject 1 = 98
2 = 87
3 = 88
Highest for Student 1 = 88
2 = 98
3 = 76
'''
# Dictionary - key:value
dict1 = {:,:, :,:}printtype
(dict1[])print
"Hello""Hola"
(dict1)
#deep copy
#shallow copy
(dict1.keys())print
(dict1.items())
i dict1.keys(): (i, dict1[i])
a,b dict1.items(): (a,b)
k dict1.items(): (k)
stats = {:[,,,],:[,,,],:[,,,]}for in
if "Virat"
dict3.pop()
#Sets
#data structures - collections: String, List, Tuple, Dictionary
#SETS - A B M O C - there is no order
# doesnt allow duplicate
set1 = {2,4,6,8}
print(set1)
#union intersection minus
set2 = {6,8,10,12}
#union
print(set1.union(set2))
print(set1 | set2)
#intersection
print(set1.intersection(set2))
print(set1 & set2)
#difference
print(set1.difference(set2))
print(set1 - set2)
print(set2.difference(set1))
print(set2 - set1)
#symmetric difference
#union of 2 differences
print(set1.symmetric_difference(set2))
print(set1 ^ set2)
print(set1, set2)
#update doesnt give new set, it changes the main set
set1.update(set2)
#union -> update
# {intersection_update, difference_update, symm_diff_update}
print(set1, set2)
set3 = {2,4,10,12}
# sets to list and to tuple
set1 = tuple(set1)
list(set1)
set()
print("HELLO")
# 1. INSTALLATION - getting your computer ready
# a. you can practice online at Google Colab (colab.reaserch.google.com)
# b. install all software on your machine -
## i. install Python : python.org and download the version of your choice
## ii. you can program on Python but its very easy to do
## iii. Another software to make it user friendly - IDE
## integrated development environment - you can practice
## eg Pycharm (jetbrains.com), VS Code , Notebooks like Jupyter, etc
print("Hello how are you?")
print('uyuyuiiugiub7y7 7t6t6vt87tovtotff87yvpyv')
print(5+11)
print('5+11=',5+11)
num1 = 5 #num1 are called variables
num2 = 11 #variable names are case sensitive, name should not start with a digit
#alphabets, numbers and underscore(_) - only these are allowed
print(num1 + num2)
var1 = 5
var2 = 5.0
var3 = "Hello"
var4 = True
var5 = 5j
#arithmetic operations
var1 = 15
var2 = 4
print(var1 + var2) #8
print(var1 - var2) #
print(var1 * var2)
print(var1 / var2)
print(var1 // var2) #integer divison, the integer part of the divison
print(var1 % var2) #modulo - remainder
print(var1 ** var2)
# a,b = 30,6 30 % 20
#Comparison operators: is ?? and answer will be bool
var1 = 15
var2 = 4
var3 = 15
print(var1 > var2)
print(var1 >= var3) #is it greater than or equal to
print(var1 < var2)
print(var2 <= var3)
print(var1 == var2)
print(var1 != var2)
#logical operators: input and output both are bool
#and, or, not
print(var1 == var2 and var1 != var2)
print(False and False) #False
print(False and True) #False
print(True and False) #False
print(True and True) # True
print(False or False) #False
print(False or True) #True
print(True or False) #True
print(True or True) # True
var1 = 15
var2 = 4
var3 = 15
print(var1 > var2 and var1 >= var3 or var1 < var2 or var2 <= var3 and var1 == var2 and var1 != var2)
#T or F
print("Hello \nHow are you \nI am fine thank you")
# \n is for newline
print("\\n is for newline")
print("\\\\n is for newline")
print("Hello",end=" ")
print("How are you",end=" ")
print("I am fine thank you",end="\n")
#Conditional statements
num1=0
if num1 > 0:
print("Positive")
print("This is a positive number")
print("my 3rd line for positive number")
elif num1 < 0:
print("Negative")
print("This is a negative number")
print("my 3rd line for negative number")
else:
print("Its neither positive or nagtive")
print("Thank you for using IF")
num1 = int(input("Enter a number to be tested: "))
if num1 %3==0:
print("Its divisible by 3")
else:
print("Its not divisible by 3")
avg = 89
if avg>=50:
print("Result: Pass")
#85: Grade A, 75> Grade B, >60: C, > 50-D
if avg>=85:
print("Grade: A")
if avg>=90:
print("Please collect your merit certificate!")
if avg>=95:
print("You win President's medal")
elif avg>=75:
print("Grade: B")
elif avg>=60:
print("Grade: C")
else:
print("Grade: D")
else:
print("Result: Fail")
# a & b=> which is greater
a=45
b=95
if a>b:
print("A is greater than B")
elif b>a:
print("B is greater than A")
else:
print("They are equal")
#Assignment: take three numbers a,b,c and arrange them in increasing order without using any inbuilt function.
[Hint: Build on the last example shared]
#INPUT: a,b,c=20,60,30
#OUPUT: 20,30,60 (increasing order)
a,b,c=80,60,30
# a>b, b>c => clear
# a>b, c>b => wrote additional code to find
#b>a,
a, b, c=50,30,30 #increasing order
if a<b:
#print (f"{b} {a}")
if c<b: #b is greatest
if a<c:
print(f"{a}, {c}, {b}")
else:
print(f"{c}, {a}, {b}")
else: #c is greatest
print (f"{a}, {b}, {c}")
else: #b<a
if c<b: #b is greatest
print(f"{c}, {b}, {a}")
else: #b is lowest
if a<c:
print (f"{b}, {a}, {c}")
else:
print(f"{b}, {c}, {a}")
# 30<50=50
# LOOPS - repeation
#FOR loop - when we know exactly how many times to execute
### Range(a,b,c): generates values from a (inclusive) to b (exclusive) at steps of c
# range(2,12,3): 2,5,8,11
# range(3,12,3): 3,6,9
# range(6,10): a&b. c is default 1:
#range(5): b & a,c are deafult 0 and 1 respectively => 0,1,2,3,4
for i in range(5):
print("Hello",i)
for i in range(3,12,3):
print("Hi there", i)
for i in range(2,12,3):
print("Hello there", i)
print()
for i in range(5):
print("*",end=" ")
print()
'''
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
'''
for j in range(5):
for i in range(5):
print("*",end=" ")
print()
#While Loop = based on condition- executes till its True
#print("Hello")
# loops - for & while
## For loop is used when you know exactly how many times to run the loop
for i in range(2,10,2):
print("* ",i)
print("-------------")
'''
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
'''
for j in range(5):
for i in range(5):
print("*",end=" ")
print()
print("-------------")
for i in range(5):
print("* "*5)
print("-------------")
'''
*
* *
* * *
* * * *
* * * * *
'''
for j in range(5):
for i in range(j+1):
print("*",end=" ")
print()
print("-------------")
'''
* * * * *
* * * *
* * *
* *
*
'''
for j in range(5):
for i in range(5-j):
print("*",end=" ")
print()
print("-------------")
'''
* * * * *
* * * *
* * *
* *
*
'''
for j in range(5):
for x in range(j):
print(" ",end="")
for i in range(5-j):
print("*",end=" ")
print()
print("--- Assignment ----------")
'''
*
* *
* * *
* * * *
* * * * *
'''
#WHILE
i=0
while i<5:
print("hello")
i+=1
print("Thank you")
cont='y'
while cont=='y' or cont=='Y':
print("Ok, printing some values...")
cont = input("Do you want to continue? (y for yes)")
cont='y'
while cont=='y' or cont=='Y':
sum=0
for i in range(3):
marks = int(input("Enter the marks: "))
sum+=marks
print("Total marks is",sum,"and average is",sum/3)
cont = input("Do you want to continue? (y for yes)")
import turtle
#screen = turtle.getscreen()
plot = turtle.Turtle() #creates screen
screen = turtle.Screen()
turtle.Screen().bgcolor("yellow")
plot.forward(100)
turtle.color("red")
plot.right(90)
plot.forward(100)
plot.right(90)
plot.forward(100)
plot.right(90)
plot.forward(100)
##
plot.right(45)
plot.forward(100)
plot.right(45)
plot.forward(100)
plot.right(135)
plot.forward(100)
plot.right(45)
plot.forward(100)
plot.backward(100)
plot.left(45)
plot.backward(100)
plot.left(45)
plot.forward(100)
plot.right(45)
plot.forward(100)
## circle
plot.circle(50)
width = screen.window_width()
height = screen.window_height()
plot.penup()
plot.goto(width/2,height/2)
plot.pendown()
plot.dot(30,"red")
turtle.mainloop() #keep displaying the screen
# Forward, Backward, Left, Right
#When the value is = to 16 and you want to add 5, you add 5 units to 16
num1 = 18
num2 = 5
num3 = num1 + num2
num4 = num1 * num2
num5 = num1 / num2
num6 = num1 - num2
# 3 square + 4 square + 5 square + 6 square + 7 square
num1 = 3
num2 = 4
num3 = 5
num4 = 6
num5 = 7
result = num1 * num1 + num2*num2 + num3*num3 + num4*num4 + num5*num5
print ("Final result = ",result)
#read 2 values from the user and display val1 square + val2 square
val1 = input("Enter val1: ")
val1 = int(val1)
val2 = int(input("Enter val2: "))
#when you read using input by default values are of type string
print("Type = ", type(val1))
print("Result=", val1*val1+val2*val2)
#solve: 2x.x + 9x - 5 = 0
# 1. Calculate Descriminant: b.b - 4.a.c = 81+40=121
# 2. Root of D = 121 ** 0.5 = +/- 11
# 3. x = (-b +/-D) / 2.a = (a) (-9+11)/4 = 0.5 (b) (-9-11)/4 = -5
print("Solving a quadratic equation for x:")
a=4
b=2
c=-6
D = b**2 - 4*a*c
print("Finding Discriminant = ",D)
if D==0:
print("This equation has only 1 solution and x = ",(-b/(2*a)))
elif D<0:
print("This equation has imaginary solution")
else:
sol1 = (-b+D**0.5)/(2*a)
sol2 = (-b - D ** 0.5) / (2 * a)
print(f"Solutions are: {sol1} and {sol2}")
## x.x + 4.5x - 2.5 = 0 / (x+p)(x+q): p.q = -2.5 and p+q = 4.5
#If the number given divides into 2 whole numbers, then it is even. If it is divided by two and it is a decimal or fraction, then it is odd.
#If the number is divided by 5 and the value is a whole number, than it is a multiple of 5
# if <> - elif <> - else
num = -35
if num>0:
print("Its positive")
print("Its inside num > 0 condition")
else:
print("Its not positive")
print("What else")
print("This is another statement")
# In a block (only IF, IF-ELSE or IF-ELIF-ELSE)
num2 = -10
if num2==0:
print("Its zero")
elif num2<0:
print("Its negative")
else:
print("Its positive")
# WAP to check if a number is odd or even (I will do now)
#Modify the above program to give a message is number is less than 0
# Msg - "Invalid number
num3 = -11
if num3 %2==0:
print("Its even number")
else:
print("Its odd number")
print('5+3=',5+3) #comment 1
#practice day 1
var1 = 45
print(type(var1)) #<class 'int'> integer
# we have 5 basic types of data (datatypes)
var1=55.0
print(type(var1)) #<class 'float'>
var1 = 3j
print(type(var1)) #<class 'complex'>
print(3j * 3j) #(-9+0j)
var1="Hello"
print(type(var1)) #<class 'str'> string
var1=True #False
print(type(var1))
quantity = 53
price = 119.77
total_cost = quantity * price
#The total cost of 50 pens costing 119 is total_cost
print("The total cost of",quantity,"pens costing",price,"is",total_cost)
#format string - f string
print(f"The total cost of {quantity} pens costing {price} is {total_cost:.2f}")
name1 ="Rohit";country="India"
position="Captain"
print(f"Player named {name1:.<12} plays for {country:X^15} and he is {position:>15} of the team")
name1 ="Mangwabate"
country="Zimbabwe"
position="Wicket-keeper"
print(f"Player named {name1:<12} plays for {country:^15} and he is {position:>15} of the team")
var1,var2 = 50, 60
print("I am here");print("Hello \\\n Ok \tfine",end=". ")
print("How are you?" );
#str, float, int, bool, complex
# \ is called escape character
num1 = 55
name1 = "Sachin"
#whenever you read as input, the data type will always be string
name2 = input("Enter your name: ")
print(name2)
num2 = input("Enter radius: ")
num2 = int(num2)
print(num2)
area = 3.14*num2*num2
print("Area = ",area)
# + / - *
# // (integer division - this will give you only integer part of the division)
# ** power
# %(modulo -remainder)
num1 = 13
num2 = 5
#Arithematic/math operations
print(num1 + num2)
print(num1 - num2)
print(num1 * num2)
print(num1 / num2) #output wll always be float
print(num1 // num2) #output will always be int
print(num1 ** num2) # 10 to the power 5
print(num1 % num2) #modulo -
#logical operators: Input is bool values and output is also bool: and or not
#and - even if one value is false it will give you false
#or - even if one value is True it will give you true
#not - opposite: not True = False
print(True and False)
print(False or False)
print(not False)
num1 = 9
num2 = 13
print("Logical operator")
print(num1 > num2 or num1 < num1 and num2 == num1 or num1 != num2 or num1!=num2)
#(T)
#comaprison operators: < > <= >= == != : True/False
num1 = 9
num2 = 13
print("is num1 equal to num2? ",num1==num2)
print("is num1 not equal to num2? ",num1!=num2)
print("is num1 greater than num2? ",num1>num2)
print("is num1 greater than or equal to num2? ",num1>=num2)
print("is num1 less than num2? ",num1<num2)
print("is num1 less than or equal to num2? ",num1<=num2)
r=5
pi=3.14
print("Radius = ",pi*r**2)
# is 71 divisible by 9 ?
print(71%9)
####################
#is x divisible by y or not?
#conditions - they are used to check if its condition 1 or 2
# if to check conditions followed by Conditional or logical- they only
# give you True or False as output
x = 72
y = 9
if x%y==0:
print(f"{x} is perfectly divisible by {y}")
print("PERFECT DIVISIBLE")
else:
print(f"{x} is NOT divisible by {y}")
num1 = 0
if num1 >0:
print("Its positive")
else:
print("Its not positive")
num1 = 0
if num1 >0:
print("Its positive")
elif num1<0:
print("Its negative")
else:
print("Its not positive")
sum=448
avg=sum/5
print("AVG = ",sum/5)
#if avg>90 - grade A
# 80-90 - grade B # 70-80 - grade C # 60-70 - grade D
# 50-60 - grade E #40-50" grade F #<40 - Fail
if avg>=90:
print("PASS")
print("Grade = A")
elif avg>=80:
print("PASS")
print("Grade = B")
elif avg >=70:
print("PASS")
print("Grade = C")
elif avg >= 60:
print("PASS")
print("Grade = D")
elif avg >=50:
print("PASS")
print("Grade = E")
elif avg>=40:
print("PASS")
print("Grade = F")
else:
print("Grade = Failed")
#Nested conditions
if avg>=40:
print("PASS")
if avg >= 90:
print("Grade = A")
if avg>=95:
print("You win President's medal!")
elif avg >= 80:
print("Grade = B")
elif avg >= 70:
print("Grade = C")
elif avg >= 60:
print("Grade = D")
elif avg >= 50:
print("Grade = E")
else:
print("Grade = F")
else:
print("Grade = Failed")
num1,num2,num3=10,15,20
if num1>=num2:
print(f"{num1} >= {num2}")
else:
print(f"{num2} >= {num1}")
#Repeating - loops in programming language
# range(a,b,c): a-start number (including), b-end number (excluding), c-increment
range(3,15,4) # 3, 7, 11,
range(3,7) # c is default 1: 3,4,5,6
range(4) #a is default 0, c is default 1: 0,1,2,3
# there are 2 ways loops are implemented in Python: FOR / WHILE
#for - when you know exactly how many times to run
for counter in range(1,11):
print(counter)
#odd numbers between 1 and 10
for i in range(1,11,2):
print(i)
# even numbers between 1 and 10
for i in range(2, 11, 2):
print(i)
for i in range(5):
print("*")
for i in range(5):
print("*",end=' ')
print("\n\n")
'''
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
'''
for j in range(5):
for i in range(5):
print("*",end=' ')
print()
'''
*
* *
* * *
* * * *
* * * * *
'''
for j in range(5):
for i in range(j+1):
print("*",end=' ')
print()
'''
* * * * *
* * * *
* * *
* *
*
'''
for j in range(5):
for i in range(5-j):
print("*",end=' ')
print()
'''
*
* *
* * *
* * * *
* * * * *
'''
for j in range(5):
for i in range(5-j-1):
print(" ",end='')
for k in range(j + 1):
print("*", end=' ')
print()
'''
* * * * *
* * * *
* * *
* *
*
'''
'''
1* 1=1 2* 1=2 ... 10*1=10
...
1*10=10 2* 10=20 ... 10*10
'''
for n in range(1,11):
for m in range(1,11):
print(f"{m:>2} * {n:>2} = {n*m:>3}",end=" ")
print()
#while - when you until what condition
num = 51
isPrime = True
for i in range(2, num):
if num % i == 0:
isPrime = False
break
if isPrime:
print("Its a prime number ")
else:
print("Its not a prime number ")
# print prime numbers between 1000 and 5000
start, end = 1000, 5000
for k in range(start, end + 1):
isPrime = True
for i in range(2, k):
if k % i == 0:
isPrime = False
break
if isPrime:
print(k, end=" , ")
### WHILE LOOP
#print numbers from 1 to 10
i = 1
while i <=10:
print(i)
i+=1
choice = True
while choice:
print("Hello")
ch = input("Press n to stop")
if ch=='n':
choice = False
while True:
print("Hello")
ch = input("Press n to stop")
if ch == 'n':
break
#Strings
str1 = 'Hello'
str2 = "Hi there"
str3 = '''Hi there
how are you
Where are you?'''
str4 = """I am fine
I am here
How are you"""
print(str4)
print(str1 + str2)
print(str1 *3)
for i in str1:
print(i)
print(str1[2])
#str1[1] = "B"
print(str1[4], str1[-1])
print(str1[0],str1[-5])
print(str1[:3])
print(str1[-3:])
str1= "Hello How ARE YOU"
print(str1.isalnum())
num1 = input("Enter a number: ")
if num1.isdigit():
int(num1)
print(num1)
else:
print("Invalid number")
str2= ' '
print(str2.isspace())
print(str2.islower())
print(str2.isupper())
str3 = "Hello HI There"
print(str3.lower())
print(str3.upper())
print(str3.title())
str4 = str3.replace("h","ABC",1)
print(str4)
str4 = str3.split('e')
print(str4)
str5 = "e".join(str4)
print(str5)
print("HI" in str3)
print(str3.find("HI"))
print(str3.count('e'))
#Sets
#data structures - collections: String, List, Tuple, Dictionary
#SETS - A B M O C - there is no order
# doesnt allow duplicate
set1 = {2,4,6,8}
print(set1)
#union intersection minus
set2 = {6,8,10,12}
#union
print(set1.union(set2))
print(set1 | set2)
#intersection
print(set1.intersection(set2))
print(set1 & set2)
#difference
print(set1.difference(set2))
print(set1 - set2)
print(set2.difference(set1))
print(set2 - set1)
#symmetric difference
#union of 2 differences
print(set1.symmetric_difference(set2))
print(set1 ^ set2)
print(set1, set2)
#update doesnt give new set, it changes the main set
set1.update(set2)
#union -> update
# {intersection_update, difference_update, symm_diff_update}
print(set1, set2)
set3 = {2,4,10,12}
# sets to list and to tuple
set1 = tuple(set1)
list(set1)
set()
#List - linear ordered mutable
list1 = []
print(list1)
print(type(list1))
list1 = [2,4,6.5,"Hello",True,[2,8,12]]
print("Number of elements = ",len(list1))
print(list1[1])
print(type(list1[-2]))
print(type(list1[-1]))
#sum and avg of 5 marks
list_of_marks=[]
sum = 0
for i in range(0):
m=int(input("Enter marks: "))
list_of_marks.append(m)
sum+=m
print("Sum = ",sum)
print("List of marks = ",list_of_marks)
## 2 ways to add values to an existing list: append, insert
list_of_marks.insert(1,100)#index, value
print("List of marks = ",list_of_marks)
list_of_marks.insert(1,80)
print("List of marks = ",list_of_marks)
list_of_marks.insert(1,90)
print("List of marks = ",list_of_marks)
list_of_marks.insert(1,30)
print("List of marks = ",list_of_marks)
list_of_marks.insert(1,40)
print("List of marks = ",list_of_marks)
list_of_marks.sort(reverse=True)
print("(Sort)List of marks = ",list_of_marks)
list_of_marks.reverse()
print("(Reverse)List of marks = ",list_of_marks)
num_to_delete = 80
if num_to_delete in list_of_marks:
list_of_marks.remove(num_to_delete)
print("(remove)List of marks = ",list_of_marks)
list_of_marks.pop(3)
print("(pop)List of marks = ",list_of_marks)
num_to_delete = 80
if list_of_marks.count(num_to_delete) >0:
list_of_marks.remove(num_to_delete)
print("(remove)List of marks = ", list_of_marks)
list1 = [10,3,4,5,3,4,6,3,7,8,3,6]
print(list1.count(3))
print(list1.index(3)) #index(element,start,end)
#index of all the values in the list:
element_search = 3
inx_found=0
for i in range(list1.count(element_search)):
print(list1.index(element_search, inx_found), end=" ,")
inx_found = list1.index(element_search, inx_found) + 1
print()
list1 = [1,3,5,7]
list2 = list1 #they are same , just have 2 names
list3 = list1.copy() #copy - creates a different copy
print("1. List 1 = ",list1)
print("1. List 2 = ",list2)
print("1. List 3 = ",list3)
list1.append(15)
list2.remove(5)
list3.append(19)
print("2. List 1 = ",list1)
print("2. List 2 = ",list2)
print("2. List 3 = ",list3)
# TUPLE - immutable form of List
t1 = ()
print(type(t1))
t1 = (1,)
print(type(t1))
t1=list(t1)
t1.append(40)
t1 = tuple(t1)
#list, tuple and sets are all 3 inter convertible
#advantage of tuple -its fast to access
t2 = (1,2,3) #packing
a,b,c = t2 #unpacking
print(a,b,c)
#Dictionary - uses its own key to track values
#list, tuple, sets - linear
list1 = [2,3,4,5,2,3,4,2,3,2]
list1=list(set(list1))
print(list1)
#Dictionary: key:value pairs
d1 = {}
print(type(d1))
d1 = {4,5}
print(type(d1))
d1 = {4:"Sachin","Matches":5}
print(type(d1))
print(d1)
print("Keys: ",d1.keys())
print("Values: ",d1.values())
print("(Key, Value): ",d1.items())
print(d1['Matches'])
d2={'City':'Mumbai'}
d1.update(d2)
print(d1)
d2={'City':'Hyderabad'}
d1.update(d2)
print(d1)
#deep v shallow copy
d3 = d1 # deep - creates another name for d1
d4 = d1.copy()
print("D1 = ",d1)
print("D3 = ",d3)
print("D4 = ",d4)
d1.update({'Sports':'Cricket'})
print("D1 = ",d1)
print("D3 = ",d3)
print("D4 = ",d4)
#remove a member: pop(), popitem()
d1.pop(4) #pop takes key as input
print("D1 after pop: ", d1)
d1.popitem() #last added value is removed - remeber last added is not same as last updated
print("D1 after popitem: ", d1)
print(" iterating through keys: ")
for i in d1.keys():
print(i)
print(" iterating through values: ")
for i in d1.values():
print(i)
print(" iterating through items")
for i in d1.items():
print(i)
for i,j in d1.items():
print(f"Keys = {i} and value = {j}")
women = {101:"Renuka", 103:"Smriti",105:"Harmanpreet",107:"Deepti"}
men = {102:"Sachin",104:"Virat",106:"Rohit"}
all ={211:'Steve',222:'Warner'}
all.update(women)
all.update(men)
print(all)
for key,val in all.items():
if key in women.keys():
print(f"{val} plays in women's team")
elif key in men.keys():
print(f"{val} plays in men's team")
else:
print(f"{val} neither part of mens or womens team")
# SET - sets - linear unordered mutable collection - doesnt allow duplicate
set1 = {'Apple','Grapes','Banana','Orange'}
print(type(set1))
set1.add('Cherry')
set2 = {"Pineapple","Mango","Apple","Orange"}
# two ways to remove
set1.remove("Banana")
set1.discard("Apple")
#set1.remove("Rose") - if value isnt there throws error
set1.discard("Rose") #doesnt throw error
print("1. Set1: ",set1)
set1.pop()
set1.update(set2) #union
print("2. Set1: ",set1)
set1.clear()
print("3. Set1: ",set1)
### SET FUNCTIONS ####
set1 = {'Apple','Grapes','Banana','Orange'}
set2 = {"Pineapple","Mango","Apple","Orange"}
#UNION
print("UNION")
print(set1 | set2)
print(set1.union(set2))
print("INTERSECTION")
print(set1 & set2)
print(set1.intersection(set2))
print("DIFFERENCE")
print(set1 - set2)
print(set1.difference(set2))
print(set2 - set1)
print(set2.difference(set1))
print("SYMMETRIC DIFFERENCE")
print(set1 ^ set2)
print(set2 ^ set1)
print(set1.symmetric_difference(set2))
#update() will update the values of main set
# set1.union(set2) - this gives a new set as output
# set1.update(set2) - set1 is updated with the values
# union - update()
set1.update(set2)
print(set1)
# intersection: intersection_update()
set1.intersection_update(set2)
print(set1)
# difference_update()
set1.difference_update(set2)
print(set1)
#symmetric_difference_update()
set1.symmetric_difference_update(set2)
print(set1)
# set, list, tuple => they are inter-convertible
list1 = [3,6,9,12,3,6,9,3,6,3]
list1 = list(set(list1))
print(list1)
set1 = {'Apple','Grapes','Banana','Orange'}
set1 = list(set1)
set1.index("Grapes")
set1 = set(set1)
set1 = tuple(set1)
set1 = set(set1)
print(set1.issubset(set2))
#
list1 = [3,6,9,12,3,6,9,3,6,3]
list2 = [3,6,9,12,15]
#does all the elements of list2 present in list1?
t_list1 =set(list1)
if set(list1).issuperset(set(list2)):
print("yes, list2 value exists in list1")
else:
print("No, list2 has additional elements")
# Basic data types (stores only 1 value) - int, float, str,bool and complex
# Collections (stores multiple values - 1D) - list, tuple,dictionary, set
# functions - own functions - user defined functions
# print(), input(), type(), int(), str(), len() : in-built functions (developers of python have already written for us)
# we will learn to write our own functions
#first part of writting function is to Define the meaning- function
def mytext(val1, val2,val3):#required positional argument
print("Hello How are you today?")
print("Where are you going?")
print("I am fine.",val1)
def mytext2(val1=0, val2=0,val3=9):#default positional argument
print("Hello How are you today?")
print("Where are you going?")
print("I am fine.",val1)
print("Values are: ",val1,val2,val3)
#demo keyword (non-positional) arguments
def mytext3(val1, val2,val3):#default positional argument
print("Hello How are you today?")
print("Where are you going?")
print("I am fine.",val1)
print("Values are: ",val1,val2,val3)
#default argument (non-required) & keyword argument (non-positional)
mytext(5,10,0)
print("Done with one time calling now calling second time")
mytext2(20,4,10)
mytext2(20,4)
mytext2(10,5,1)
mytext3(val3=10,val1=9,val2=8)
mytext3(100, val3=9,val2=8)
#print()
# numpy, pandas (Multi-D)
def isPositive(val1):
#result = "Positive" # "+ve" / 1
if val1 >0:
return 1
else:
return 0 #print("Its not Positive")
res = isPositive(100)
if res==1:
print("Its positive, now lets go ahead building our logic")
else:
print("STOP! STOP! STOP!")
isPositive(-100)
isPositive(90)
def myfun1(val1): #Required positional argument
print(val1)
myfun1(10)
def myfun2(val1,val2,val3): #Required positional argument
print(val1, val2,val3)
myfun2(10,30,20)
# Default argument
def myfun3(val1,val2=100,val3="New York"): #Required positional argument
print(val1, val2,val3)
return val1+val2
myfun3(10,30)
## keywords - (non-positional)
result = myfun3(val2=99,val3=77,val1=44)
print("Result = ",result)
## single function to perform perimeter of triangle, square, pentagon, hexagon
def calcPerimeter(s1=0,s2=0,s3=0,s4=0,s5=0,s6=0):
if s1==0:
return "You have not provided any value!"
elif s2==0:
return "Perimeter of a line is the same value which is "+str(s1)
elif s3==0:
print("We cant have a closed shape with 2 only sides!")
elif s4==0:
print("Its a Triangle! Perimeter is",s1+s2+s3)
elif s5==0:
if s1==s2 and s2==s3 and s3==s4:
print("its a square with perimeter",s1*4)
elif s1==s2 and s4==s3:
print("Its a rectangle with Perimeter",2*(s1+s3))
else:
print("Its an irregular 4 sides shape with perimeter",s1+s2+s3+s4)
elif s6==0:
print("Its a pentagon with perimeter",s1+s2+s3+s4+s5)
else:
print("Its a hexagon with perimeter",s1+s2+s3+s4+s5+s6)
result = calcPerimeter()
print(result)
result = calcPerimeter(5)
print(result)
calcPerimeter(6,8)
calcPerimeter(8,7,5,4,3,3)
def checkNum(val1):
if val1 <0:
return -1 #for negative
elif val1==0:
return 0 #zero value
else:
return 1 #positive
res = checkNum(100)
if res==-1:
print("Negative")
elif res==0:
print("Zero")
else:
print("Positive")
res = checkNum(-100)
if res==-1:
print("Negative")
elif res==0:
print("Zero")
else:
print("Positive")
MASTERLIST = [{“ItemCode”: 101,“Item”:“Shirt”,“Price”:28.2},
{“ItemCode”: 102,“Item”:“Bag”,“Price”:18.2},
{“ItemCode”: 103,“Item”:“Book1”,“Price”:38.2},
{“ItemCode”: 104,“Item”:“Watch”,“Price”:58.2},
{“ItemCode”: 105,“Item”:“Shoes”,“Price”:128.2},
{“ItemCode”: 106,“Item”:“Laptop”,“Price”:1028.2}]
class ShoppingCart:
def __init__(self):
self.myshoppingcart = []
#add product to the cart
def add_prod(self):
each_item = {}
item_name = input(“Enter the product Name: “)
not_in_list = True
for items in MASTERLIST:
if item_name==items[“Item”]:
not_in_list = False
if not_in_list:
print(“Sorry, That Item is Out of Stock!”)
else:
item_size = input(“Enter the product Size: “)
item_color = input(“Enter the product Color: “)
item_quantity = int(input(“Enter the product Quantity: “))
each_item ={“Item”:item_name,“Size”:item_size,“Color”:item_color,“Quantity”:item_quantity}
self.myshoppingcart.append(each_item)
#print(self.myshoppingcart)
def display_prod(self):
print(“Item Size Color Quantity”)
for i in self.myshoppingcart:
for k,j in i.items():
print(f”{j:<10}“, end=” “)
print()
def remove_prod(self):
item_name = input(“Enter the product name to remove: “)
not_in_list = True
for items in self.myshoppingcart:
if item_name == items[“Item”]:
self.myshoppingcart.remove(items)
not_in_list = False
if not_in_list:
print(“Sorry, That Item is not in your shopping cart!”)
else:
print(“Item is now removed from your shopping cart!”)
def generate_receipt(self):
print(“Item Size Color Quantity Price”)
print(“=======================================================”)
item_cost = 0
price = 0
grand_total = 0
for i in self.myshoppingcart:
for k,j in i.items():
for master_list in MASTERLIST:
if j==master_list[“Item”]:
price=master_list[“Price”]
print(f”{j:<10}“, end=” “)
if k==“Quantity”:
item_cost = j*price
grand_total+=item_cost
print(f”{round(item_cost):<10}“, end=” “)
print()
print(“——————————————————-“)
print(” TOTAL: $”+str(round(grand_total)))
print(“=======================================================”)
if __name__==“__main__”:
sc1 = ShoppingCart()
sc2 = ShoppingCart()
while True:
print(“1. View my cart \n2. Add to my cart\n3. Remove from my cart\n4. Generate My Receipt\n5. Exit”)
ch=input(“Enter your option: “)
if ch==“1”:
if len(sc1.myshoppingcart)==0:
print(“Your shopping cart is empty!”)
else:
sc1.display_prod()
elif ch==“2”:
sc1.add_prod()
elif ch==“3”:
sc1.remove_prod()
elif ch==“4”:
if len(sc1.myshoppingcart)==0:
print(“Your shopping cart is empty!”)
else:
sc1.generate_receipt()
elif ch==“5”:
break
else:
print(“Invalid option”)
Descriptive Statistics – Types of Data
UNIVARIATE – One Variable
text1 = 'Hello' \
'World'
text2 = "hi there"
text3 = '''How are you
where are you
what do you want?'''
text4 = """I am fine"""
#I am just trying to run few programs
print(text1,end=' ') #printing first text print("Hello")
print(text2)
print(text3)
print(text4)
'''this is a
multi line text
please ignore'''
print(type(True))
cost = 60
quantity = 212
total_cost = cost * quantity
print("Cost of each pen is $",cost,"so for ",quantity,"pens, its going to be $",total_cost)
print(f"Cost of each pen is $ {cost} so for {quantity} pens, its going to be $ {total_cost}")
print("Hellon\nhow are you?\nI am fine")
txt1 = "Hello"
a1 = 5
b1 = False
#user input- will provide the value
inp1 = input("Enter your name:")
print(inp1)
inp2 = int(input("Enter your age:"))
print(type(inp2))
print(inp2)
num1 = 10
num2 = 20
#ArithmeticOperations
print(num1 + num2)
print(num1 - num2)
print(num1 * num2)
print(num1 / num2)
print(num1 // num2) #integer division - ignores the decimal part
print(num1 ** num2) #power - exponent
print(num1 % num2) #mod (modulus) - remainder
#Comparison operators: < > <= >= == !=
# :input is anything but output is always bool value
#Logical operations: and or not
# :both input and output are bool value
#comparison operators - output is always Bool
## > < >= <= == !=
num1 = 56
num2 = 56
num3 = 57
print(num1 <= num2) # less than or equal - T
print(num1 <= num3) # T
print(num1 < num2) # F
print(num1 >= num2) #T
print(num1 > num2) #F
print(num1 > num3) #F
print(num1 == num2) #T
print(num1 != num2) #F
#Logical operators
# Today we will do operators and conditions
# I do only operators
#
# Today we will do operators or conditions
# I do only operators
# and or not
num1 = 56
num2 = 56
num3 = 57
print(num1 <= num2 and num1 <= num3 or num1 < num2 and num1 >= num2 or num1 > num2 and num1 > num3 or num1 == num2 and num1 != num2)
#T
#
print()
num1 = int(input("Enter a number: "))
print(type(num1))
#
# 1. Calculate area and perimeter of a rectangle with given sides
# 2. Calculate area and circumference of a circle with radius as input from the user
#conditional statements
num1 = -56
#ask you is it a positive number ?
if num1>0:
print("hello")
print("Yes its positive")
elif num1 <0:
print("Its negative")
else:
print("Its neither positive nor negative")
avg = 76
'''
avg>85 : Grade A
avg>70: Grade B
:avg >60: Grade C
avg >40: Grade D
<40: Grade E
'''
if avg >=85:
print("Grade A")
if avg >= 90:
print("You win special certificate")
if avg>95:
print("You get President's meddal")
elif avg>70:
print("Grade B")
elif avg>60:
print("Grade C")
elif avg>40:
print("Grade D")
else:
print("Grade E")
#get input of 3 numbers and find the largest and the smallest number
#loops - Keep repeating
# FOR - when you know how many times
# WHILE - untill the condition is true
#range(a,b,c): start = a, go upto b (excluding), c = increment
#range(3,19,4) = 3, 7, 11,15,
##range(3,9) (increment by default 1) - 3, 4,5,6,7,8
## range(4) (by default start=0, increment = 1)- 0,1,2,3
for i in range(5):
print("*",end=" ")
print("\n -------------- \n\n")
'''
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
'''
for j in range(5):
for i in range(5):
print("*",end=" ")
print()
print("\n -------------- \n\n")
'''
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
'''
for j in range(5):
for i in range(5):
print("*",end=" ")
print()
print("\n -------------- \n\n")
'''
*
* *
* * *
* * * *
* * * * *
'''
for j in range(5):
for i in range(j+1):
print("*",end=" ")
print()
print("\n -------------- \n\n")
'''
* * * * *
* * * *
* * *
* *
*
'''
for j in range(5):
for i in range(5-j):
print("*",end=" ")
print()
print("\n -------------- \n\n")
'''
* * * * *
* * * *
* * *
* *
*
'''
for j in range(5):
for i in range(j):
print("",end=" ")
for i in range(5-j):
print("*",end=" ")
print()
'''
*
* *
* ** *
* *
'''
sum=0
while True:
num1 = int(input("Enter a number (-999 to stop):"))
if num1==-999:
break #throw us out of the current loop
sum+=num1
print("Sum of the given numbers are: ",sum)
## check if prime number
while True:
num1 = int(input("Enter a number (0 to stop/negative numbers not allowed): "))
if num1 == 0:
break
if num1<0:
print("Invalid number")
continue
isPrime = True
for i in range(2,num1//2+1):
if num1 % i==0:
isPrime=False
break
if isPrime:
print(f"{num1} is a Prime number")
else:
print(f"{num1} is not a Prime number")
## generate if prime number
num1=0
while True:
#num1 = int(input("Enter a number (0 to stop/negative numbers not allowed): "))
num1+=1
if num1 == 0:
break
if num1<0:
print("Invalid number")
continue
isPrime = True
for i in range(2,num1//2+1):
if num1 % i==0:
isPrime=False
break
if isPrime:
print(f"{num1}")
ch=bool(input())
if ch!=False:
break
#read the marks of 5 subjects and print total and average
total = 0
while True:
for i in range(5):
marks = int(input("Enter the marks in subject "+str(i+1)+": "))
total+=marks
print(f"Total marks is {total} and average is {total/5:.2f}")
ch=bool(input())
if ch:
break
### Enter marks for 5 subjects for as long as user wants to repeat
while True:
sum = 0
for i in range(5):
marks = int(input("Enter your marks in subject "+str(i+1)+": "))
sum+=marks
print("Total marks obtained = ",sum)
ch=bool(input("Enter any key to stop:"))
#converting empty string to bool will result in
# False, anything will result in True
if ch:
break
########################
####
str1 = 'HELLO'
str2 = "I am fine"
str3 = '''Where are you going?
How long will you be here?
What are you going to do?'''
str4 = """I am here
I will be here for next 7 days
I am going to just relax and chill"""
print(type(str1),type(str2),type(str3),type(str4))
print(str1)
print(str2)
print(str3)
print(str4)
# What's you name?
str5 = "What's your name?"
print(str5)
#He asked,"Where are you?"
str6 = 'He asked,"Where are you?"'
print(str6)
#He asked,"What's your name?"
#escape sequence \
print('''He asked,"What's your name?"''')
print("He asked,\"What's your name?\"")
print('nnnnn\nnn\tnn')
print("\FOlder\\newfolder")
# \n is used to print newline in python
print("\\n is used to print newline in python")
# \\n will not print newline in python
print("\\\\n will not print newline in python")
str1 = "Hello You"
str2 = "There"
print(str1 + str2)
print(str1 *5)
for i in str1:
print("Hello")
#indexing
print(str1[2])
print("last element: ",str1[4])
print("last element: ",str1[-1])
print("second element: ",str1[-8])
print("ell: ",str1[1:4])
print("ell: ",str1[-8:-5])
print("First 3: ",str1[:3])
print("First 3: ",str1[:-6])
print("Last 3: ",str1[6:])
print("Last 3: ",str1[-3:])
#Methods - exactly same as your functions - only difference is they are linked to a class
import time
str1 = "HELLO"
print(str1.replace("L","X",1))
sub_str = "LL"
str2 = "HELLO HOW WELL ARE YOU LL"
cnt = str2.find(sub_str)
print("Count = ",cnt)
if cnt<0:
print("Sorry, no matching value hence removing")
else:
print("Value found, now replacing")
for i in range(5):
print(". ",end="")
time.sleep(0.5)
print("\n")
print(str2.replace(sub_str,"OOOO"))
out_res = str2.split("LL")
print("Output Result = ",out_res)
out_str = "LL".join(out_res)
print(out_str)
print(str2.title())
print(str2.lower())
print(str2.upper())
str3 = 'hello how well are you ll'
print(str3.islower())
print(str3.isupper())
num1 = input("Enter a number: ")
if num1.isdigit():
num1 = int(num1)
else:
print("Invaid input")
ename = input("Enter your first name: ")
if ename.isalpha():
print("Your name is being saved...")
else:
print("Invaid name")
#WAP to count of vowels in a sentence
para1 = "Work, family, and endless to-do lists can make it tough to find the time to catch up. But you'll never regret taking a break to chat with your friend, Frost reminds us. Everything else will still be there later."
sum=0
for l in para1:
if l=='a' or l=='A' or l=='e' or l=='E' or l=='i' or l=='I' or l=='o' or l=='O' or l=='u' or l=='3':
sum+=1
print("Total vowesl = ",sum)
sum=0
for l in para1.lower():
if l=='a' or l=='e' or l=='i' or l=='o' or l=='u':
sum+=1
print("Total vowesl = ",sum)
sum=0
for l in para1.lower():
if l in 'aeiou':
sum+=1
print("Total vowesl = ",sum)
########## LIST
#LIST
#collection of linear ordered items
list1 = [1,2,3,4,5]
print(type(list1))
print("Size = ",len(list1))
print(list1[0])
print(list1[-1])
print(list1[3])
print(list1[:3])
print(list1[-3:])
print(list1[1:4])
for i in list1:
print(i)
print([2,3,4]+[6,4,9])
print([2,3,4]*3)
str2 = "A B C D A B C A B A "
print(str2.count("D"))
print(list1.count(3))
l1 = [2,4,6,8]
print(l1.append(12))
print(l1)
l1[0]=10
print(l1)
l1.insert(2,15)
print(l1)
# Queue: FIFO
# Stack: LIFO
if 16 in l1:
l1.remove(16) #takes in value to remove
l1.remove(15)
print(l1)
l1.pop(1) #index
print(l1)
#################
while False:
print("Queue is: ",l1)
print("1. Add\n2. Remove\n3. Exit")
ch=input("Enter your choice: ")
if ch=="1":
val = input("Enter the value: ")
l1.append(val)
elif ch=="2":
l1.pop(0)
elif ch=="3":
break
else:
print("Try again!")
while False:
print("Stack is: ",l1)
print("1. Add\n2. Remove\n3. Exit")
ch=input("Enter your choice: ")
if ch=="1":
val = input("Enter the value: ")
l1.append(val)
elif ch=="2":
l1.pop(-1)
elif ch=="3":
break
else:
print("Try again!")
l2 = l1 #they become same
l3 = l1.copy()
print("1. List1 = ",l1)
print("1. List2 = ",l2)
print("1. List3 = ",l3)
l1.append(33)
l2.append(44)
l3.append(55)
print("2. List1 = ",l1)
print("2. List2 = ",l2)
print("2. List3 = ",l3)
l1.extend(l3)
print(l1)
print(l1.count(6))
sum=0
marks=[]
for i in range(3):
m = int(input("Enter marks in subject "+str(i+1)+": "))
marks.append(m)
sum+=m
print("Sum is ",sum, "and average is ",sum/3)
print("Marks obtained is ",marks)
#THREE STUDENTS AND THREE SUBJECTS:
allmarks=[]
for j in range(3):
sum=0
marks=[]
for i in range(3):
m = int(input("Enter marks in subject "+str(i+1)+": "))
marks.append(m)
sum+=m
print("Sum is ",sum, "and average is ",sum/3)
print("Marks obtained is ",marks)
allmarks.append(marks)
print("All the marks are: ",allmarks)
# All the marks are: [[88, 66, 77], [99, 44, 66], [44, 99, 88]]
# find the highest marks of each subject
#
num = 51
isPrime = True
for i in range(2,num):
if num%i==0:
isPrime = False
break
if isPrime:
print("Its a Prime number")
else:
print("Its not a prime number")
###
start1,end1= 500,5000
for j in range(start1,end1+1):
isPrime = True
for i in range(2, j):
if j % i == 0:
isPrime = False
break
if isPrime:
print(j,end=", ")
# while loop
#While loop
i=1
while i<=10:
print(i)
i+=1
ch=True
while ch:
num=int(input("Enter a number: "))
if num%2==0:
print("Its an even number!")
else:
print("Its an odd number")
choice=input("Do you want to continue (press n to stop):")
if choice=='n':
ch=False
while True:
num=int(input("Enter a number: "))
if num%2==0:
print("Its an even number!")
else:
print("Its an odd number")
choice=input("Do you want to continue (press n to stop):")
if choice=='n':
break
import random
n=1
total_attempts = 0
max=0
min=99999999
for i in range(n):
comp_num = random.randint(1,100)
print("Random: ",comp_num)
attempt = 0
while True:
guess = int(input("Guess the number: "))
#guess = random.randint(1, 100)
attempt+=1
if guess == comp_num:
print("Congratulations! You have guessed it correctly. Attempts = ",attempt)
total_attempts+=attempt
if attempt>max:
max=attempt
if attempt <min:
min=attempt
break
elif comp_num > guess:
print("Sorry! You have guessed low!")
else:
print("Sorry! You have guessed high")
print("Avg attempts = ",total_attempts/n)
print("Max attempts =",max,"and Minimum attempts = ",min)
'''
Avg attempts = 99.384
Max attempts = 529 and Minimum attempts = 1
'''
#######
import random
n=500
total_attempts = 0
max=0
min=99999999
for i in range(n):
comp_num = random.randint(1,100)
print("Random: ",comp_num)
attempt = 0
low,high=1,100
while True:
#guess = int(input("Guess the number: "))
guess = random.randint(low, high)
attempt+=1
if guess == comp_num:
print("Congratulations! You have guessed it correctly. Attempts = ",attempt)
total_attempts+=attempt
if attempt>max:
max=attempt
if attempt <min:
min=attempt
break
elif comp_num > guess:
print("Sorry! You have guessed low!")
low= guess+1
else:
print("Sorry! You have guessed high")
high=guess-1
print("Avg attempts = ",total_attempts/n)
print("Max attempts =",max,"and Minimum attempts = ",min)
'''
Avg attempts = 7.522
Max attempts = 15 and Minimum attempts = 1
'''
txt1 = "HELLO"
txt2 = 'How are yOU?'
# what's your name?
print("what's your name?")
print('He asked,"Where are you?"')
#He asked,"What's your name?"
print('''He asked,"What's your name?"''')
print("He asked,\"What's your name?\"")
txt3 = '''How are you?
Where are you?
what do you want?'''
txt4 = """I am fine
I am here
I want nothing"""
print(txt4)
for ch in txt1:
print(ch)
print(txt1+" "+txt2)
print(txt1*10)
#indexing
print(txt1[0])
print(txt1[4])
length = len(txt1)
print("Total characters = ", length)
print(txt1[length-1])
print(txt1[-1])
print(txt1[length-2])
print(txt1[length-3])
print(txt1[-3])
print(txt1[0]+txt1[1]+txt1[2])
print(txt1[0:3])
print(txt1[0:4])
print(txt1[1:4])
print(txt1[2:5])
print(txt1[-3:])
print(txt1[:])
#METHODS ARE INBULT FUNCTIONS OF A CLASS
print(txt1.lower())
print(txt2.upper())
#String - class
# functions specific to classes are called methods
str1 = "O I see I am fine see you are NICE"
str2 = "hello hi"
print(str1.islower())
print(str2.islower())
str3 = str2.upper()
print(str3)
print(str3.isupper())
num1 = input("Enter a number: ")
if num1.isdigit():
num1=int(num1)
else:
print("Invalid number as input, setting it it zero")
num1 = 0
print("Num1 = ",num1)
#create username with only alphabets and numbers
username = input("Enter your username: ")
if username.isalnum():
print("Username accepted")
else:
print("Invalid Username!")
print(str1.upper())
print(str1.lower())
print(str1.title())
str1 = "O I see I am fine I see I you are NICE"
print("i" in str1)
print(str1.find('I'))
print(str1.count('I'))
print(str1.find('I',3))
print(str1.find('I',9))
char = "ee"
num_pos = str1.count(char)
print("Total times char is present = ",num_pos)
print("Their positions are: ",end=" ")
start_pos = 0
for i in range(num_pos):
nxt_val = str1.find(char,start_pos)
print(nxt_val,end= " , ")
start_pos = nxt_val+1
print(str1.replace("ee","EE"))
words = str1.split("I")
print(words)
str6 = "I".join(words)
print(str6)
#LIST
l1 = [5,4,"Hello",99,False,100,[20,10, 5]]
print(type(l1))
print(len(l1))
l2 =l1[-1]
print(l2[1])
print(l1[-1][2])
print(l1[1:4]) #4, "hello" 99
print("Only Integer values fom List")
for i in l1:
if str(i).isdigit():
print(i)
print(l1+l2)
print(l2*5)
list1 = [2,4,6,8,10]
list1.insert(2,33)
list1.remove(10) # remove asks
print(list1)
# let's simulate Queue behavior: FIFO
list2 = []
while True:
print("1. Add Value to the Stack")
print("2. Remove Value from the Stack")
print("3. Exit from the Stack")
ch=input("Enter the operation you want to perform: ")
if ch=="1":
value = input("Enter the member to be added: ")
list2.append(value)
print("Printing the stack:",list2)
elif ch=="2":
list2.pop(0) # position is entered
print("Printing the stack:", list2)
elif ch=="3":
print("Removing all the values from the queue and terminating it!")
list2.clear()
break
else:
print("Invalid options")
#STACK - FILO
list2 = []
while True:
print("1. Add Value to the Queue")
print("2. Remove Value from the Queue")
print("3. Exit from the queue")
ch=input("Enter the operation you want to perform: ")
if ch=="1":
value = input("Enter the member to be added: ")
list2.append(value)
print("Printing the queue:",list2)
elif ch=="2":
list2.pop(0)
print("Printing the queue:", list2)
elif ch=="3":
print("Removing all the values from the queue and terminating it!")
list2.clear()
break
else:
print("Invalid options")
#WAP to input marks in 3 subjects for 3 students
# [[1,2,3], [10, 20,30], [5,0,15]]
num_students = 3
num_subjects = 3
all_data=[]
for i in range(num_students):
t_list = []
for j in range(num_subjects):
val = input("Enter the marks in subject "+str(j+1)+" and student "+str(i+1)+": ")
t_list.append(val)
all_data.append(t_list)
print("Display all data: ",all_data)
l1 = [1,3,6,5,7,7,7]
#List is mutable
l1[2]=50
print(l1)
count = l1.count(7)
print("Count = ", count)
print("Index = ", l1.index(7))
#deep copy v shallow copy
print("1. Before")
print(l1)
l2 = l1 # deep copy
l3 = l1.copy()#shallow copy
print("1. AFTER")
print("Values in Chapter 1 and Room 1:", l1)
print("Values in Chapter 1 and Room 1:", l2)
print("Values in Chapter 1 and Room 1:", l3)
l1.append(50)
l3.insert(100,200)
l2. insert(45,20)
print("2. AFTER")
print("Values in Chapter 1 and Room 1:", l1)
print("Values in Chapter 1 and Room 1:", l2)
print("Values in Chapter 1 and Room 1:", l3)
l1 = [10,40,60,20,40,80]
l1.sort()
print("Sort: ",l1)
l1.reverse()
print("Reverse: ",l1)
l3=[3]
l3.extend(l1) # l3 = l3 + l1
print(l3)
#l3 = l1 +l2
#Assignment: Read marks in 3 subjects for 3 students and find the highest marks in each subject
Ignore the libraries to be used instructions above, instead, use Connecting to Database and save and retrive data from the database. You can use SQLITE3 or MYSQL or any database of your choice. You need to implement all the features mentioned.
#TUPLE - immutabe form of List
t1 = (2,4,6,8,10,12,14,16,18,20) #packing
print(type(t1))
print(t1[4])
t2=()
print(type(t2))
t3=(3,)
print(type(t3))
for i in t1:
print(i, end=" , ")
print()
t1 = list(t1)
print(type(t1))
t1.append(99)
t1=tuple(t1)
t2 = (3,6,9,12)
a,b,c,s = t2
print(a)
t4=(5,99)
t5=(5,99)
if t4>t5:
print(t4, "greater")
elif t5>t4:
print(t5, "greater")
else:
print("Both are same")
##Dictionary: there is no defaut order
# each member has its own key
dict1 ={"Name": "Rohit","Sport":"Cricket",1:"Captain",1:100}
print(type(dict1))
print(dict1['Name'])
print(dict1[1])
#Immutable: String, Tuple
#Mutable: List, Dictuinary, Sets
t_dict = {'City':'Mumbai'}
dict1.update(t_dict)
print(dict1)
dict2 = dict1
dict3 = dict1.copy()
print("1. Dictionaries")
print(dict1)
print(dict2)
print(dict3)
dict1.pop(1)
dict3.popitem()
print("2. Dictionaries")
print(dict1)
print(dict2)
print(dict3)
print("Items (Key,value): ",dict1.items())
print("Values: ",dict1.values())
print("Keys: ",dict1.keys())
dict1.clear()
print(dict1)
marks_dict={}
for i in range(2):
name1 = input("Enter the students name: ")
t_list = []
for j in range(3):
m=int(input("Enter marks: "))
t_list.append(m)
marks_dict.update({name1:t_list})
print("Marks details: ")
for i,j in marks_dict.items():
print(f"{i} obtained marks: {j}")
list_temp= ['Maths','Science','Social Studies']
all_marks = {}
student1 = {}.fromkeys(list_temp,-9)
all_marks.update(student1)
print("All marks: \n",all_marks)
for i in all_marks.keys():
marks = int(input("Enter the marks for "+i+" : "))
all_marks[i]=marks
print("All marks are: ",all_marks)
#Basic data types
val1 = 5 #int
print(type(val1))
val1 = '5' #str
print(type(val1))
val1 = 5.0 #float
print(type(val1))
val1 = True #bool - True / False
print(type(val1))
val1 = 5j #complex - j (square root of -1)
print(type(val1))
val1 = 4
## comparison operators - takes num as input but gives bool as output
## logical operators: take bool value as input and gives bool as output
# AND: All the values have to be True to be True else its False
# True and True = True
# T and T and T and T and T and T and F = False
# OR: All the values have to be False to be False otherwise its True
## True or False = True
## control structure with logical operators, you mean multiple conditions
val1 = 185
if val1>0 and val1 <100:
print("Value is between 0 and 100")
## Basic graphics, sets, functions,
list1 = [5, 5,5,8.3, False,"Hello",[1,6,9]]
tup1 = (5, 8.3, False,"Hello",[1,6,9]) #list and tuple have auto index: 0...
dict1 = {5:"Hello","Name":"Sachin"}
# SET -
set1 = {"Apple","Banana"}
print(type(set1))
print(set1)
# sets - union, intersection, difference, symmetric difference
set1 = {2,4,6,8}
set2 = {1,3,5,7,6,8}
# union - it puts all the values together
set3 = set1.union(set2)
print("Set 3 = ", set3)
#SETS
set1 = {1,2,3,10,20}
set2 = {1,2,3, 50,60}
print("UNION: ")#union
set3 = set1.union(set2)
print(set3)
print(set1 | set2)
print("INTERSECTION: ")#
set3 = set1.intersection(set2)
print(set3)
print(set1 & set2)
print("DIFFERENCE: Set1 - Set2")#
set3 = set1.difference(set2)
print(set3)
print(set1 - set2)
print("DIFFERENCE: Set2 - Set1")#
set3 = set2.difference(set1)
print(set3)
print(set2 - set1)
print("SYMMETRIC DIFFERENCE")#
set3 = set2.symmetric_difference(set1)
print(set3)
print(set2 ^ set1)
#### update, difference_update, intersection_update, symmetric_difference_update)
#without update, the operations result in new sets but with update, existing set is updated
### Functions - giving a name to a block of code
def mystatements(): # user defined functions
print("Whats your name?")
print("Where are you going?")
print("How are things?")
mystatements()
mystatements()
mystatements()
#below is an example of udf which doesnt take any argument nor does it return any value
def add_2_num():
num1 = input("Enter a number: ")
num2 = input("Enter another number: ")
sum = num1 + num2
print("total value is",sum)
#add_2_num()
#this is an example of function returning a value (still no arguments)
def add_2_num_ret():
num1 = input("Enter a number: ")
num2 = input("Enter another number: ")
sum = num1 + num2
#print("total value is",sum)
return sum
#result = add_2_num_ret()
#print("After return value is", result)
#example of function that takes argument
#TYPE 1 Required positional arguments
def add_2_num_arg(num1, num2):
sum = num1 + num2
#print("total value is",sum)
return sum
#TYPE 2: Default (opp of Required) positional arguments
def add_2_num_arg1(num1, num2="19"): #num2 is default
sum = num1 + num2
#print("total value is",sum)
return sum
#values are mapped from left to right
output = add_2_num_arg1("15","89")
print("Result from add_2_num_arg1: ",output)
output = add_2_num_arg1("15")
print("Result from add_2_num_arg1: ",output)
# TYPE 3: Keyword arguments (non-Positional)
output = add_2_num_arg1(num2 = "15",num1 = "89")
print("Result from add_2_num_arg1: ",output)
# TYPE 4: Variable length arguments
def myfun1(*var1, **var2):
print("Var 1 = ",var1) #Tuple
print("Var 2 = ", var2) #Dictionary
myfun1(2,4,99,"hello",False,[2,3,4],num2 = "15",num1 = "89")
#WAP to count positive numbers entered by a user
def checkPositive(*num): #variable length arguments
total=0
for i in num:
if i >0:
total+=1
return total
def checkPositive2(num): #variable length arguments
if num >0:
print("Positive")
else:
print("Not Positive")
def checkPositive3(num): # variable length arguments
if num > 0:
return 1
else:
return 0
val1 = [13,35,90,-9,0,8]
tot = checkPositive(13,35,90,-9,0,8,-8,-6,6)
print("Number of positive values = ",tot)
val2 = -9
result = checkPositive3(val2)
if result==1:
print("Number is positive")
else:
print("Number is not positive")
total = 0
val1 = [13,35,90,-9,0,8]
for i in val1:
total += checkPositive3(i)
print("Total positive values = ",total)
#######################
def myfactorial(n):
if n<=1:
return 1
else:
return n * myfactorial(n-1)
result = myfactorial(-5)
print("Factorial is ",result)
# return 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
# 2 = 2 * 1!
# 1 * 0!
val = 5
aList = [2,4,5,3,5,6,7,5]
count = 0
for item in aList:
if item==val:
count=count+1
print("Count = ",count)
'''
import random
a = random.random() # random value between 0 and 1
print(a)
b = random.randint(1,3)
print(b)
a <- 5 #assignment in APSC exam language, in Python: a =5
a = 5 # is a equal to 5? in Python a ==5
aList <- [2,4,6,8]
DISPLAY aList[1]
a <- aList[3]
aList[2] <- 10 # [2,10,6,8]
INSERT(aList, 2,10) # [2,10,4,6,8]
APPEND(aList,20) # [2,10,4,6,8,20]
REMOVE(aList,4) # [2,10,4,8,20]
LENGTH(aList) #len(aList) - python
# In Python we say:
for item in alist:
pass
#in APSC lang
FOR EACH item in aLists
{
}
def fun1(n1,n2):
return 1
PROCEDURE fun1(n1,n2)
{
RETURN (1)
}
'''
var1 = 5 #let’s take a variable called var1 and make it equal to 5
# number without decimal point – integer
#var1 is a variable of type integer
print(“var1”)
print(var1)
print(type(var1))
var1 = 5.0 #float – -inf to +inf with decimal point
print(type(var1))
var1 = 5j #complex (imaginary) – i
# square root of -25 = sq rt(25* -1) = 5j
print(type(var1))
print(5j * 5j)
# string – text (str)
var1 = “hello”
print(type(var1))
#5th basic data types – bool (boolean – 2 values: True / False)
var1 = True
print(type(var1))
#Functions for explicit conversion – convert data from given type to this:
# int(), float(), complex(), str(), bool()
var1 = int(“5”)
print(type(var1))
quantity =49
cost_pc = 51.89
total_cost = quantity * cost_pc
print(“Total quantity bought is”,quantity,”each one at a cost of”,cost_pc,”so the total cost is”,total_cost)
print(f”Total quantity bought is {quantity} each one at a cost of {cost_pc:.1f} so the total cost is {total_cost}”)
pl=”Rohit”
cn=”India”
pos=”captain”
print(f”Player {pl:<12} plays for {cn:^12} and is {pos:>20} of the team!”)
pl=”Mabwange”
cn=”Zimbabwe”
pos=”Wicket-keeper”
print(f”Player {pl:<12} plays for {cn:^12} and is {pos:>20} of the team!”)
num1 = int(input(“Enter first number to be added: “)) #default input will read as str
print(type(num1))
num2 = int(input(“Enter second number to be added: “))
print(type(num2))
print(num1+num2)