12 Commits

Author SHA1 Message Date
055971a0e9 Giteafy the repo
Signed-off-by: Puranjay Savar Mattas <me@psmattas.com>
2025-09-03 09:51:40 +00:00
99abb706a6 Giteafy the repo
Signed-off-by: Puranjay Savar Mattas <me@psmattas.com>
2025-09-03 09:50:50 +00:00
42aae67117 Giteafy the repo
Signed-off-by: Puranjay Savar Mattas <me@psmattas.com>
2025-09-03 09:50:29 +00:00
35d6cd35dd Giteafy the repo
Signed-off-by: Puranjay Savar Mattas <me@psmattas.com>
2025-09-03 09:50:10 +00:00
c05c23d327 Giteafy the repo
Signed-off-by: Puranjay Savar Mattas <me@psmattas.com>
2025-09-03 09:49:33 +00:00
5615f35156 Giteafy the repo
Signed-off-by: Puranjay Savar Mattas <me@psmattas.com>
2025-09-03 09:48:12 +00:00
c0d4b3e9b8 Giteafy the repo
Signed-off-by: Puranjay Savar Mattas <me@psmattas.com>
2025-09-03 09:47:34 +00:00
19614b9707 PlagiarismChecker 2021-05-13 15:22:22 +05:30
a98908f979 Update 2021-05-13 14:37:03 +05:30
bd8b9ddf58 ContentAggregator 2021-05-13 14:36:05 +05:30
654647d94c OFP Structure 2021-05-04 21:38:16 +05:30
3aaa1d592a OFP Rename 2021-05-04 21:37:11 +05:30
11 changed files with 526 additions and 6 deletions

59
BinarySearch.py Normal file
View File

@@ -0,0 +1,59 @@
"""
----------------------------------------
Binary Search Algorithm
----------------------------------------
The name is evident enough to give an overview of the project.
The program requires you to create a list of numbers between 0
to whatever range you prefer, with every succeeding number having
a difference of 2 between them.
When the user inputs a random number to be searched the program b
egins its search by dividing the list into two halves. The first
half is searched for the required number and if found, the other half
is rejected and vice versa. The search continues until the number is
found or the subarray size becomes zero. This Python project idea could
also help you write a program to search an element in the list.
----------------------------------------
"""
# iterative implementation of binary search in Python
def binary_search(a_list, item):
a_list = 'path/to/file/or/array'
"""
Performs iterative binary search to find the position of an integer in a given, sorted, list.
a_list -- sorted list of integers
item -- integer you are searching for the position of
"""
first = 0
last = len(a_list) - 1
while first <= last:
i = (first + last) / 2
if a_list[i] == item:
return ' found at position '.format(item=item, i=i)
elif a_list[i] > item:
last = i - 1
elif a_list[i] < item:
first = i + 1
else:
return ' not found in the list'.format(item=item)
# recursive implementation of binary search in Python
def binary_search_recursive(a_list, item):
"""
Performs recursive binary search of an integer in a given, sorted, list.
a_list -- sorted list of integers
item -- integer you are searching for the position of
"""
first = 0
last = len(a_list) - 1
if len(a_list) == 0:
return ' was not found in the list'.format(item=item)
else:
i = (first + last) // 2
if item == a_list[i]:
return ' found'.format(item=item)
else:
if a_list[i] < item:
return binary_search_recursive(a_list[i+1:], item)
else:
return binary_search_recursive(a_list[:i], item)

139
ContentAggregator.py Normal file
View File

