From f9898936c097c248f358c4020f6c9158af688bda Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sat, 16 Jan 2021 01:07:03 +0530 Subject: [PATCH 01/42] Added OOP's and Comprehension Programs --- Beginner_Level/Class.py | 50 +++++++++ Beginner_Level/Inheritance.py | 104 ++++++++++++++++++ .../List,Set&Dictionary_Comprehension.py | 61 ++++++++++ Beginner_Level/Polymorphism.py | 28 +++++ 4 files changed, 243 insertions(+) create mode 100644 Beginner_Level/Class.py create mode 100644 Beginner_Level/Inheritance.py create mode 100644 Beginner_Level/List,Set&Dictionary_Comprehension.py create mode 100644 Beginner_Level/Polymorphism.py diff --git a/Beginner_Level/Class.py b/Beginner_Level/Class.py new file mode 100644 index 0000000..ee6bea8 --- /dev/null +++ b/Beginner_Level/Class.py @@ -0,0 +1,50 @@ +class Human: + def __init__(self, n, o): + self.name = n + self.occupation = o + + def do_work(self): + if self.occupation == "Tennis Player": + print(self.name,"plays tennis") + elif self.occupation == "Cricket Player": + print(self.name,"Plays Cricket") + + def speak(self): + print(self.name,"\nsay how are you?") + +sachin = Human("Sachin Tendulkar","Cricker") +sachin.do_work() +sachin.speak() + +print('\n') + +maria = Human("Maria sharapova","Tennis") +sachin.do_work() +sachin.speak() + +print('\n') + + +# built-in class modules + +class Employee: + 'Common base class for all employees' + empCount = 0 + + def __init__(self, name, salary): + self.name = name + self.salary = salary + Employee.empCount += 1 + + def displayCount(self): + print("Total Employee %d" % Employee.empCount) + + def displayEmployee(self): + print("Name : ", self.name, ", Salary: ", self.salary) + + +print("Employee.__doc__:", Employee.__doc__) +print("Employee.__name__:", Employee.__name__) +print("Employee.__module__:", Employee.__module__) +print("Employee.__bases__:", Employee.__bases__) +print("Employee.__dict__:", Employee.__dict__) diff --git a/Beginner_Level/Inheritance.py b/Beginner_Level/Inheritance.py new file mode 100644 index 0000000..3940df9 --- /dev/null +++ b/Beginner_Level/Inheritance.py @@ -0,0 +1,104 @@ +class Vehicle: + def genral_usage(self): + print("use for transportation") + +class Car(Vehicle): + def __init__(self): + print("I'm a car") + self.wheels = 4 + self.has_roof = True + + def specific_usage(self): + self.genral_usage() + print("specific usage: commute to work, vacation with family") + +class Motorcycle(Vehicle): + def __init__(self): + print("I'm a Motorcycle") + self.wheels = 2 + self.has_roof = False + + def specific_usage(self): + self.genral_usage() + print("specific usage: road trip, racing") + +c = Car() +#c.genral_usage() # if you don't want to call general_usage() explicitly, you can call inside class as above +c.specific_usage() +print('\n') +m = Motorcycle() +#m.genral_usage() +m.specific_usage() + +print('\n') + +print(isinstance(c,Car)) # check and return bool value +print(isinstance(c,Motorcycle)) + +print('\n') + +# another example + +class Parent: # define parent class + parentAttr = 100 + def __init__(self): + print("Calling parent constructor") + + def parentMethod(self): + print('Calling parent method') + + def setAttr(self, attr): + Parent.parentAttr = attr + + def getAttr(self): + print("Parent attribute :", Parent.parentAttr) + +class Child(Parent): # define child class + def __init__(self): + print("Calling child constructor") + + def childMethod(self): + print('Calling child method') + +c = Child() # instance of child +c.childMethod() # child calls its method +c.parentMethod() # calls parent's method +c.setAttr(200) # again call parent's method +c.getAttr() # again call parent's method + +print('\n') + +# method overriding + +class Parent: # define parent class + def myMethod(self): + print('Calling parent method') + +class Child(Parent): # define child class + def myMethod(self): + print('Calling child method') + +c = Child() # instance of child +c.myMethod() # child calls overridden method + +print('\n') + +# Multiple Inheritance + +class Father: + def skills(self): + print("Gardening & Programming") + +class Mother: + def skills(self): + print("cooking & art") + +class child(Father,Mother): + def skills(self): + Father.skills(self) + Mother.skills(self) + print("sports & gaming") + +c = child() +c.skills() + diff --git a/Beginner_Level/List,Set&Dictionary_Comprehension.py b/Beginner_Level/List,Set&Dictionary_Comprehension.py new file mode 100644 index 0000000..b222bd9 --- /dev/null +++ b/Beginner_Level/List,Set&Dictionary_Comprehension.py @@ -0,0 +1,61 @@ +Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32 +Type "help", "copyright", "credits" or "license()" for more information. +>>> numbers = [1,2,3,4,5,6,7,8,9] +>>> even = [] +>>> for i in numbers: + if i%2==0: + even.append(i) + + +>>> even +[2, 4, 6, 8] +>>> # syntax [output for-loop condition] +>>> even = [i for i in numbers if i%2==0] +>>> even +[2, 4, 6, 8] +>>> cube_numbers = [i*i*i for i in numbers] +>>> cube_numbers +[1, 8, 27, 64, 125, 216, 343, 512, 729] +>>> +>>> +>>> +>>> +>>> +>>> # Set Comprehension +>>> s = set{[1,2,3,4,5,2,3]} +SyntaxError: invalid syntax +>>> s = set([1,2,3,4,5,2,3]) +>>> s +{1, 2, 3, 4, 5} +>>> type(s) + +>>> even = { i for in s if i%2==0} +SyntaxError: invalid syntax +>>> even +[2, 4, 6, 8] +>>> +>>> +>>> +>>> +>>> # Dictionary Comprehension +>>> +>>> cities = ["Mumbai","new york","tokyo"] +>>> country = ["India","USA","Japan"] +>>> z = zip(cities,country) +>>> z + +>>> for a in z: + print(a) + + +('Mumbai', 'India') +('new york', 'USA') +('tokyo', 'Japan') +>>> d = {city:country for city, country in zip(cities,country)} +>>> d +{'Mumbai': 'India', 'new york': 'USA', 'tokyo': 'Japan'} +>>> type(d) + +>>> dir(d) +['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values'] +>>> \ No newline at end of file diff --git a/Beginner_Level/Polymorphism.py b/Beginner_Level/Polymorphism.py new file mode 100644 index 0000000..60a806f --- /dev/null +++ b/Beginner_Level/Polymorphism.py @@ -0,0 +1,28 @@ +class India(): + def capital(self): + print("New Delhi is the capital of India.") + + def language(self): + print("Hindi is the most widely spoken language of India.") + + def type(self): + print("India is a developing country.") + + +class USA(): + def capital(self): + print("Washington, D.C. is the capital of USA.") + + def language(self): + print("English is the primary language of USA.") + + def type(self): + print("USA is a developed country.") + + +obj_ind = India() +obj_usa = USA() +for country in (obj_ind, obj_usa): + country.capital() + country.language() + country.type() \ No newline at end of file From 4824b91ef284004672456c2e54b3c6c942b0f07a Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sat, 16 Jan 2021 16:29:14 +0530 Subject: [PATCH 02/42] added set & frozen_set program --- Beginner_Level/Frozen Set.py | 56 ++++++++++++++++++++++++++++++++++++ Beginner_Level/Set.py | 40 ++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 Beginner_Level/Frozen Set.py create mode 100644 Beginner_Level/Set.py diff --git a/Beginner_Level/Frozen Set.py b/Beginner_Level/Frozen Set.py new file mode 100644 index 0000000..b5c096c --- /dev/null +++ b/Beginner_Level/Frozen Set.py @@ -0,0 +1,56 @@ +Python 3.9.1 (tags/v3.9.1:1e5d33e, Dec 7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)] on win32 +Type "help", "copyright", "credits" or "license()" for more information. +>>> # Frozen Set +>>> numbers = [1,2,3,4,1,5,6,4,2,3] +>>> fs = frozenset(numbers) +>>> fs +frozenset({1, 2, 3, 4, 5, 6}) +>>> fs.add(7) +Traceback (most recent call last): + File "", line 1, in + fs.add(7) +AttributeError: 'frozenset' object has no attribute 'add' +>>> +>>> +>>> +>>> # some basic operation with set +>>> +>>> x ={"a","b","c"} +>>> +>>> "a" in x +True +>>> "g" in x +False +>>> for i in x: + print(i) + + +a +c +b +>>> x +{'a', 'c', 'b'} +>>> y = {"a","h",g"} + +SyntaxError: EOL while scanning string literal +>>> y = {"a","h","g"} +>>> x +{'a', 'c', 'b'} +>>> y +{'g', 'h', 'a'} +>>> # to find union +>>> x|y +{'g', 'c', 'a', 'b', 'h'} +>>> # to find intersection +>>> x&y +{'a'} +>>> # to find difference +>>> x-y +{'c', 'b'} +>>> # to find subset +>>> x>> x={"h","g"} +>>> x>> \ No newline at end of file diff --git a/Beginner_Level/Set.py b/Beginner_Level/Set.py new file mode 100644 index 0000000..4a1ff6a --- /dev/null +++ b/Beginner_Level/Set.py @@ -0,0 +1,40 @@ +Python 3.9.1 (tags/v3.9.1:1e5d33e, Dec 7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)] on win32 +Type "help", "copyright", "credits" or "license()" for more information. +>>> basket = {"apple","mango","orange","pear","banana","apple"} +>>> basket +{'apple', 'pear', 'banana', 'orange', 'mango'} +>>> a = set() +>>> a.add(11) +>>> a.add(22) +>>> a.add(33) +>>> a.add(44) +>>> a +{33, 11, 44, 22} +>>> # don't initialize empty set bcoz python consider it set dictionary +>>> b = {} +>>> type(b) + +>>> b = {'somrthing'} +>>> b +{'somrthing'} +>>> type(b) + +>>> # since set is unordered that means you can't access using index +>>> basket[0] +Traceback (most recent call last): + File "", line 1, in + basket[0] +TypeError: 'set' object is not subscriptable +>>> +>>> +>>> +>>> +>>> # creating set from list by passing list as argument in constructor of set +>>> numbers = [1,2,3,4,5,2,1,3,5] +>>> set_numbers = set(numbers) +>>> set_numbers +{1, 2, 3, 4, 5} +>>> set_numbers.add(6) +>>> set_numbers +{1, 2, 3, 4, 5, 6} +>>> \ No newline at end of file From 7bff51219012885d778ee915124b537d48a7d752 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sat, 16 Jan 2021 16:30:25 +0530 Subject: [PATCH 03/42] =?UTF-8?q?added=20=5F=5Fname=5F=20=3D=3D=20=5F=5Fma?= =?UTF-8?q?in=5F=5F=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Beginner_Level/__name__ = __main__/caller.py | 3 +++ Beginner_Level/__name__ = __main__/main.py | 8 ++++++++ 2 files changed, 11 insertions(+) create mode 100644 Beginner_Level/__name__ = __main__/caller.py create mode 100644 Beginner_Level/__name__ = __main__/main.py diff --git a/Beginner_Level/__name__ = __main__/caller.py b/Beginner_Level/__name__ = __main__/caller.py new file mode 100644 index 0000000..ca905d2 --- /dev/null +++ b/Beginner_Level/__name__ = __main__/caller.py @@ -0,0 +1,3 @@ +import main +print("I'm in caller.py") +main.calculate_volume(12) \ No newline at end of file diff --git a/Beginner_Level/__name__ = __main__/main.py b/Beginner_Level/__name__ = __main__/main.py new file mode 100644 index 0000000..8590848 --- /dev/null +++ b/Beginner_Level/__name__ = __main__/main.py @@ -0,0 +1,8 @@ +def calculate_volume(radius): + print("__name__:",__name__) + return 1.33*3.14*radius*radius*radius + +if __name__ == "__main__": + print("I'm in main.py") + v = calculate_volume(10) + print("Volume:",v) From 7cd30a84a5ba7b714b06e426caef5c44ed4d9c1e Mon Sep 17 00:00:00 2001 From: 96RadhikaJadhav Date: Mon, 18 Jan 2021 01:14:18 +0530 Subject: [PATCH 04/42] Added basic python programs in Beginner_Level_Python_programs --- Beginner_Level_Python_programs/compound_interest.py | 11 +++++++++++ Beginner_Level_Python_programs/factorial.py | 8 ++++++++ Beginner_Level_Python_programs/simple_interest.py | 12 ++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 Beginner_Level_Python_programs/compound_interest.py create mode 100644 Beginner_Level_Python_programs/factorial.py create mode 100644 Beginner_Level_Python_programs/simple_interest.py diff --git a/Beginner_Level_Python_programs/compound_interest.py b/Beginner_Level_Python_programs/compound_interest.py new file mode 100644 index 0000000..e96c683 --- /dev/null +++ b/Beginner_Level_Python_programs/compound_interest.py @@ -0,0 +1,11 @@ +def compound_interest(principle, rate, time): + + # Calculates compound interest + Amount = principle * (pow((1 + rate / 100), time)) + CI = Amount - principle + print('The principal is', principle) + print('The time period is', rate) + print('The rate of interest is',time) + print("Compound interest is", CI) + +compound_interest(10000, 10.25, 5) \ No newline at end of file diff --git a/Beginner_Level_Python_programs/factorial.py b/Beginner_Level_Python_programs/factorial.py new file mode 100644 index 0000000..e1cb039 --- /dev/null +++ b/Beginner_Level_Python_programs/factorial.py @@ -0,0 +1,8 @@ +def factorial(n): + + return 1 if (n==1 or n==0) else n * factorial(n - 1) + + +num=input("Please enter number to calculate factorial:") + +print ("Factorial of",num,"is",factorial(int(num))) diff --git a/Beginner_Level_Python_programs/simple_interest.py b/Beginner_Level_Python_programs/simple_interest.py new file mode 100644 index 0000000..a3f7a90 --- /dev/null +++ b/Beginner_Level_Python_programs/simple_interest.py @@ -0,0 +1,12 @@ +def simple_interest(principle,time,rate): + print('The principal is', principle) + print('The time period is', time) + print('The rate of interest is',rate) + + si = (principal * time * rate)/100 + + print('The Simple Interest is', si) + return si + + +simple_interest(8, 6, 8) \ No newline at end of file From afe1339852eb0ac7d02a6a5d1978b2650cc101e4 Mon Sep 17 00:00:00 2001 From: tradevm Date: Mon, 18 Jan 2021 08:12:11 -0800 Subject: [PATCH 05/42] Fibonacci sequence calculator added to the beginner level programs --- .../fibonacci_sequence.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Beginner_Level_Python_programs/fibonacci_sequence.py diff --git a/Beginner_Level_Python_programs/fibonacci_sequence.py b/Beginner_Level_Python_programs/fibonacci_sequence.py new file mode 100644 index 0000000..e448a53 --- /dev/null +++ b/Beginner_Level_Python_programs/fibonacci_sequence.py @@ -0,0 +1,33 @@ +#Fibonacci sequence starts with 0 and 1 as the first numbers and the consequetive numbers are calculated by adding up the two numbers before them +#0, 1, 1, 2, 3, 5, 8, 13 ... + +# Function to claculate list of fibonacci numbers +def fibonacci_calc(num): + result = list() + count = 0 + # Invalid input + if num <= 0: + print("Please enter a positive integer (input>0)") + return result + # Input 1 + elif num == 1: + result.append(0) + return result + else: + #starting values + n1, n2 = 0, 1 + while count < num: + result.append(n1) + nth = n1 + n2 + n1 = n2 + n2 = nth + count += 1 + return result + + +if __name__ == "__main__": + fibo_list = list() + n = int(input("Please enter the sequence number: ")) + fibo_list = fibonacci_calc(n) + for i in fibo_list: + print(i) From 20f6c8a179c3667dbb06a3d20ef28343bd6d691d Mon Sep 17 00:00:00 2001 From: 96RadhikaJadhav Date: Tue, 19 Jan 2021 16:39:22 +0530 Subject: [PATCH 06/42] Added-python-programs --- .../area_of_circle.py | 10 ++++++++++ .../armstrong_number.py | 15 +++++++++++++++ Beginner_Level_Python_programs/prime_number.py | 17 +++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 Beginner_Level_Python_programs/area_of_circle.py create mode 100644 Beginner_Level_Python_programs/armstrong_number.py create mode 100644 Beginner_Level_Python_programs/prime_number.py diff --git a/Beginner_Level_Python_programs/area_of_circle.py b/Beginner_Level_Python_programs/area_of_circle.py new file mode 100644 index 0000000..0ea4625 --- /dev/null +++ b/Beginner_Level_Python_programs/area_of_circle.py @@ -0,0 +1,10 @@ + +#Area = pi * r2 +#where r is radius of circle + +def findArea(r): + PI = 3.142 + return PI * (r*r) + +num = int(input("Enter radius: ")) +print("Area is %.6f" % findArea(num)) \ No newline at end of file diff --git a/Beginner_Level_Python_programs/armstrong_number.py b/Beginner_Level_Python_programs/armstrong_number.py new file mode 100644 index 0000000..59bb720 --- /dev/null +++ b/Beginner_Level_Python_programs/armstrong_number.py @@ -0,0 +1,15 @@ +num = int(input("Enter a number: ")) + +sum = 0 + +temp = num +while temp > 0: + digit = temp % 10 + sum += digit ** 3 + temp //= 10 + + +if num == sum: + print(num,"is an Armstrong number") +else: + print(num,"is not an Armstrong number") \ No newline at end of file diff --git a/Beginner_Level_Python_programs/prime_number.py b/Beginner_Level_Python_programs/prime_number.py new file mode 100644 index 0000000..3401432 --- /dev/null +++ b/Beginner_Level_Python_programs/prime_number.py @@ -0,0 +1,17 @@ +# Program to check if a number is prime or not + +num = int(input("Enter a number: ")) + + +if num > 1: + + for i in range(2,num): + if (num % i) == 0: + print(num,"is not a prime number") + print(i,"times",num//i,"is",num) + break + else: + print(num,"is a prime number") + +else: + print(num,"is not a prime number") \ No newline at end of file From f34cb515cb10c905c69dd690b020686bce84d40b Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Tue, 19 Jan 2021 18:43:12 +0530 Subject: [PATCH 07/42] added flow chart of while loop --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 65d0120..6fb3cd1 100644 --- a/README.md +++ b/README.md @@ -18,3 +18,7 @@ src:- http://net-informations.com/python/file/default.htm ![ifelse](https://user-images.githubusercontent.com/67586773/104689765-1efb6680-5729-11eb-8868-05db14dba8af.png) src:- https://www.educba.com/if-else-in-python/ + +## while-loop flow chart + +![flow-chart-while-loop](https://user-images.githubusercontent.com/67586773/105038967-fe634180-5a85-11eb-8f2f-87be0ff80433.jpg) From d0425b963ccd3f6d1e88a543e5fec08aadf0cb42 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Tue, 19 Jan 2021 18:43:44 +0530 Subject: [PATCH 08/42] added flow chart of for loop --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 6fb3cd1..40a4760 100644 --- a/README.md +++ b/README.md @@ -22,3 +22,8 @@ src:- https://www.educba.com/if-else-in-python/ ## while-loop flow chart ![flow-chart-while-loop](https://user-images.githubusercontent.com/67586773/105038967-fe634180-5a85-11eb-8f2f-87be0ff80433.jpg) + + +## for-loop flow chart + +![forLoop](https://user-images.githubusercontent.com/67586773/105038972-ff946e80-5a85-11eb-8d3d-1e50a1eb4636.jpg) From a0be7a3b314e3b5e785796c12964883203171afa Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Wed, 20 Jan 2021 10:19:35 +0530 Subject: [PATCH 09/42] added lambda function program in filter, map --- .../lambda in filter,map & reduce.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Beginner_Level/lambda in filter,map & reduce.py diff --git a/Beginner_Level/lambda in filter,map & reduce.py b/Beginner_Level/lambda in filter,map & reduce.py new file mode 100644 index 0000000..a84a5d4 --- /dev/null +++ b/Beginner_Level/lambda in filter,map & reduce.py @@ -0,0 +1,49 @@ + +# Lambda Functions is also known as Anonymous function bcoz they don't have any name some tym they also called oneline function bcoz they written in oneline of code +# function returning from function thats where lambda function are used + +from functools import reduce + +# def double(x): +# return x*2 +# +# def add(x,y): +# return x+y +# +# def pro(x,y,z): +# return x*y*z + + +# Lambda function of above functions + +double = lambda x : x * 2 +add = lambda x, y : x + y +pro = lambda x, y, z : x * y * z + +print(double(10)) +print(add(10,20)) +print(pro(10,20,30)) + +# map, filter, reduce + +my_list1 = [2,5,8,10,9,3] +my_list2 = [1,4,7,8,5,1] + +a = map(lambda x : x * 2, my_list1) +print(list(a)) # u must to cast list otherwise it will give wierd hexadecimal instead of list + +b = map(lambda x, y : x + y, my_list1 , my_list2) +print(list(b)) + +# filter function gives boolean value and it take function as 1st argument + +c= filter(lambda x : x%2 ==0, my_list1) +print(list(c)) + +d= filter(lambda x : True if x > 5 else False, my_list1) # using if else inside filter +print(list(d)) + +# to use reduce we have import functool at the top + +e = reduce(lambda x, y : x+y, my_list1) +print(e) \ No newline at end of file From b9eafb0c4483a0a6fd0f8ee84cf5d29e64735567 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Wed, 20 Jan 2021 14:48:31 +0530 Subject: [PATCH 10/42] =?UTF-8?q?added=20nested=20function=20&=20closure?= =?UTF-8?q?=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anotherclosureexample.py | 28 +++++++++++++++++++ .../Closure + Nested Function/closure.py | 12 ++++++++ .../Closure + Nested Function/nested.py | 11 ++++++++ 3 files changed, 51 insertions(+) create mode 100644 Beginner_Level/Closure + Nested Function/anotherclosureexample.py create mode 100644 Beginner_Level/Closure + Nested Function/closure.py create mode 100644 Beginner_Level/Closure + Nested Function/nested.py diff --git a/Beginner_Level/Closure + Nested Function/anotherclosureexample.py b/Beginner_Level/Closure + Nested Function/anotherclosureexample.py new file mode 100644 index 0000000..bf1bd45 --- /dev/null +++ b/Beginner_Level/Closure + Nested Function/anotherclosureexample.py @@ -0,0 +1,28 @@ + +def nth_power(exponent ): + def pow_of(base): + return pow(base, exponent) + return pow_of # note that we are returning function without function + +square = nth_power(2) +print(square(31)) +print(square(32)) +print(square(33)) +print(square(34)) +print(square(35)) +print(square(36)) +print(square(37)) +print(square(38)) +print(square(39)) + +print('------') + +cube = nth_power(3) +print(cube(2)) +print(cube(3)) +print(cube(4)) +print(cube(5)) +print(cube(6)) +print(cube(7)) +print(cube(8)) +print(cube(9)) \ No newline at end of file diff --git a/Beginner_Level/Closure + Nested Function/closure.py b/Beginner_Level/Closure + Nested Function/closure.py new file mode 100644 index 0000000..5c95976 --- /dev/null +++ b/Beginner_Level/Closure + Nested Function/closure.py @@ -0,0 +1,12 @@ +# nested function u can define function inside a fucntion + +# closures are sometimes uses in the placeof classes which usually have only one method or few method . Closures are highly used in decorators + +def outterFunction(text): + def innerFunction(): + print(text) + return innerFunction # to make closure fucntion from nested function you have to return function without paranthesis + +a = outterFunction("Hello") +del outterFunction +a() # after deleting outterfunction o/p - Hello means a variable is sotring some spaces for innerfunction even outterfunction is deleted this is magic of 'closure' \ No newline at end of file diff --git a/Beginner_Level/Closure + Nested Function/nested.py b/Beginner_Level/Closure + Nested Function/nested.py new file mode 100644 index 0000000..313c164 --- /dev/null +++ b/Beginner_Level/Closure + Nested Function/nested.py @@ -0,0 +1,11 @@ +def pop(list): + def get_last_item(my_list): + return my_list[len(list) - 1] + + list.remove(get_last_item(list)) + return list + +a = [1,2,3,4,5] +print(pop(a)) +print(pop(a)) +print(pop(a)) \ No newline at end of file From eb24eeba8c8a37764be5812fde4aab062b6a512f Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Thu, 21 Jan 2021 18:07:25 +0530 Subject: [PATCH 11/42] =?UTF-8?q?added=20super()=20=E2=9C=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Beginner_Level/super( ).py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Beginner_Level/super( ).py diff --git a/Beginner_Level/super( ).py b/Beginner_Level/super( ).py new file mode 100644 index 0000000..d2ca0d0 --- /dev/null +++ b/Beginner_Level/super( ).py @@ -0,0 +1,21 @@ + +class Parent: + def __init__(self, name): + print('Parent __init__', name) + + +class Parent2: + def __init__(self, name): + print('Parent2 __init__', name) + +class Child(Parent, Parent2): + def __init__(self): + print('Child __init__') + super().__init__('chamn') # to call the __init__ of superclas + # Parent.__init__(self, 'ram') + # Parent2.__init__(self, 'max') + +child = Child() +print(Child.__mro__) # mro method resoution order. After running u can see that 1st method of child class executed then parents class method + + From 0fce51cdad5439d5e752094b3fcbd0f49a74088e Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Thu, 21 Jan 2021 18:09:28 +0530 Subject: [PATCH 12/42] =?UTF-8?q?added=20abstract=20class=F0=9F=91=A9?= =?UTF-8?q?=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Beginner_Level/Abstract Class.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Beginner_Level/Abstract Class.py diff --git a/Beginner_Level/Abstract Class.py b/Beginner_Level/Abstract Class.py new file mode 100644 index 0000000..3920d0c --- /dev/null +++ b/Beginner_Level/Abstract Class.py @@ -0,0 +1,23 @@ + +from abc import ABC, abstractclassmethod # abc - abstract base class & python don't provide any abstract class there is a built-in modules which is in this line + + +class Shape(ABC): + @abstractclassmethod # its decorator + def area(self): pass # empty method + + #@abstractclassmethod # abstractmethod is a mthd which must be implemented in subclass + def perimeter(self):pass + +class Square(Shape): + def __init__(self, side): + self.__side = side + def area(self): + return self.__side * self.__side + def perimeter(self): + return 4 * self.__side + + +square = Square(5) # it can't be intantiated bcoz its abstract class +print(square.area()) +print(square.perimeter()) \ No newline at end of file From 442a56880d8006f3bdaa83c6bf1960ce4879bc6d Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Thu, 21 Jan 2021 18:13:19 +0530 Subject: [PATCH 13/42] added aggregation and how to create module --- .../ClassModules/main.py | 11 ++++++++ .../ClassModules/polygon.py | 13 +++++++++ .../ClassModules/rectangle.py | 7 +++++ .../ClassModules/triangle.py | 7 +++++ .../How To Create Modules/CreateModules.py | 17 ++++++++++++ .../How To Create Modules/dir/imp.py | 7 +++++ Beginner_Level/aggregation.py | 27 +++++++++++++++++++ 7 files changed, 89 insertions(+) create mode 100644 Beginner_Level/How To Create Modules/ClassModules/main.py create mode 100644 Beginner_Level/How To Create Modules/ClassModules/polygon.py create mode 100644 Beginner_Level/How To Create Modules/ClassModules/rectangle.py create mode 100644 Beginner_Level/How To Create Modules/ClassModules/triangle.py create mode 100644 Beginner_Level/How To Create Modules/CreateModules.py create mode 100644 Beginner_Level/How To Create Modules/dir/imp.py create mode 100644 Beginner_Level/aggregation.py diff --git a/Beginner_Level/How To Create Modules/ClassModules/main.py b/Beginner_Level/How To Create Modules/ClassModules/main.py new file mode 100644 index 0000000..2fcb337 --- /dev/null +++ b/Beginner_Level/How To Create Modules/ClassModules/main.py @@ -0,0 +1,11 @@ + + +from rectangle import Rectangle +from triangle import Triangle + +rec = Rectangle() +tri = Triangle() +rec.set_values(50, 60) +tri.set_values(10, 45) +print(rec.area()) +print(tri.area()) \ No newline at end of file diff --git a/Beginner_Level/How To Create Modules/ClassModules/polygon.py b/Beginner_Level/How To Create Modules/ClassModules/polygon.py new file mode 100644 index 0000000..4f9272d --- /dev/null +++ b/Beginner_Level/How To Create Modules/ClassModules/polygon.py @@ -0,0 +1,13 @@ +class Polygon: + + __width = None + __height = None + + def set_values(self, width, height): + self.__width = width + self.__height = height + + def get_width(self): + return self.__width + def get_height(self): + return self.__height \ No newline at end of file diff --git a/Beginner_Level/How To Create Modules/ClassModules/rectangle.py b/Beginner_Level/How To Create Modules/ClassModules/rectangle.py new file mode 100644 index 0000000..67dd3ff --- /dev/null +++ b/Beginner_Level/How To Create Modules/ClassModules/rectangle.py @@ -0,0 +1,7 @@ + + +from polygon import Polygon + +class Rectangle(Polygon): + def area(self): + return self.get_width() * self.get_height() diff --git a/Beginner_Level/How To Create Modules/ClassModules/triangle.py b/Beginner_Level/How To Create Modules/ClassModules/triangle.py new file mode 100644 index 0000000..f5cddc3 --- /dev/null +++ b/Beginner_Level/How To Create Modules/ClassModules/triangle.py @@ -0,0 +1,7 @@ + +from polygon import Polygon: + + +class Triangle(Polygon): + def area(self): + return self.get_width() * self.get_height() / 2 \ No newline at end of file diff --git a/Beginner_Level/How To Create Modules/CreateModules.py b/Beginner_Level/How To Create Modules/CreateModules.py new file mode 100644 index 0000000..ec49016 --- /dev/null +++ b/Beginner_Level/How To Create Modules/CreateModules.py @@ -0,0 +1,17 @@ + +# module is nothing but a python file + +#from dir import imp --1st u caan also use as in this line # this code will auto appear after shifting the python file i.e. imp.py into new directory + +# above same code function can done with simple way of 1 line which is below + + +import dir.imp as rahul # as keyword for using short notation without as it was print((dir.imp.add(10,20))) + +print((rahul.add(56, 15))) +print((rahul.mul(56, 15))) + + + +# print((imp.add(56, 15))) --1st +# print((imp.mul(46, 57))) --1st \ No newline at end of file diff --git a/Beginner_Level/How To Create Modules/dir/imp.py b/Beginner_Level/How To Create Modules/dir/imp.py new file mode 100644 index 0000000..cc007f0 --- /dev/null +++ b/Beginner_Level/How To Create Modules/dir/imp.py @@ -0,0 +1,7 @@ + + +def add(a ,b): + return a+b + +def mul(a, b): + return a * b \ No newline at end of file diff --git a/Beginner_Level/aggregation.py b/Beginner_Level/aggregation.py new file mode 100644 index 0000000..721fe2e --- /dev/null +++ b/Beginner_Level/aggregation.py @@ -0,0 +1,27 @@ + +# COMPOSITION HAS relation of 'PART - OF ' # +# AGGREGATION HAS relation of 'HAS - A' # + +class Salary: + + def __init__(self, pay, bonus): + self.pay = pay + self.bonus = bonus + + def annual_salary(self): + return (self.pay*12) + self.bonus + +class Employee: + def __init__(self, name, age , salary): + self.name= name + self.age= age + self.obj_salary = salary; + + def total_salary(self): + return self.obj_salary.annual_salary() + + +salary = Salary(15000, 10000) +emp = Employee('easynamila', 25, salary) # Its unidirectional only salary is passing not name and age # don't forget to pass salary object + +print(emp.total_salary()) \ No newline at end of file From ef1fef259148423bc131c26037493bcde6def39e Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Thu, 21 Jan 2021 18:16:32 +0530 Subject: [PATCH 14/42] added idea behind __name__ == __main__ --- .../mymath.py | 9 +++++++++ .../see it .png | Bin 0 -> 104220 bytes .../test.py | 5 +++++ 3 files changed, 14 insertions(+) create mode 100644 Beginner_Level/idea behind if __name__ == __main__/mymath.py create mode 100644 Beginner_Level/idea behind if __name__ == __main__/see it .png create mode 100644 Beginner_Level/idea behind if __name__ == __main__/test.py diff --git a/Beginner_Level/idea behind if __name__ == __main__/mymath.py b/Beginner_Level/idea behind if __name__ == __main__/mymath.py new file mode 100644 index 0000000..2973fdd --- /dev/null +++ b/Beginner_Level/idea behind if __name__ == __main__/mymath.py @@ -0,0 +1,9 @@ + + # see result by right click and run on both mymath.py and test.py and see difference + +def add(a, b): + return a+b + +print(__name__) +if __name__ == "__main__": # this is same as main method in c++ or other pro. lang. + print(add(10,16)) \ No newline at end of file diff --git a/Beginner_Level/idea behind if __name__ == __main__/see it .png b/Beginner_Level/idea behind if __name__ == __main__/see it .png new file mode 100644 index 0000000000000000000000000000000000000000..3d6dd2edd4bf7d911cc1d59f56dc50803dab8232 GIT binary patch literal 104220 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∣*`y8_SMJfhecfm6TSd;eXfVIw_r1nkh@x?aS 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 literal 0 HcmV?d00001 diff --git a/Beginner_Level/idea behind if __name__ == __main__/test.py b/Beginner_Level/idea behind if __name__ == __main__/test.py new file mode 100644 index 0000000..5d1270c --- /dev/null +++ b/Beginner_Level/idea behind if __name__ == __main__/test.py @@ -0,0 +1,5 @@ + + +import mymath + +print(mymath.add(7,6)) \ No newline at end of file From 7e56dea61796f3850feddb760b19e3722e69a9ee Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Fri, 22 Jan 2021 20:17:44 +0530 Subject: [PATCH 15/42] =?UTF-8?q?added=20program=20of=20default=20argument?= =?UTF-8?q?s=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../More on function - Default arguments.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Beginner_Level/More on function - Default arguments.py diff --git a/Beginner_Level/More on function - Default arguments.py b/Beginner_Level/More on function - Default arguments.py new file mode 100644 index 0000000..47dcc06 --- /dev/null +++ b/Beginner_Level/More on function - Default arguments.py @@ -0,0 +1,23 @@ + +# Deualt arguments *args and *kwargs + + +#def student(name = 'unknown name', age = 0): --1st + + +def student(name, age, **marks): #*marks): # u can use double Asterix to declare key value pair # provide this type i.e. marks at the last so it can readable easily # USING METRIX IN FRONT OF ARGUMENTS IN PYHTON MEANS U CAN PROVIDE MULTIPLE ARGUMENTS + + print("name : ", name) + print('age : ', age ) + print('marks :', marks) + + + +# u can use for loop with marks even + + + +#student() # defuallt values when u don't provide values -- 1st + + +student('rahul', 18,cs= 196, physics = 80, che = 74,maths = 67,english = 61, evs = 46) # whenever u use double asterix then it will print in the form of dictionary # IT WILL PRINT IN THE FORM OF TUPPLES From 7cacfd529ce27345259cf0386bffbe78cd987f9e Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Fri, 22 Jan 2021 20:19:26 +0530 Subject: [PATCH 16/42] added multiple constructor program --- Beginner_Level/multiple constructor.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Beginner_Level/multiple constructor.py diff --git a/Beginner_Level/multiple constructor.py b/Beginner_Level/multiple constructor.py new file mode 100644 index 0000000..11cf9dd --- /dev/null +++ b/Beginner_Level/multiple constructor.py @@ -0,0 +1,16 @@ + + +# IT ISN'T NOT POSSIBLE TO DECLARE MULTIPLE INIT METHOD IF U DECLARE MULTIPLE INIT MTHD THEN PYTHON WILL CONSIDERED LAST INIT METHOD AS MAIN AND PREVIOUS INIT METHOD IS OVERWRITTEN BY LAST INIT METHOD + +class Hello: + # def __init__(self): pass # it is an empty method + # def __init__(self, name): pass + # def __init__(self, *args, **kwargs): pass # -- 1st + + def __init__(self,name): + self.name = name + self.age = 10 # it is possible to declare attributes without passing as arguments in the function + + +hello = Hello() +hello = Hello('name', 'age', name = 'chaman') # -- 1st \ No newline at end of file From 2ae7dffc73294c0c66e7972f0ac584a26d18ae0e Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sat, 23 Jan 2021 11:30:25 +0530 Subject: [PATCH 17/42] =?UTF-8?q?added=20decorators=20program=F0=9F=91=A9?= =?UTF-8?q?=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Decorator _2(Divide).py | 16 ++++++++++ .../Decorators In Python/Decorator_1.py | 30 +++++++++++++++++++ .../Decorator_3(Generic)].py | 22 ++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 Beginner_Level/Decorators In Python/Decorator _2(Divide).py create mode 100644 Beginner_Level/Decorators In Python/Decorator_1.py create mode 100644 Beginner_Level/Decorators In Python/Decorator_3(Generic)].py diff --git a/Beginner_Level/Decorators In Python/Decorator _2(Divide).py b/Beginner_Level/Decorators In Python/Decorator _2(Divide).py new file mode 100644 index 0000000..c7d42b6 --- /dev/null +++ b/Beginner_Level/Decorators In Python/Decorator _2(Divide).py @@ -0,0 +1,16 @@ + +def decorator_divide(func): + def wrapper_func(a,b): + print('divide', a, ' and ', b) + if b == 0: + print("Division With Zero Not Alloawed Dusra Positive Number Daal ") + return + return a / b + return wrapper_func # RETURN WITHOUT PARANTHESIS + + +@decorator_divide +def divide(x,y): + return x/y + +print(divide(15,0)) \ No newline at end of file diff --git a/Beginner_Level/Decorators In Python/Decorator_1.py b/Beginner_Level/Decorators In Python/Decorator_1.py new file mode 100644 index 0000000..2402c61 --- /dev/null +++ b/Beginner_Level/Decorators In Python/Decorator_1.py @@ -0,0 +1,30 @@ +# Decorators wrap a function and modify its behaviour in one way or the another without having to directly change the source code of the function being decorated. + +def decorator_X(func): + def wrapper_func(): + print('X' * 20) + func() + print('X' * 20) + + return wrapper_func() + +def decorator_Y(func): + def wrapper_func(): + print('Y' * 20) + func() + print('Y' * 20) + + return wrapper_func # RETURN WITHOUT PARANTHESIS + + # @decorator_func # --1st + +@decorator_X # --2ND +@decorator_Y +def say_hello(): + print('Hello World') + + +# hello = decorator_func(say_hello()) # this is same as --1st +# hello = decorator_Y(decorator_X(say_hello)) # --2ND +# hello() + diff --git a/Beginner_Level/Decorators In Python/Decorator_3(Generic)].py b/Beginner_Level/Decorators In Python/Decorator_3(Generic)].py new file mode 100644 index 0000000..97387eb --- /dev/null +++ b/Beginner_Level/Decorators In Python/Decorator_3(Generic)].py @@ -0,0 +1,22 @@ + +from time import time +def timing(func): + def wrapper_func(*args, **kwargs): + start = time() + result = func(*args, **kwargs) + end = time() + print(end) + print(' Elapsed Time {}'.format(end - start)) + return result + + return wrapper_func # RETURN WITHOUT PARANTHESIS + +@timing +def my_func(num): + sum = 0 + for i in range(num+1): + sum +=i + + return sum + +print(my_func(200000)) \ No newline at end of file From 6ba2bfd105c65e7a38e361cc02d46446a1595acc Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sun, 24 Jan 2021 09:41:38 +0530 Subject: [PATCH 18/42] =?UTF-8?q?added=20composition=20program=F0=9F=92=BB?= =?UTF-8?q?=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Beginner_Level/composition.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Beginner_Level/composition.py diff --git a/Beginner_Level/composition.py b/Beginner_Level/composition.py new file mode 100644 index 0000000..208a899 --- /dev/null +++ b/Beginner_Level/composition.py @@ -0,0 +1,24 @@ + +# in composition we have delegates some responisibilities from subclass to superclass or vice versa if it don't have is-a relation for eg. employee and salary + +class Salary: + + def __init__(self, pay, bonus): + self.pay = pay + self.bonus = bonus + + def annual_salary(self): + return (self.pay*12) + self.bonus + +class Employee: + def __init__(self, name, age , pay, bonus): + self.name= name + self.age= age + self.obj_salary = Salary(pay, bonus) + + def total_salary(self): + return self.obj_salary.annual_salary() + +emp = Employee('rahul', 25 , 15000, 10000) + +print(emp.total_salary()) \ No newline at end of file From e220e0ab518199d62121e02a3affa0fb3e9ad180 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sun, 24 Jan 2021 12:42:54 +0530 Subject: [PATCH 19/42] added generate random program between range of 0-9 --- Beginner_Level_Python_programs/generate_random.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Beginner_Level_Python_programs/generate_random.py diff --git a/Beginner_Level_Python_programs/generate_random.py b/Beginner_Level_Python_programs/generate_random.py new file mode 100644 index 0000000..341f612 --- /dev/null +++ b/Beginner_Level_Python_programs/generate_random.py @@ -0,0 +1,6 @@ +# Program to generate a random number between 0 and 9 + +# importing the random module +import random + +print(random.randint(0,9)) \ No newline at end of file From 946b17f8c079e076069b1aa54f43abe92bde22f3 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sun, 24 Jan 2021 12:44:14 +0530 Subject: [PATCH 20/42] =?UTF-8?q?added=20distance=20conversion=20program?= =?UTF-8?q?=20=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit added distance conversion program to convert kilometers to miles --- Beginner_Level_Python_programs/kilometers_to_miles.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Beginner_Level_Python_programs/kilometers_to_miles.py diff --git a/Beginner_Level_Python_programs/kilometers_to_miles.py b/Beginner_Level_Python_programs/kilometers_to_miles.py new file mode 100644 index 0000000..b839641 --- /dev/null +++ b/Beginner_Level_Python_programs/kilometers_to_miles.py @@ -0,0 +1,9 @@ +# Taking kilometers input from the user +kilometers = float(input("Enter value in kilometers: ")) + +# conversion factor +conv_fac = 0.621371 + +# calculate miles +miles = kilometers * conv_fac +print('%0.2f kilometers is equal to %0.2f miles' %(kilometers,miles)) \ No newline at end of file From 6510b178c00cb6eab5039a2654da74a03e1f1197 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sun, 24 Jan 2021 12:45:00 +0530 Subject: [PATCH 21/42] =?UTF-8?q?added=20program=20to=20check=20leap=20yea?= =?UTF-8?q?r=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Beginner_Level_Python_programs/Leap_year.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Beginner_Level_Python_programs/Leap_year.py diff --git a/Beginner_Level_Python_programs/Leap_year.py b/Beginner_Level_Python_programs/Leap_year.py new file mode 100644 index 0000000..493555b --- /dev/null +++ b/Beginner_Level_Python_programs/Leap_year.py @@ -0,0 +1,17 @@ +# Python program to check if year is a leap year or not + +year = 2000 + +# To get year (integer input) from the user +# year = int(input("Enter a year: ")) + +if (year % 4) == 0: + if (year % 100) == 0: + if (year % 400) == 0: + print("{0} is a leap year".format(year)) + else: + print("{0} is not a leap year".format(year)) + else: + print("{0} is a leap year".format(year)) +else: + print("{0} is not a leap year".format(year)) \ No newline at end of file From a89d0c7e0d0522588615a1e39325d2d444f8a84d Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sun, 24 Jan 2021 12:45:28 +0530 Subject: [PATCH 22/42] =?UTF-8?q?added=20multiplication=20table=20program?= =?UTF-8?q?=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Beginner_Level_Python_programs/multiplication_table.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 Beginner_Level_Python_programs/multiplication_table.py diff --git a/Beginner_Level_Python_programs/multiplication_table.py b/Beginner_Level_Python_programs/multiplication_table.py new file mode 100644 index 0000000..434e31b --- /dev/null +++ b/Beginner_Level_Python_programs/multiplication_table.py @@ -0,0 +1,10 @@ +# Multiplication table (from 1 to 10) in Python + +num = 12 + +# To take input from the user +# num = int(input("Display multiplication table of? ")) + +# Iterate 10 times from i = 1 to 10 +for i in range(1, 11): + print(num, 'x', i, '=', num*i) \ No newline at end of file From a15c1c08b20acdf4118c8f3aa52f69a2e38c3142 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sun, 24 Jan 2021 12:45:59 +0530 Subject: [PATCH 23/42] =?UTF-8?q?program=20to=20swap=20to=20variables?= =?UTF-8?q?=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Beginner_Level/swap_two_variables.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Beginner_Level/swap_two_variables.py diff --git a/Beginner_Level/swap_two_variables.py b/Beginner_Level/swap_two_variables.py new file mode 100644 index 0000000..9be27d4 --- /dev/null +++ b/Beginner_Level/swap_two_variables.py @@ -0,0 +1,16 @@ +# Python program to swap two variables + +x = 5 +y = 10 + +# To take inputs from the user +#x = input('Enter value of x: ') +#y = input('Enter value of y: ') + +# create a temporary variable and swap the values +temp = x +x = y +y = temp + +print('The value of x after swapping: {}'.format(x)) +print('The value of y after swapping: {}'.format(y)) \ No newline at end of file From 320e2a69d8ed53a97663add265fca32eb15e0912 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sun, 24 Jan 2021 12:46:57 +0530 Subject: [PATCH 24/42] =?UTF-8?q?added=20program=20of=20square=20root=20&?= =?UTF-8?q?=20quadratic=20root=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quadratic_root.py | 17 +++++++++++++++++ Beginner_Level_Python_programs/square_root.py | 10 ++++++++++ 2 files changed, 27 insertions(+) create mode 100644 Beginner_Level_Python_programs/quadratic_root.py create mode 100644 Beginner_Level_Python_programs/square_root.py diff --git a/Beginner_Level_Python_programs/quadratic_root.py b/Beginner_Level_Python_programs/quadratic_root.py new file mode 100644 index 0000000..13652d3 --- /dev/null +++ b/Beginner_Level_Python_programs/quadratic_root.py @@ -0,0 +1,17 @@ +# Solve the quadratic equation ax**2 + bx + c = 0 + +# import complex math module +import cmath + +a = 1 +b = 5 +c = 6 + +# calculate the discriminant +d = (b**2) - (4*a*c) + +# find two solutions +sol1 = (-b-cmath.sqrt(d))/(2*a) +sol2 = (-b+cmath.sqrt(d))/(2*a) + +print('The solution are {0} and {1}'.format(sol1,sol2)) \ No newline at end of file diff --git a/Beginner_Level_Python_programs/square_root.py b/Beginner_Level_Python_programs/square_root.py new file mode 100644 index 0000000..24091e4 --- /dev/null +++ b/Beginner_Level_Python_programs/square_root.py @@ -0,0 +1,10 @@ +# Python Program to calculate the square root + +# Note: change this value for a different result +num = 8 + +# To take the input from the user +#num = float(input('Enter a number: ')) + +num_sqrt = num ** 0.5 +print('The square root of %0.3f is %0.3f'%(num ,num_sqrt)) \ No newline at end of file From 0ad507f54fa4a9848e190e11b35f0f066df4d014 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sun, 24 Jan 2021 12:47:47 +0530 Subject: [PATCH 25/42] =?UTF-8?q?added=20program=20to=20convert=20temperat?= =?UTF-8?q?ure=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Beginner_Level_Python_programs/Temperature_conversion.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Beginner_Level_Python_programs/Temperature_conversion.py diff --git a/Beginner_Level_Python_programs/Temperature_conversion.py b/Beginner_Level_Python_programs/Temperature_conversion.py new file mode 100644 index 0000000..e7897f9 --- /dev/null +++ b/Beginner_Level_Python_programs/Temperature_conversion.py @@ -0,0 +1,8 @@ +# Python Program to convert temperature in celsius to fahrenheit + +# change this value for a different result +celsius = 37.5 + +# calculate fahrenheit +fahrenheit = (celsius * 1.8) + 32 +print('%0.1f degree Celsius is equal to %0.1f degree Fahrenheit' %(celsius,fahrenheit)) \ No newline at end of file From 2c6085d5c39a2643eaea6e735f78598e40e59558 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Tue, 26 Jan 2021 23:09:19 +0530 Subject: [PATCH 26/42] =?UTF-8?q?added=20program=20to=20find=20ascii=20=20?= =?UTF-8?q?of=20character=E2=9C=94=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Beginner_Level_Python_programs/To_find_ASCII.py | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Beginner_Level_Python_programs/To_find_ASCII.py diff --git a/Beginner_Level_Python_programs/To_find_ASCII.py b/Beginner_Level_Python_programs/To_find_ASCII.py new file mode 100644 index 0000000..dc18665 --- /dev/null +++ b/Beginner_Level_Python_programs/To_find_ASCII.py @@ -0,0 +1,4 @@ +# Program to find the ASCII value of the given character + +c = 'p' +print("The ASCII value of '" + c + "' is", ord(c)) \ No newline at end of file From e9b6c0faf8dd64c054fd8512941f37af732898e0 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Tue, 26 Jan 2021 23:11:18 +0530 Subject: [PATCH 27/42] =?UTF-8?q?added=20program=20to=20find=20HCF=20or=20?= =?UTF-8?q?GCD=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Beginner_Level_Python_programs/To_find_GCD.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Beginner_Level_Python_programs/To_find_GCD.py diff --git a/Beginner_Level_Python_programs/To_find_GCD.py b/Beginner_Level_Python_programs/To_find_GCD.py new file mode 100644 index 0000000..0b8b731 --- /dev/null +++ b/Beginner_Level_Python_programs/To_find_GCD.py @@ -0,0 +1,19 @@ +# Python program to find H.C.F of two numbers + +# define a function +def compute_hcf(x, y): + +# choose the smaller number + if x > y: + smaller = y + else: + smaller = x + for i in range(1, smaller+1): + if((x % i == 0) and (y % i == 0)): + hcf = i + return hcf + +num1 = 54 +num2 = 24 + +print("The H.C.F. is", compute_hcf(num1, num2)) \ No newline at end of file From adb239dd23e8a85fe2c03c739d9f121f01dbb59a Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Wed, 27 Jan 2021 15:26:23 +0530 Subject: [PATCH 28/42] =?UTF-8?q?added=20programs=F0=9F=91=A9=E2=80=8D?= =?UTF-8?q?=F0=9F=92=BB=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Beginner_Level_Python_programs/MergeMails.py | 20 ++++++++++++++++ .../find_resolution_of_image.py | 24 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 Beginner_Level_Python_programs/MergeMails.py create mode 100644 Beginner_Level_Python_programs/find_resolution_of_image.py diff --git a/Beginner_Level_Python_programs/MergeMails.py b/Beginner_Level_Python_programs/MergeMails.py new file mode 100644 index 0000000..396be03 --- /dev/null +++ b/Beginner_Level_Python_programs/MergeMails.py @@ -0,0 +1,20 @@ +# Python program to mail merger +# Names are in the file names.txt +# Body of the mail is in body.txt + +# open names.txt for reading +with open("names.txt", 'r', encoding='utf-8') as names_file: + + # open body.txt for reading + with open("body.txt", 'r', encoding='utf-8') as body_file: + + # read entire content of the body + body = body_file.read() + + # iterate over names + for name in names_file: + mail = "Hello " + name.strip() + "\n" + body + + # write the mails to individual files + with open(name.strip()+".txt", 'w', encoding='utf-8') as mail_file: + mail_file.write(mail) \ No newline at end of file diff --git a/Beginner_Level_Python_programs/find_resolution_of_image.py b/Beginner_Level_Python_programs/find_resolution_of_image.py new file mode 100644 index 0000000..c4d89e2 --- /dev/null +++ b/Beginner_Level_Python_programs/find_resolution_of_image.py @@ -0,0 +1,24 @@ +def jpeg_res(filename): + """"This function prints the resolution of the jpeg image file passed into it""" + + # open image for reading in binary mode + with open(filename,'rb') as img_file: + + # height of image (in 2 bytes) is at 164th position + img_file.seek(163) + + # read the 2 bytes + a = img_file.read(2) + + # calculate height + height = (a[0] << 8) + a[1] + + # next 2 bytes is width + a = img_file.read(2) + + # calculate width + width = (a[0] << 8) + a[1] + + print("The resolution of the image is",width,"x",height) + +jpeg_res("img1.jpg") \ No newline at end of file From 6369be48f4835b33eb652a9d5f524a0d52c165f7 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Thu, 28 Jan 2021 17:04:45 +0530 Subject: [PATCH 29/42] =?UTF-8?q?added=20program=20of=20decimal=20conversi?= =?UTF-8?q?on=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Convert Decimal to Binary, Octal and Hexadecimal --- Beginner_Level_Python_programs/decimal_conversion.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Beginner_Level_Python_programs/decimal_conversion.py diff --git a/Beginner_Level_Python_programs/decimal_conversion.py b/Beginner_Level_Python_programs/decimal_conversion.py new file mode 100644 index 0000000..4995175 --- /dev/null +++ b/Beginner_Level_Python_programs/decimal_conversion.py @@ -0,0 +1,7 @@ +# Python program to convert decimal into other number systems +dec = 344 + +print("The decimal value of", dec, "is:") +print(bin(dec), "in binary.") +print(oct(dec), "in octal.") +print(hex(dec), "in hexadecimal.") \ No newline at end of file From 83b148abce40eea389d8b96c68a6599a24575852 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Thu, 28 Jan 2021 17:09:18 +0530 Subject: [PATCH 30/42] =?UTF-8?q?added=20programs=F0=9F=91=A9=E2=80=8D?= =?UTF-8?q?=F0=9F=92=BB=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shuffle_cards.py | 15 ++++++ .../simple_calculator.py | 48 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 Beginner_Level_Python_programs/shuffle_cards.py create mode 100644 Beginner_Level_Python_programs/simple_calculator.py diff --git a/Beginner_Level_Python_programs/shuffle_cards.py b/Beginner_Level_Python_programs/shuffle_cards.py new file mode 100644 index 0000000..74d3421 --- /dev/null +++ b/Beginner_Level_Python_programs/shuffle_cards.py @@ -0,0 +1,15 @@ +# Python program to shuffle a deck of card + +# importing modules +import itertools, random + +# make a deck of cards +deck = list(itertools.product(range(1,14),['Spade','Heart','Diamond','Club'])) + +# shuffle the cards +random.shuffle(deck) + +# draw five cards +print("You got:") +for i in range(5): + print(deck[i][0], "of", deck[i][1]) \ No newline at end of file diff --git a/Beginner_Level_Python_programs/simple_calculator.py b/Beginner_Level_Python_programs/simple_calculator.py new file mode 100644 index 0000000..6a9451c --- /dev/null +++ b/Beginner_Level_Python_programs/simple_calculator.py @@ -0,0 +1,48 @@ +# Program make a simple calculator + +# This function adds two numbers +def add(x, y): + return x + y + +# This function subtracts two numbers +def subtract(x, y): + return x - y + +# This function multiplies two numbers +def multiply(x, y): + return x * y + +# This function divides two numbers +def divide(x, y): + return x / y + + +print("Select operation.") +print("1.Add") +print("2.Subtract") +print("3.Multiply") +print("4.Divide") + +while True: + # Take input from the user + choice = input("Enter choice(1/2/3/4): ") + + # Check if choice is one of the four options + if choice in ('1', '2', '3', '4'): + num1 = float(input("Enter first number: ")) + num2 = float(input("Enter second number: ")) + + if choice == '1': + print(num1, "+", num2, "=", add(num1, num2)) + + elif choice == '2': + print(num1, "-", num2, "=", subtract(num1, num2)) + + elif choice == '3': + print(num1, "*", num2, "=", multiply(num1, num2)) + + elif choice == '4': + print(num1, "/", num2, "=", divide(num1, num2)) + break + else: + print("Invalid Input") \ No newline at end of file From 015f060c60d0b8ef90305ca790594457dcb8cd79 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Fri, 29 Jan 2021 14:14:43 +0530 Subject: [PATCH 31/42] added program of matrix multiplication & transpose --- .../Matrix_transpose.py | 17 +++++++++++++ .../multiply_two_matrix.py | 25 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 Beginner_Level_Python_programs/Matrix_transpose.py create mode 100644 Beginner_Level_Python_programs/multiply_two_matrix.py diff --git a/Beginner_Level_Python_programs/Matrix_transpose.py b/Beginner_Level_Python_programs/Matrix_transpose.py new file mode 100644 index 0000000..6c5ad7b --- /dev/null +++ b/Beginner_Level_Python_programs/Matrix_transpose.py @@ -0,0 +1,17 @@ +# Program to transpose a matrix using a nested loop + +X = [[12,7], + [4 ,5], + [3 ,8]] + +result = [[0,0,0], + [0,0,0]] + +# iterate through rows +for i in range(len(X)): + # iterate through columns + for j in range(len(X[0])): + result[j][i] = X[i][j] + +for r in result: + print(r) \ No newline at end of file diff --git a/Beginner_Level_Python_programs/multiply_two_matrix.py b/Beginner_Level_Python_programs/multiply_two_matrix.py new file mode 100644 index 0000000..d0a0cf2 --- /dev/null +++ b/Beginner_Level_Python_programs/multiply_two_matrix.py @@ -0,0 +1,25 @@ +# Program to multiply two matrices using nested loops + +# 3x3 matrix +X = [[12,7,3], + [4 ,5,6], + [7 ,8,9]] +# 3x4 matrix +Y = [[5,8,1,2], + [6,7,3,0], + [4,5,9,1]] +# result is 3x4 +result = [[0,0,0,0], + [0,0,0,0], + [0,0,0,0]] + +# iterate through rows of X +for i in range(len(X)): + # iterate through columns of Y + for j in range(len(Y[0])): + # iterate through rows of Y + for k in range(len(Y)): + result[i][j] += X[i][k] * Y[k][j] + +for r in result: + print(r) \ No newline at end of file From 2daba64dff8abdc46bdfe6c4cde6acb795f8ae89 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Tue, 2 Feb 2021 16:31:38 +0530 Subject: [PATCH 32/42] =?UTF-8?q?added=20punctuation=20remove=20program=20?= =?UTF-8?q?=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remove_punctuation.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Beginner_Level_Python_programs/remove_punctuation.py diff --git a/Beginner_Level_Python_programs/remove_punctuation.py b/Beginner_Level_Python_programs/remove_punctuation.py new file mode 100644 index 0000000..51c8b93 --- /dev/null +++ b/Beginner_Level_Python_programs/remove_punctuation.py @@ -0,0 +1,16 @@ +# define punctuation +punctuations = '''!()-[]{};:'"\,<>./?@#$%^&*_~''' + +my_str = "Hello!!!, he said ---and went." + +# To take input from the user +# my_str = input("Enter a string: ") + +# remove punctuation from the string +no_punct = "" +for char in my_str: + if char not in punctuations: + no_punct = no_punct + char + +# display the unpunctuated string +print(no_punct) \ No newline at end of file From 18439fdc1ed7a45bb193700c13105c3174b8a48c Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sat, 6 Feb 2021 17:28:39 +0530 Subject: [PATCH 33/42] added text translator program don't forget to install pip install translate --- Beginner_Level_Python_programs/translator.py | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 Beginner_Level_Python_programs/translator.py diff --git a/Beginner_Level_Python_programs/translator.py b/Beginner_Level_Python_programs/translator.py new file mode 100644 index 0000000..f50bc5d --- /dev/null +++ b/Beginner_Level_Python_programs/translator.py @@ -0,0 +1,5 @@ +## don't forget to install - pip install translate +from translate import Translator +translator= Translator(to_lang="hi") +translation = translator.translate("Good Morning!") +print(translation) From b504dc6abe9c8b22e1f3255741735235f37072dc Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sun, 7 Feb 2021 18:20:08 +0530 Subject: [PATCH 34/42] =?UTF-8?q?added=20bitcoin=20mining=20=20program=20i?= =?UTF-8?q?n=20python=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit credits - https://youtu.be/ZhnJ1bkIWWk --- .../bitcoin_mining.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Beginner_Level_Python_programs/bitcoin_mining.py diff --git a/Beginner_Level_Python_programs/bitcoin_mining.py b/Beginner_Level_Python_programs/bitcoin_mining.py new file mode 100644 index 0000000..d289b0c --- /dev/null +++ b/Beginner_Level_Python_programs/bitcoin_mining.py @@ -0,0 +1,30 @@ +from hashlib import sha256 +MAX_NONCE = 100000000000 + +def SHA256(text): + return sha256(text.encode("ascii")).hexdigest() + +def mine(block_number, transactions, previous_hash, prefix_zeros): + prefix_str = '0'*prefix_zeros + for nonce in range(MAX_NONCE): + text = str(block_number) + transactions + previous_hash + str(nonce) + new_hash = SHA256(text) + if new_hash.startswith(prefix_str): + print(f"Yay! Successfully mined bitcoins with nonce value:{nonce}") + return new_hash + + raise BaseException(f"Couldn't find correct has after trying {MAX_NONCE} times") + +if __name__=='__main__': + transactions=''' + Dhaval->Bhavin->20, + Mando->Cara->45 + ''' + difficulty=4 # try changing this to higher number and you will see it will take more time for mining as difficulty increases + import time + start = time.time() + print("start mining") + new_hash = mine(5,transactions,'0000000xa036944e29568d0cff17edbe038f81208fecf9a66be9a2b8321c6ec7', difficulty) + total_time = str((time.time() - start)) + print(f"end mining. Mining took: {total_time} seconds") + print(new_hash) \ No newline at end of file From a345d26a0f753dfd117aabf55dc2670dc46e1804 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Mon, 8 Feb 2021 12:36:17 +0530 Subject: [PATCH 35/42] added sum of series of sine and cosine program --- Beginner_Level_Python_programs/sum_cosine_series.py | 13 +++++++++++++ Beginner_Level_Python_programs/sum_sine_series.py | 12 ++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 Beginner_Level_Python_programs/sum_cosine_series.py create mode 100644 Beginner_Level_Python_programs/sum_sine_series.py diff --git a/Beginner_Level_Python_programs/sum_cosine_series.py b/Beginner_Level_Python_programs/sum_cosine_series.py new file mode 100644 index 0000000..1bc87ae --- /dev/null +++ b/Beginner_Level_Python_programs/sum_cosine_series.py @@ -0,0 +1,13 @@ +import math +def cosine(x,n): + cosx = 1 + sign = -1 + for i in range(2, n, 2): + pi=22/7 + y=x*(pi/180) + cosx = cosx + (sign*(y**i))/math.factorial(i) + sign = -sign + return cosx +x=int(input("Enter the value of x in degrees:")) +n=int(input("Enter the number of terms:")) +print(round(cosine(x,n),2)) \ No newline at end of file diff --git a/Beginner_Level_Python_programs/sum_sine_series.py b/Beginner_Level_Python_programs/sum_sine_series.py new file mode 100644 index 0000000..09695e2 --- /dev/null +++ b/Beginner_Level_Python_programs/sum_sine_series.py @@ -0,0 +1,12 @@ +import math +def sin(x,n): + sine = 0 + for i in range(n): + sign = (-1)**i + pi=22/7 + y=x*(pi/180) + sine = sine + ((y**(2.0*i+1))/math.factorial(2*i+1))*sign + return sine +x=int(input("Enter the value of x in degrees:")) +n=int(input("Enter the number of terms:")) +print(round(sin(x,n),2)) \ No newline at end of file From b2fe39081c483066feb361ca36251b5a0ccfdb24 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Tue, 9 Feb 2021 20:44:26 +0530 Subject: [PATCH 36/42] added floyd's triangle printing program --- Beginner_Level_Python_programs/Floyd's_Triangle.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Beginner_Level_Python_programs/Floyd's_Triangle.py diff --git a/Beginner_Level_Python_programs/Floyd's_Triangle.py b/Beginner_Level_Python_programs/Floyd's_Triangle.py new file mode 100644 index 0000000..d1947dc --- /dev/null +++ b/Beginner_Level_Python_programs/Floyd's_Triangle.py @@ -0,0 +1,11 @@ +# Python Program to Print Floyd's Triangle + +rows = int(input("Please Enter the total Number of Rows : ")) +number = 1 + +print("Floyd's Triangle") +for i in range(1, rows + 1): + for j in range(1, i + 1): + print(number, end = ' ') + number = number + 1 + print() \ No newline at end of file From 41e31184d8443790d76206a919c36ab2b0ae3c6a Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Thu, 11 Feb 2021 12:36:59 +0530 Subject: [PATCH 37/42] added atm system program in python --- Beginner_Level_Python_programs/ATM_System.py | 120 +++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 Beginner_Level_Python_programs/ATM_System.py diff --git a/Beginner_Level_Python_programs/ATM_System.py b/Beginner_Level_Python_programs/ATM_System.py new file mode 100644 index 0000000..ec63432 --- /dev/null +++ b/Beginner_Level_Python_programs/ATM_System.py @@ -0,0 +1,120 @@ +import random + + +class Account: + # Construct an Account object + def __init__(self, id, balance=0, annualInterestRate=3.4): + self.id = id + self.balance = balance + self.annualInterestRate = annualInterestRate + + def getId(self): + return self.id + + def getBalance(self): + return self.balance + + def getAnnualInterestRate(self): + return self.annualInterestRate + + def getMonthlyInterestRate(self): + return self.annualInterestRate / 12 + + def withdraw(self, amount): + self.balance -= amount + + def deposit(self, amount): + self.balance += amount + + def getMonthlyInterest(self): + return self.balance * self.getMonthlyInterestRate() + + +def main(): + # Creating accounts + accounts = [] + for i in range(1000, 9999): + account = Account(i, 0) + accounts.append(account) + + # ATM Processes + + +while True: + + # Reading id from user + id = int(input("\nEnter account pin: ")) + + # Loop till id is valid + while id < 1000 or id > 9999: + id = int(input("\nInvalid Id.. Re-enter: ")) + + # Iterating over account session + while True: + + # Printing menu + print("\n1 - View Balance \t 2 - Withdraw \t 3 - Deposit \t 4 - Exit ") + + # Reading selection + selection = int(input("\nEnter your selection: ")) + + # Getting account object + for acc in accounts: + # Comparing account id + if acc.getId() == id: + accountObj = acc + break + + # View Balance + if selection == 1: + # Printing balance + print(accountObj.getBalance()) + + # Withdraw + elif selection == 2: + # Reading amount + amt = float(input("\nEnter amount to withdraw: ")) + ver_withdraw = input("Is this the correct amount, Yes or No ? " + str(amt) + " ") + + if ver_withdraw == "Yes": + print("Verify withdraw") + else: + break + + if amt < accountObj.getBalance(): + # Calling withdraw method + accountObj.withdraw(amt) + # Printing updated balance + print("\nUpdated Balance: " + str(accountObj.getBalance()) + " n") + else: + print("\nYou're balance is less than withdrawl amount: " + str(accountObj.getBalance()) + " n") + print("\nPlease make a deposit."); + + # Deposit + elif selection == 3: + # Reading amount + amt = float(input("\nEnter amount to deposit: ")) + ver_deposit = input("Is this the correct amount, Yes, or No ? " + str(amt) + " ") + + if ver_deposit == "Yes": + # Calling deposit method + accountObj.deposit(amt); + # Printing updated balance + print("\nUpdated Balance: " + str(accountObj.getBalance()) + " n") + else: + break + + elif selection == 4: + print("nTransaction is now complete.") + print("Transaction number: ", random.randint(10000, 1000000)) + print("Current Interest Rate: ", accountObj.annualInterestRate) + print("Monthly Interest Rate: ", accountObj.annualInterestRate / 12) + print("Thanks for choosing us as your bank") + exit() + + # Any other choice + else: + print("nThat's an invalid choice.") + +# Main function +main() \ No newline at end of file From 1e6a0fb34e364417865d48adb37c4b3f87af992f Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Fri, 12 Feb 2021 19:13:42 +0530 Subject: [PATCH 38/42] =?UTF-8?q?added=20sorting=20alphabet=20program?= =?UTF-8?q?=F0=9F=91=A9=E2=80=8D=F0=9F=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Beginner_Level_Python_programs/sort_alphabet.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Beginner_Level_Python_programs/sort_alphabet.py diff --git a/Beginner_Level_Python_programs/sort_alphabet.py b/Beginner_Level_Python_programs/sort_alphabet.py new file mode 100644 index 0000000..0390526 --- /dev/null +++ b/Beginner_Level_Python_programs/sort_alphabet.py @@ -0,0 +1,8 @@ +my_str = input("Enter a string: ") +# breakdown the string into a list of words +words = my_str.split() +# sort the list +words.sort() +# display the sorted words +for word in words: + print(word) \ No newline at end of file From f4b19d5a345c04de37bc19754790826e2f69615e Mon Sep 17 00:00:00 2001 From: Prathima Kadari Date: Tue, 25 May 2021 13:41:37 +0530 Subject: [PATCH 39/42] Added string swap program --- Beginner_Level_Python_programs/string_swap.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Beginner_Level_Python_programs/string_swap.py diff --git a/Beginner_Level_Python_programs/string_swap.py b/Beginner_Level_Python_programs/string_swap.py new file mode 100644 index 0000000..9927331 --- /dev/null +++ b/Beginner_Level_Python_programs/string_swap.py @@ -0,0 +1,8 @@ +s=input() +s=list(s) +res="" +for i in range(0,len(s)-1,2): + temp=s[i+1] + s[i+1]=s[i] + s[i]=temp +print(res.join(s)) From 98eb39bd16b3d06fdbf518b14b65ad780e72dcd1 Mon Sep 17 00:00:00 2001 From: Rahul H Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Sat, 26 Jun 2021 17:39:43 +0530 Subject: [PATCH 40/42] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 40a4760..ae0c8a4 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ src:-https://dotnettutorials.net/lesson/tuples-in-python/ -## File Modes in Python🐍 +## File Mode in Python🐍 ![file2](https://user-images.githubusercontent.com/67586773/104689438-84028c80-5728-11eb-97cf-7cf8882c157c.png) From d84e48d26f96364fe9b175f418a909872f29b36a Mon Sep 17 00:00:00 2001 From: Rahul Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Mon, 21 Mar 2022 23:42:03 +0530 Subject: [PATCH 41/42] Update README.md --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index ae0c8a4..8582bb6 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,7 @@ src:-https://dotnettutorials.net/lesson/tuples-in-python/ -## File Mode in Python🐍 -![file2](https://user-images.githubusercontent.com/67586773/104689438-84028c80-5728-11eb-97cf-7cf8882c157c.png) - - -src:- http://net-informations.com/python/file/default.htm ## if-else flow chart From 2f8cb9a02f277326c01fd679197bedbab77fd0b7 Mon Sep 17 00:00:00 2001 From: Rahul Gupta <67586773+rahulhgdev@users.noreply.github.com> Date: Fri, 15 Apr 2022 23:58:46 +0530 Subject: [PATCH 42/42] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8582bb6..0c55822 100644 --- a/README.md +++ b/README.md @@ -22,3 +22,5 @@ src:- https://www.educba.com/if-else-in-python/ ## for-loop flow chart ![forLoop](https://user-images.githubusercontent.com/67586773/105038972-ff946e80-5a85-11eb-8d3d-1e50a1eb4636.jpg) + +More updating soon..!