Skip to content
This repository was archived by the owner on Sep 20, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions 1_sum_57.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
def show_sum():
sum = 0
for x in range(0,500):
if ((x % 5 == 0) and (x % 7 != 0)):
sum += x
print("Sum of numbers less than 500 which are divisble by 5 and not by 7 = %s" %(sum))

show_sum()
28 changes: 28 additions & 0 deletions 2_room_area.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
class room:
def __init__(self, length, width, height):
self.length = length
self.width = width
self.height = height
print("Room of dimensions %s X %s X %s is created.\n" %(self.length, self.width, self.height))

def new_dimensions(self, increase_percentage):
self.length *= (1+(increase_percentage/100))
self.width *= (1+(increase_percentage/100))
self.height *= (1+(increase_percentage/100))
print("Room dimensions increased by %s percent.\n" %(increase_percentage))

def calculate_area(self):
area = 2 * (self.length * self.width + self.width * self.height + self.height * self.length)
print("Suface Area of room of new dimensions is = %s" %(area))
volume = self.length * self.width * self.height
print("Volume of room of new dimensions is = %s" %(volume))

try:
dim = input("Enter dimensions(aXbXc): ")
dim = dim.split('X')
x = room(int(dim[0]), int(dim[1]), int(dim[2]))
percent = int(input("Enter increase percent: "))
x.new_dimensions(percent)
x.calculate_area()
except:
print("Unexpected error! Please re-enter values.")
16 changes: 16 additions & 0 deletions 3_hp_list.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
list1 = ["Ron", "Hermione", "Harry", "Professor", "Dobby"]

list2 = ["The House Elf", "Potter", "Granger", "Lockhart", "Weasley"]

print("List 1: " + str(list1))
list1.sort()
print("Sorted List 1: " + str(list1) + "\n")

print("List 2: " + str(list2))
list2.sort()
print("Sorted List 2: " + str(list2) + "\n")

list3 = list1 + list2
print("Concatenated list: " + str(list3))
list3.sort()
print("Sorted Concatenated list: " + str(list3))
13 changes: 13 additions & 0 deletions 4_pythagorean_triplet.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
def pythagorean():
sum = 1000
for x in range(1, int(sum/3)+1):
for y in range(x+1, int(sum/2)+1):
z = sum - x - y
if((x<y) and (y<z)) and (x+y+z == sum) and (x**2 + y**2 == z**2):
print("Pythagorean triplets are:")
print("a = %s" %(x))
print("b = %s" %(y))
print("c = %s" %(z))
return

pythagorean()
18 changes: 18 additions & 0 deletions 5_number_div_1_20.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
def gcd(a, b):
if a == 0:
return b

else:
return gcd(b%a, a)

def calculate_num():
flag = 1
try:
n = int(input("Enter the value of n to find smallest number divisible by all numbers upto n: "))
for i in range(1, n+1):
flag = (flag * i)/gcd(flag, i)
print("The smallest number divisible by all numbers between 1 and %s: %s" %(n, flag))
except:
print("Invalid input. Please enter a whole number.")

calculate_num()
19 changes: 19 additions & 0 deletions 6_prime_numbers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
def print_primes():
n = int(input("Enter the last number upto which prime numbers should be found: "))
count = 0
prime = [True for x in range(n+1)]
p = 2

while (p * p <= n):
if prime[p]:
for i in range(p ** 2, n+1, p):
prime[i] = False
p += 1
for i in range(2, n):
if prime[i]:
count += 1
print(i)
print("Total number of prime numbers: %s" %(count))


print_primes()
15 changes: 15 additions & 0 deletions 7_palindrome.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
def check_palindrome():
var = input("Enter a string to check whether its a palindrome or not: ")
length = len(var)
low = 0
high = length-1
while(low < high):
if var[low] != var[high]:
print("%s is not a palindrome." %(var))
return
else:
low += 1
high -= 1
print("%s is a palindrome." %(var))

check_palindrome()
146 changes: 146 additions & 0 deletions 8_binary_tree.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
class BinaryTreeNode():

def __init__(self, value=None):
self.leftChild = None
self.rightChild = None
if value == None:
self.value = None
else:
self.value = value

def insertNode(self, data):
if self.value:
if data < self.value:
if self.leftChild == None:
self.leftChild = BinaryTreeNode(data)
print("Node inserted successfully.\n\n")
else:
self.leftChild.insertNode(data)
elif data > self.value:
if self.rightChild == None:
self.rightChild = BinaryTreeNode(data)
print("Node inserted successfully.\n\n")
else:
self.rightChild.insertNode(data)
elif self.value == None:
self.value = data
print("Node inserted successfully.\n\n")


def search(self, data, parent=None):
if data < self.value:
if self.leftChild == None:
return None, None
return self.leftChild.search(data, self)
elif data > self.value:
if self.rightChild == None:
return None, None
return self.rightChild.search(data, self)
elif data == self.value:
return self, parent
else:
return None, None

def children_count(self):
count = 0
if self.leftChild:
count += 1
if self.rightChild:
count += 1
return count

def deleteNode(self, data):

node, parent = self.search(data)
if (node == None and parent == None):
print("Entered node does not exist to delete.\n\n")
return

if (parent == None and node.leftChild == None and node.rightChild == None):
node.value = None
print("Node deleted successfully.\n\n")
return

if node != None:
child_count = node.children_count()

if child_count == 0:
if parent:
if parent.leftChild == node:
parent.leftChild = None
else:
parent.rightChild = None
print("Node deleted successfully.\n\n")
del node
else:
parent.value = None
print("Node deleted successfully.\n\n")

elif child_count == 1:
if node.leftChild:
n = node.leftChild
else:
n = node.rightChild
if parent:
if parent.leftChild == node:
parent.leftChild = n
else:
parent.rightChild = n
print("Node deleted successfully.\n\n")
del node
else:
self.leftChild = n.leftChild
self.rightChild = n.rightChild
self.value = n.value
print("Node deleted successfully.\n\n")

else:
parent = node
successor = node.rightChild
while successor.leftChild:
parent = successor
successor = successor.leftChild
node.value = successor.value
if parent.leftChild == successor:
parent.leftChild = successor.rightChild
print("Node deleted successfully.\n\n")
else:
parent.rightChild = successor.rightChild
print("Node deleted successfully.\n\n")

def printInorder(self):
try:
if self:
if self.leftChild:
self.leftChild.printInorder()

print(self.value)

if self.rightChild:
self.rightChild.printInorder()
except:
print("Unexpected error! Please try again.")

def doMain():
flag = True
root = BinaryTreeNode()
while flag:
opt = input("Enter + to add a node.\nEnter - to delete a node.\nEnter = to print tree(Inorder traversal).\nEnter 0 to quit.\nOption: ")

if(opt == "+"):
data = input("Enter node to insert: ")
root.insertNode(data)
elif(opt == "-"):
data = input("Enter node to delete: ")
if root == None:
print("No data to delete.\n")
else:
root.deleteNode(data)
elif(opt == "="):
root.printInorder()
elif(opt == "0"):
flag = False
else:
print("Invalid option. Please re-enter.")

doMain()