@@ -0,0 +1,139 @@
"""
----------------------------------------
Content Aggregator
----------------------------------------
Surfing through different websites and articles
in search of good and authentic content is a
time-consuming process. This Python project can
help you save time looking for content. A content
aggregator searches popular websites in search for
relevant content and then complies with all the
content and provides the user with unbiased content.
----------------------------------------
"""
import urllib, os, requests, datetime, subprocess
# reddit imports
import praw, pprint
# pip install feedparser
import feedparser
# stockexchange
from nsetools import Nse
# Place your CLIENT_ID & CLIENT_SECRET below
reddit = praw.Reddit(client_id='XXXXXXX',
client_secret='XXXXXXXXXXX',
grant_type_access='client_credentials',
user_agent='script/1.0')
# class Reddit:
# def TopNews(self):
# Add your favorite NEWS subreddits in the argument as many as you'd like.
# for submission in reddit.subreddit('News+WorldNews+UpliftingNews+').top(limit=10):
# top_news = reddit.domain(submission).top('month')ls
# print(top_news)
"""
Each class contains functions which further calls
APIs from the neccesary packages and the rest is
self explanatory I suppose
"""
class News:
def Indian_News(self):
newsfeed = feedparser.parse(
"http://feeds.feedburner.com/ndtvnews-india-news"
)
print("Today's News: ")
for i in range(0, 20):
entry = newsfeed.entries[i]
print(entry.title)
print(entry.summary)
print("------News Link--------")
print(entry.link)
print("###########################################")
print(' ')
print('-------------------------------------------------------------------------------------------------------')
print(' ')
class Medium:
# https://github.com/thepracticaldev/dev.to/issues/28#issuecomment-325544385
def medium_programming(self):
feed = feedparser.parse(
"https://medium.com/feed/tag/programming"
)
print("Programming Today: ")
for i in range(10):
entry = feed.entries[i]
print(entry.title)
print("URL: ")
print(entry.link)
print("###########################################")
print(' ')
print('-------------------------------------------------------------------------------------------------------')
print(' ')
def medium_python(self):
feed_python = feedparser.parse(
"https://medium.com/feed/tag/python"
)
print("Python Today: ")
for i in range(10):
entry = feed_python.entries[i]
print(entry.title)
print("URL: ")
print(entry.link)
print("###########################################")
print(' ')
print('-------------------------------------------------------------------------------------------------------')
print(' ')
def medium_developer(self):
feed_developer = feedparser.parse(
"https://medium.com/feed/tag/developer"
)
print("Developer News Today: ")
for i in range(5):
entry = feed_developer.entries[i]
print(entry.title)
print("URL: ")
print(entry.link)
print("###########################################")
print(' ')
print('-------------------------------------------------------------------------------------------------------')
print(' ')
class StockExchange:
def nse_stock(self):
nse = Nse()
print("TOP GAINERS OF YESTERDAY")
pprint.pprint(nse.get_top_gainers())
print("###########################################")
print(' ')
print("TOP LOSERS OF YESTERDAY")
pprint.pprint(nse.get_top_losers())
print("###########################################")
print(' ')
print('-------------------------------------------------------------------------------------------------------')
print(' ')
#/ objects inititalization
# reddit_object = Reddit()
News_object = News()
Medium_object = Medium()
StockExchange_object = StockExchange()
if __name__ == "__main__":
# Functions call of each class
# reddit_object.TopNews()
News_object.Indian_News()
Medium_object.medium_python()
Medium_object.medium_programming()
Medium_object.medium_developer()
StockExchange_object.nse_stock()

41
MadLabGenerator.py Normal file
View File

@@ -0,0 +1,41 @@
"""
----------------------------------------
Mad Libs Generator
----------------------------------------
This python beginner project is a good start for beginner software developers as it has concepts
like strings, variables, and concatenation. Mad Libs Generator teaches to manipulate user-inputted
data as the Mad Libs refer to a series of inputs that a user enters. The input from the user could be
anything from an adjective, a pronoun, or even a verb. After all the inputs are entered the application
takes all the data and arranges it to build a story template.
----------------------------------------
"""
# Loop back to this point once code finishes
loop = 1
while (loop < 10):
# All the questions that the program asks the user
noun = input("Choose a noun: ")
p_noun = input("Choose a plural noun: ")
noun2 = input("Choose a noun: ")
place = input("Name a place: ")
adjective = input("Choose an adjective (Describing word): ")
noun3 = input("Choose a noun: ")
# Displays the story based on the users input
print ("------------------------------------------")
print ("Be kind to your",noun,"- footed", p_noun)
print ("For a duck may be somebody's", noun2,",")
print ("Be kind to your",p_noun,"in",place)
print ("Where the weather is always",adjective,".")
print ()
print ("You may think that is this the",noun3,",")
print ("Well it is.")
print ("------------------------------------------")
# Loop back to "loop = 1"
continue_program = input("Do you want to continue(Y/N): ")
if (continue_program == "n"):
break
elif (continue_program == "y"):
loop = loop + 1
else:
print("Wrong input!")
break

63
NumberGuessing.py Normal file
View File

@@ -0,0 +1,63 @@
"""
----------------------------------------
Number Guessing Game
----------------------------------------
This project is an exciting fun game for beginners to build up. The program generates
a random number from 1 to 10, or 1 to 100 any range that is specified and the user must
guess the number after a hint from the computer. Every time a users guess is wrong they
are prompted with more hints to make it easier for them to guess the number but at the
cost of reducing the score. The clue any math clue like multiples, divisible, greater or
smaller, or a combination of all.
The program also requires functions to check if an actual number is entered by the user
or not, to compare the input number with the actual number, to find the difference between
the two numbers.
----------------------------------------
"""
import random
attempts_list = []
def show_score():
if len(attempts_list) <= 0:
print("There is currently no high score, it's yours for the taking!")
else:
print("The current high score is {} attempts".format(min(attempts_list)))
def start_game():
random_number = int(random.randint(1, 10))
print("Hello traveler! Welcome to the game of guesses!")
player_name = input("What is your name? ")
wanna_play = input("Hi, {}, would you like to play the guessing game? (Enter Yes/No) ".format(player_name))
# Where the show_score function USED to be
attempts = 0
show_score()
while wanna_play.lower() == "yes":
try:
guess = input("Pick a number between 1 and 10 ")
if int(guess) < 1 or int(guess) > 10:
raise ValueError("Please guess a number within the given range")
if int(guess) == random_number:
print("Nice! You got it!")
attempts += 1
attempts_list.append(attempts)
print("It took you {} attempts".format(attempts))
play_again = input("Would you like to play again? (Enter Yes/No) ")
attempts = 0
show_score()
random_number = int(random.randint(1, 10))
if play_again.lower() == "no":
print("That's cool, have a good one!")
break
elif int(guess) > random_number:
print("It's lower")
attempts += 1
elif int(guess) < random_number:
print("It's higher")
attempts += 1
except ValueError as err:
print("Oh no!, that is not a valid value. Try again...")
print("({})".format(err))
else:
print("That's cool, have a good one!")
if __name__ == '__main__':
start_game()

View File

@@ -0,0 +1,6 @@
# Advanced Projects:
| Serial No. | Program Name |
|------------|--------------|
|1 | [ContentAggregator.py](https://git.psmattas.com/psmattas/Python-Projects/src/branch/All-Projects/ContentAggregator.py) |
|2 | [PlagiarismChecker.py](https://git.psmattas.com/psmattas/Python-Projects/src/branch/All-Projects/PlagiarismChecker.py) |

9
Order Of Programs(BP).MD Normal file
View File

@@ -0,0 +1,9 @@
# Beginner Projects:
| Serial No. | Program Name |
|------------|--------------|
|1 | [MadLabGenerator](https://git.psmattas.com/psmattas/Python-Projects/src/branch/All-Projects/MadLabGenerator.py) |
|2 | [NumberGuessing](https://git.psmattas.com/psmattas/Python-Projects/src/branch/All-Projects/NumberGuessing.py) |
|3 | [RockPaperScisors](https://git.psmattas.com/psmattas/Python-Projects/src/branch/All-Projects/RockPaperScissors.py) |
|4 | [WebsiteBlocker](https://git.psmattas.com/psmattas/Python-Projects/src/branch/All-Projects/WebsiteBlocker.py) |
|5 | [BinarySearch](https://git.psmattas.com/psmattas/Python-Projects/src/branch/All-Projects/BinarySearch.py) |

View File

@@ -2,8 +2,8 @@
| Serial No. | Program Name | | Serial No. | Program Name |
|------------|--------------| |------------|--------------|
|1 | [Calculator](https://github.com/psavarmattas/Python-Projects/blob/master/Calculator.py) | |1 | [Calculator](https://git.psmattas.com/psmattas/Python-Projects/src/branch/All-Projects/Calculator.py) |
|2 | [AlarmClock](https://github.com/psavarmattas/Python-Projects/blob/master/AlarmClock.py) & [youtube_alarm_videos](https://github.com/psavarmattas/Python-Projects/blob/master/youtube_alarm_videos.txt) | |2 | [AlarmClock](https://git.psmattas.com/psmattas/Python-Projects/src/branch/All-Projects/AlarmClock.py) & [youtube_alarm_videos](https://git.psmattas.com/psmattas/Python-Projects/src/branch/All-Projects/youtube_alarm_videos.txt) |
|3 | [TikTacToe](https://github.com/psavarmattas/Python-Projects/blob/master/TikTacToe.py) | |3 | [TikTacToe](https://git.psmattas.com/psmattas/Python-Projects/src/branch/All-Projects/master/TikTacToe.py) |
|4 | [DirectoryTreeGenerator](https://github.com/psavarmattas/Python-Projects/blob/master/DirectoryTreeGenerator.py) | |4 | [DirectoryTreeGenerator](https://git.psmattas.com/psmattas/Python-Projects/src/branch/All-Projects/master/DirectoryTreeGenerator.py) |
|5 | [CurrencyConverter](https://github.com/psavarmattas/Python-Projects/blob/master/CurrencyConverter.py) | |5 | [CurrencyConverter](https://git.psmattas.com/psmattas/Python-Projects/src/branch/All-Projects/master/CurrencyConverter.py) |

107
PlagiarismChecker.py Normal file
View File

@@ -0,0 +1,107 @@
"""
----------------------------------------
Plagiarism Checker
----------------------------------------
With content creation and blogging one of
the good businesses in the market everyone
wants to try their hands on this but some
lack sufficient funds to give their articles
a free plagiarism check as mostly plagiarism
checkers do not come for free. Building a
Python plagiarism checker could be built here
using a natural language processing library
along with the search API to search the first
few pages of Google and detect plagiarism if any.
----------------------------------------
"""
import re
import nltk; nltk.download('punkt')
from nltk.util import ngrams, pad_sequence, everygrams
from nltk.tokenize import word_tokenize
from nltk.lm import MLE, WittenBellInterpolated
import numpy as np
import plotly.graph_objects as go
from scipy.ndimage import gaussian_filter
# Training data file
train_data_file = ""
# read training data
with open(train_data_file) as f:
train_text = f.read().lower()
# apply preprocessing (remove text inside square and curly brackets and rem punc)
train_text = re.sub(r"\[.*\]|\{.*\}", "", train_text)
train_text = re.sub(r'[^\w\s]', "", train_text)
# set ngram number
n = 4
# pad the text and tokenize
training_data = list(pad_sequence(word_tokenize(train_text), n,
pad_left=True,
left_pad_symbol="<s>"))
# generate ngrams
ngrams = list(everygrams(training_data, max_len=n))
print("Number of ngrams:", len(ngrams))
# build ngram language models
model = WittenBellInterpolated(n)
model.fit([ngrams], vocabulary_text=training_data)
print(model.vocab)
# testing data file
test_data_file = ""
# Read testing data
with open(test_data_file) as f:
test_text = f.read().lower()
test_text = re.sub(r'[^\w\s]', "", test_text)
# Tokenize and pad the text
testing_data = list(pad_sequence(word_tokenize(test_text), n,
pad_left=True,
left_pad_symbol="<s>"))
print("Length of test data:", len(testing_data))
# assign scores
scores = []
for i, item in enumerate(testing_data[n-1:]):
s = model.score(item, testing_data[i:i+n-1])
scores.append(s)
scores_np = np.array(scores)
# set width and height
width = 8
height = np.ceil(len(testing_data)/width).astype("int32")
print("Width, Height:", width, ",", height)
# copy scores to rectangular blank array
a = np.zeros(width*height)
a[:len(scores_np)] = scores_np
diff = len(a) - len(scores_np)
# apply gaussian smoothing for aesthetics
a = gaussian_filter(a, sigma=1.0)
# reshape to fit rectangle
a = a.reshape(-1, width)
# format labels
labels = [" ".join(testing_data[i:i+width]) for i in range(n-1, len(testing_data), width)]
labels_individual = [x.split() for x in labels]
labels_individual[-1] += [""]*diff
labels = [f"{x:60.60}" for x in labels]
# create heatmap
fig = go.Figure(data=go.Heatmap(
z=a, x0=0, dx=1,
y=labels, zmin=0, zmax=1,
customdata=labels_individual,
hovertemplate='%{customdata} <br><b>Score:%{z:.3f}<extra></extra>',
colorscale="burg"))
fig.update_layout({"height":height*28, "width":1000, "font":{"family":"Courier New"}})
fig['layout']['yaxis']['autorange'] = "reversed"
fig.show()

View File

@@ -1,5 +1,5 @@
# Introduction: # Introduction:
_`Last Updated: May 04' 2021`_ _`Last Updated: May 13' 2021`_
Here are programs that every budding programmer who is learning to code in Python should start with. These programs are a compilation of many different types of programs and levels of programming you should try. You can use the table in "Order Of Programs" file to find the order in which it is best to program in. Here are programs that every budding programmer who is learning to code in Python should start with. These programs are a compilation of many different types of programs and levels of programming you should try. You can use the table in "Order Of Programs" file to find the order in which it is best to program in.

53
RockPaperScissors.py Normal file
View File

@@ -0,0 +1,53 @@
"""
----------------------------------------
Rock Paper Scissors
----------------------------------------
This program or a mini-game is designed when you dont have anyone
to play or you are under lockdown alone. There are a number of functions
that this program requires so let us have an overview of each.
1. A random function: to generate rock, paper, or scissors.
2. Valid function: to check the validity of the move.
3. Result function: to declare the winner of the round.
4. Scorekeeper: to keep track of the score.
The program requires the user to make the first move before it makes one
the move. Once the move is validated the input is evaluated, the input entered
could be a string or an alphabet. After evaluating the input string a winner
is decided by the result function and the score of the round is updated by the
scorekeeper function.
----------------------------------------
"""
import random
import os
import re
os.system('cls' if os.name=='nt' else 'clear')
while (1 < 2):
print ("\n")
print ("Rock, Paper, Scissors - Shoot!")
userChoice = input("Choose your weapon [R]ock, [P]aper, or [S]cissors: ")
if not re.match("[SsRrPp]", userChoice):
print ("Please choose a letter:")
print ("[R]ock, [S]cissors or [P]aper.")
continue
# Echo the user's choice
print ("You chose: " + userChoice)
choices = ['R', 'P', 'S']
opponenetChoice = random.choice(choices)
print ("I chose: " + opponenetChoice)
if opponenetChoice == str.upper(userChoice):
print ("Tie! ")
# if opponenetChoice == str("R") and str.upper(userChoice) == "P"
elif opponenetChoice == 'R' and userChoice.upper() == 'S':
print ("Scissors beats rock, I win! ")
continue
elif opponenetChoice == 'S' and userChoice.upper() == 'P':
print ("Scissors beats paper! I win! ")
continue
elif opponenetChoice == 'P' and userChoice.upper() == 'R':
print ("Paper beat rock, I win! ")
continue
else:
print ("You win!")

43
WebsiteBlocker.py Normal file
View File

@@ -0,0 +1,43 @@
"""
----------------------------------------
Website Blocker
----------------------------------------
We all know while surfing through the net many unwanted sites
popup to distract us. This project comes at help in such cases
as it can be built up to block certain websites from opening.
The program is beneficial for people who get easily distracted
to switch to social media sites while into something serious.
----------------------------------------
"""
import time
from datetime import datetime as dt
hosts_path = r"/etc/hosts" # r is for raw string
hosts_temp = "hosts"
redirect = "127.0.0.1"
web_sites_list = ["www.facebook.com", "facebook.com"] # users can modify the list of the websites they want to block
while True:
if dt(dt.now().year, dt.now().month, dt.now().day, 9) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day,22):
print("Working hours")
with open(hosts_path, "r+") as file:
content = file.read()
for website in web_sites_list:
if website in content:
pass
else:
file.write(redirect+" "+website+"\n")
else:
print("Fun time")
with open(hosts_path, "r+") as file:
content = file.readlines()
file.seek(0) # reset the pointer to the top of the text file
for line in content:
# here comes the tricky line, basically we overwrite the whole file
if not any(website in line for website in web_sites_list):
file.write(line)
# do nothing otherwise
file.truncate() # this line is used to delete the trailing lines (that contain DNS)
time.sleep(5)