From 1ae857e153710e4cb696bc7a66ba7bc2030167b2 Mon Sep 17 00:00:00 2001 From: Akshit Grover Date: Fri, 6 Oct 2017 21:26:19 +0530 Subject: [PATCH 1/6] Expense Manager (#13) * Add Expense Manager * Update Contributors * Update Run Command * Update Readme --- README.md | 10 +- expense_manager.py | 340 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 349 insertions(+), 1 deletion(-) create mode 100644 expense_manager.py diff --git a/README.md b/README.md index 989a718..c8adffa 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Python Scripts +# Python Scripts > This Repo is a collection of Various python scripts. @@ -141,6 +141,13 @@ pip install twitter python bulk_add_twitter_list.py ``` +### Expense Manager +Simple GUI program which helps you calculate your expenses, monitor them just through mouse clicks. All you have to do is run the script and choose an option from the menu which will displayed when you run the script. Enter Your Expenses as eg: "Biscuits Rs 15" " rs " ignore the quotes. + +```bash +python expense_manger.py +``` + ## Release History * 0.0.1 @@ -173,3 +180,4 @@ The following people helped in creating the above content. * Pradhvan Bisht * David Antonini * Nguyen Anh Tien +*Akshit Grover diff --git a/expense_manager.py b/expense_manager.py new file mode 100644 index 0000000..469b2ff --- /dev/null +++ b/expense_manager.py @@ -0,0 +1,340 @@ +#General Function: + +def combine_funcs(*funcs): + def combined_func(*args, **kwargs): + for f in funcs: + f(*args, **kwargs) + return combined_func + + + +#Defining the create function: + +def create(): + def sub_create(): + def sub1(): + def sub2(): + f1.destroy() + b=TextArea.get("1.0",'end') + if(b!='0'): + f.write(b) + f.write("\n") + f2.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Congratulations! Your Entry Is Made.",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true") + b1=tkinter.Button(f1,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + a=e.get() + a=a.upper() + f1.destroy() + f=open(a,"w") + f2=tkinter.Frame(bg="#CCCCFF") + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Make An Entry:\n\nExample: Item1 Rs amount\nItem2 Rs amount",bg="#FFFFFF",fg="#680000",relief="groove",anchor="n",pady=50,font=25) + l1.pack(fill="x",expand="true") + TextArea = tkinter.Text(f2) + ScrollBar = tkinter.Scrollbar(f2,bg="white") + ScrollBar.config(command=TextArea.yview) + TextArea.config(yscrollcommand=ScrollBar.set) + ScrollBar.pack(side="right", fill="y") + TextArea.pack(fill="x") + b1=tkinter.Button(f2,text="Submit",bg="#FFFFFF",fg="blue",relief="groove",command=sub1) + b1.pack() + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Date:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.35,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Make Entry",bg="#9999FF",fg="#660099",relief="groove",command=sub_create,height=2,width=10) + b1.place(relx=0.45,rely=0.56) + + +#Defining the get function: + +def get(): + def sub_get(): + def sub2(): + f2.destroy() + a=e.get() + a=a.upper() + f1.destroy() + f=open(a,'r') + f2=tkinter.Frame() + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Your Entries For The Date "+a+" Are: ",bg="#FFFFFF",fg="#680000",relief="groove",anchor="center",pady=50) + l1.pack(fill="x",expand="true") + TextArea = tkinter.Text(f2) + ScrollBar = tkinter.Scrollbar(f2) + ScrollBar.config(command=TextArea.yview) + ScrollBar.pack(side="right", fill="y") + TextArea.insert('insert',f.read()) + TextArea.config(yscrollcommand=ScrollBar.set,state="disabled") + TextArea.pack(fill="both",expand="true") + b1=tkinter.Button(f2,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Date:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.35,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Get Entry",bg="#9999FF",fg="#660099",relief="groove",command=sub_get,height=2,width=10) + b1.place(relx=0.45,rely=0.56) + +#Defining the get entry by month function: + +def getm(): + def sub_getm(): + def sub2(): + f2.destroy() + a=e.get() + a=a.upper() + f1.destroy() + f2=tkinter.Frame() + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Your Entries For The Month Are: ",bg="#FFFFFF",fg="#680000",relief="groove",anchor="center",pady=50) + l1.pack(fill="x",expand="true") + TextArea = tkinter.Text(f2) + ScrollBar = tkinter.Scrollbar(f2) + ScrollBar.config(command=TextArea.yview) + ScrollBar.pack(side="right", fill="y") + for i in range(1,32): + try: + f=open(str(i)+' '+a,'r') + except IOError: + continue + TextArea.insert('insert',"\n"+str(i)+' '+a+": \n\n"+f.read()) + TextArea.config(yscrollcommand=ScrollBar.set,state="disabled") + TextArea.pack(fill="both",expand="true") + b1=tkinter.Button(f2,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Month And Year:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.3,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Get Entry",bg="#9999FF",fg="#660099",relief="groove",command=sub_getm,height=2,width=10) + b1.place(relx=0.47,rely=0.56) + + + + +#Get Total Expense By Date: + + +def Sum(): + def sub_Sum(): + def sub2(): + f2.destroy() + t=e.get() + t=t.upper() + try: + f=open(t,'r') + a=f.readlines() + c=0 + for i in range(0,len(a)): + b='' + for j in range(len(a[i])-1,0,-1): + if(a[i][j]!=' ' and a[i][j]>='0' and a[i][j]<='9'): + b=b+a[i][j] + if(a[i][j]>='9'): + break + if(b!=''): + c=c+int(b[::-1]) + f1.destroy() + f2=tkinter.Frame() + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Total Expenses On "+t+" Are: \nRs "+str(c),bg="#FFFFFF",fg="#680000",relief="groove",anchor="center",pady=50,font=50) + l1.pack(fill="both",expand="true") + except IOError: + l1=tkinter.Label(f2,text="No Such Entry Is Made "+t+" Are: \nRs "+str(c),bg="#FFFFFF",fg="#680000",relief="groove",anchor="center",pady=50,font=50) + l1.pack(fill="both",expand="true") + b1=tkinter.Button(f2,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Date:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.35,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Get Expenses",bg="#9999FF",fg="#660099",relief="groove",command=sub_Sum,height=2,width=10) + b1.place(relx=0.47,rely=0.56) + +#Defining Get total expense in a month: + +def Summ(): + def sub_Summ(): + def sub2(): + f2.destroy() + a=e.get() + a=a.upper() + c=0 + for i in range(1,32): + try: + f=open(str(i)+' '+a,'r') + t=f.readlines() + for i in range(0,len(t)): + b='' + for j in range(len(t[i])-1,0,-1): + if(t[i][j]!=' ' and t[i][j]>='0' and t[i][j]<='9'): + b=b+t[i][j] + if(b!=''): + c=c+int(b[::-1]) + except IOError: + continue + f1.destroy() + f2=tkinter.Frame() + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Total Expenses In "+a+" Are: \nRs "+str(c),bg="#FFFFFF",fg="#680000",relief="groove",anchor="center",pady=50,font=50) + l1.pack(fill="both",expand="true") + b1=tkinter.Button(f2,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Month And Year:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.3,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Get Expenses",bg="#9999FF",fg="#660099",relief="groove",command=sub_Summ,height=2,width=10) + b1.place(relx=0.47,rely=0.56) + + + +# Defining Add to entry: + +def add(): + def sub_add(): + def sub1(): + def sub2(): + f1.destroy() + b=TextArea.get("1.0",'end') + if(b!='0'): + f.write(b) + f.write("\n") + f2.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Congratulations! Your Entry Is Made.",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true") + b1=tkinter.Button(f1,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + a=e.get() + a=a.upper() + f1.destroy() + f=open(a,"a") + f2=tkinter.Frame(bg="#CCCCFF") + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Make An Entry:\n\nExample: Item1 Rs amount\nItem2 Rs amount",bg="#FFFFFF",fg="#680000",relief="groove",anchor="n",pady=50,font=25) + l1.pack(fill="x",expand="true") + TextArea = tkinter.Text(f2) + ScrollBar = tkinter.Scrollbar(f2,bg="white") + ScrollBar.config(command=TextArea.yview) + TextArea.config(yscrollcommand=ScrollBar.set) + ScrollBar.pack(side="right", fill="y") + TextArea.pack(fill="x") + b1=tkinter.Button(f2,text="Submit",bg="#FFFFFF",fg="blue",relief="groove",command=sub1) + b1.pack() + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Date:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.35,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Make Entry",bg="#9999FF",fg="#660099",relief="groove",command=sub_add,height=2,width=10) + b1.place(relx=0.45,rely=0.56) + +# Defining Delete Existing Entry: + +def delete(): + import os + delete=lambda x:os.remove(x) + def sub_delete(): + def sub2(): + f2.destroy() + a=e.get() + a=a.upper() + delete(a) + f1.destroy() + f2=tkinter.Frame(bg="#CCCCFF") + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Congratulations! Your Entry Is Deleted.",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true") + b1=tkinter.Button(f2,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Date:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.35,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Delete",bg="#9999FF",fg="#660099",relief="groove",command=sub_delete,height=2,width=10) + b1.place(relx=0.47,rely=0.56) + + + +import tkinter +root=tkinter.Tk() +root.geometry('1250x700') +def start(): + global frame + frame=tkinter.Frame(bg="#CCCCFF") + frame.pack(fill="both",expand="true",) + l1=tkinter.Label(frame,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(frame,text="Press To Create A new Entry",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16,padx=16) + l1.place(relx=0.2,rely=0.2,anchor="n") + b1=tkinter.Button(frame,text="Create Entry Sheet",bg="#9999FF",fg="#660099",relief="solid",command=create,font=11,pady=16,cursor="dot") + b1.place(relx=0.2,rely=0.3,anchor="n") + l1=tkinter.Label(frame,text="Press To Get Entry By Date",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16,padx=16) + l1.place(relx=0.4,rely=0.2,anchor="n") + b1=tkinter.Button(frame,text="Get Entry Sheet",bg="#9999FF",fg="#660099",relief="solid",command=get,font=11,pady=16,cursor="dot") + b1.place(relx=0.4,rely=0.3,anchor="n") + l1=tkinter.Label(frame,text="Press To Get Entry By Month",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16,padx=7) + l1.place(relx=0.6,rely=0.2,anchor="n") + b1=tkinter.Button(frame,text="Get Monthly Entry Sheet",bg="#9999FF",fg="#660099",relief="solid",command=getm,font=11,pady=16,cursor="dot") + b1.place(relx=0.6,rely=0.3,anchor="n") + l1=tkinter.Label(frame,text="Press To Get Total Expense On Date",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16) + l1.place(relx=0.8,rely=0.2,anchor="n") + b1=tkinter.Button(frame,text="Get Total Expense On Date",bg="#9999FF",fg="#660099",relief="solid",command=Sum,font=11,pady=16,cursor="dot") + b1.place(relx=0.8,rely=0.3,anchor="n") + l1=tkinter.Label(frame,text="Press To Get Total Expense In A Month",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16) + l1.place(relx=0.3,rely=0.5,anchor="n") + b1=tkinter.Button(frame,text="Get Total Expense",bg="#9999FF",fg="#660099",relief="solid",command=Summ,font=11,pady=16,cursor="dot") + b1.place(relx=0.3,rely=0.6,anchor="n") + l1=tkinter.Label(frame,text="Press To Add To Existing Entry",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16) + l1.place(relx=0.51,rely=0.5,anchor="n") + b1=tkinter.Button(frame,text="Add To Entry",bg="#9999FF",fg="#660099",relief="solid",command=add,font=11,pady=16,cursor="dot") + b1.place(relx=0.51,rely=0.6,anchor="n") + l1=tkinter.Label(frame,text="Press To Delete Existing Entry",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16) + l1.place(relx=0.7,rely=0.5,anchor="n") + b1=tkinter.Button(frame,text="Delete Entry",bg="#9999FF",fg="#660099",relief="solid",command=delete,font=11,pady=16,cursor="dot") + b1.place(relx=0.7,rely=0.6,anchor="n") + l1=tkinter.Label(frame,text="\u00a9"+" copyright 2016\t\t\t\t\t\t\t\t\t\t\t\t"+"Developed By: Akshit Grover",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="s") + root.mainloop() +start() From dc8f0599f08e3dc2fb1cfe431d82ab7425e641c1 Mon Sep 17 00:00:00 2001 From: Logan1x Date: Fri, 6 Oct 2017 21:34:09 +0530 Subject: [PATCH 2/6] added all scripts to bin folder --- README.md | 14 +++++++------- Blog_reader.py => bin/Blog_reader.py | 0 .../bulk_add_twitter_list.py | 0 expense_manager.py => bin/expense_manager.py | 0 facebook-auto-post.py => bin/facebook-auto-post.py | 0 .../facebook-auto-post.requirements.txt | 0 findlargefiles.py => bin/findlargefiles.py | 0 locate-me.py => bin/locate-me.py | 0 memedensity.py => bin/memedensity.py | 0 mi-community-bot.py => bin/mi-community-bot.py | 0 .../mi-community-bot.requirements.txt | 0 .../password-strength-checker.py | 0 pi.py => bin/pi.py | 0 plot_example.py => bin/plot_example.py | 0 youtube-bot-linux.py => bin/youtube-bot-linux.py | 0 .../youtube-bot-windows.py | 0 16 files changed, 7 insertions(+), 7 deletions(-) rename Blog_reader.py => bin/Blog_reader.py (100%) rename bulk_add_twitter_list.py => bin/bulk_add_twitter_list.py (100%) rename expense_manager.py => bin/expense_manager.py (100%) rename facebook-auto-post.py => bin/facebook-auto-post.py (100%) rename facebook-auto-post.requirements.txt => bin/facebook-auto-post.requirements.txt (100%) rename findlargefiles.py => bin/findlargefiles.py (100%) rename locate-me.py => bin/locate-me.py (100%) rename memedensity.py => bin/memedensity.py (100%) rename mi-community-bot.py => bin/mi-community-bot.py (100%) rename mi-community-bot.requirements.txt => bin/mi-community-bot.requirements.txt (100%) rename password-strength-checker.py => bin/password-strength-checker.py (100%) rename pi.py => bin/pi.py (100%) rename plot_example.py => bin/plot_example.py (100%) rename youtube-bot-linux.py => bin/youtube-bot-linux.py (100%) rename youtube-bot-windows.py => bin/youtube-bot-windows.py (100%) diff --git a/README.md b/README.md index c8adffa..6e96acf 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ OS X, Linux and Windows: ```bash git clone https://github.com/Logan1x/Python-Scripts.git -cd Python-Scripts +cd Python-Scripts/bin ``` ## Usage @@ -22,7 +22,7 @@ This script tells you the amount of memes in your facebook feed ```bash -pip install memedensity +pip install memedensity memedensity ``` @@ -39,16 +39,16 @@ python facebook-auto-post.py ``` ### Locate Me -Run this script and it will locate you. +Run this script and it will locate you. -This will tell you your +This will tell you your 1. City 2. Region 3. Country 4. Latitude & Longitude. 5. Your Internet Service Provider - + This uses [Checkip](http://checkip.dyndns.com/) and [ipinfo.io](http://ipinfo.io/developers). @@ -96,9 +96,9 @@ In case your browser stoped working delete/comment the following line in the scr `os.system("TASKKILL /F /IM " + brow + ".exe")` -### Blog Reader +### Blog Reader -Blog Reader is the terminal reader that scrapes the article from [planet dgplug](http://planet.dgplug.org/) and displays it on the terminal. +Blog Reader is the terminal reader that scrapes the article from [planet dgplug](http://planet.dgplug.org/) and displays it on the terminal. It seprates the content accrding to the screen size. diff --git a/Blog_reader.py b/bin/Blog_reader.py similarity index 100% rename from Blog_reader.py rename to bin/Blog_reader.py diff --git a/bulk_add_twitter_list.py b/bin/bulk_add_twitter_list.py similarity index 100% rename from bulk_add_twitter_list.py rename to bin/bulk_add_twitter_list.py diff --git a/expense_manager.py b/bin/expense_manager.py similarity index 100% rename from expense_manager.py rename to bin/expense_manager.py diff --git a/facebook-auto-post.py b/bin/facebook-auto-post.py similarity index 100% rename from facebook-auto-post.py rename to bin/facebook-auto-post.py diff --git a/facebook-auto-post.requirements.txt b/bin/facebook-auto-post.requirements.txt similarity index 100% rename from facebook-auto-post.requirements.txt rename to bin/facebook-auto-post.requirements.txt diff --git a/findlargefiles.py b/bin/findlargefiles.py similarity index 100% rename from findlargefiles.py rename to bin/findlargefiles.py diff --git a/locate-me.py b/bin/locate-me.py similarity index 100% rename from locate-me.py rename to bin/locate-me.py diff --git a/memedensity.py b/bin/memedensity.py similarity index 100% rename from memedensity.py rename to bin/memedensity.py diff --git a/mi-community-bot.py b/bin/mi-community-bot.py similarity index 100% rename from mi-community-bot.py rename to bin/mi-community-bot.py diff --git a/mi-community-bot.requirements.txt b/bin/mi-community-bot.requirements.txt similarity index 100% rename from mi-community-bot.requirements.txt rename to bin/mi-community-bot.requirements.txt diff --git a/password-strength-checker.py b/bin/password-strength-checker.py similarity index 100% rename from password-strength-checker.py rename to bin/password-strength-checker.py diff --git a/pi.py b/bin/pi.py similarity index 100% rename from pi.py rename to bin/pi.py diff --git a/plot_example.py b/bin/plot_example.py similarity index 100% rename from plot_example.py rename to bin/plot_example.py diff --git a/youtube-bot-linux.py b/bin/youtube-bot-linux.py similarity index 100% rename from youtube-bot-linux.py rename to bin/youtube-bot-linux.py diff --git a/youtube-bot-windows.py b/bin/youtube-bot-windows.py similarity index 100% rename from youtube-bot-windows.py rename to bin/youtube-bot-windows.py From 7dad6283a9e3a78eebbf46af03b86f3b1be8e744 Mon Sep 17 00:00:00 2001 From: Sharan Pai Date: Sat, 7 Oct 2017 11:15:40 +0530 Subject: [PATCH 3/6] Update README.md (#15) --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6e96acf..eed9cad 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,11 @@ Simple GUI program which helps you calculate your expenses, monitor them just th ```bash python expense_manger.py ``` +### Caesar Cipher +Encrypts or Decrypts any message you want, simply enter the message and the rotation number +```bash +python caesar_cipher.py +``` ## Release History @@ -180,4 +185,5 @@ The following people helped in creating the above content. * Pradhvan Bisht * David Antonini * Nguyen Anh Tien -*Akshit Grover +* Akshit Grover +* Sharan Pai From 617d2b272f1170ca043d074f329fb4ba06390249 Mon Sep 17 00:00:00 2001 From: Sharan Pai Date: Sat, 7 Oct 2017 11:16:02 +0530 Subject: [PATCH 4/6] Caesar Cipher (#16) * Added a script that encryts or derypts a message, using the caesar cipher * Update caesar_cipher.py --- bin/caesar_cipher.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 bin/caesar_cipher.py diff --git a/bin/caesar_cipher.py b/bin/caesar_cipher.py new file mode 100644 index 0000000..df9fc40 --- /dev/null +++ b/bin/caesar_cipher.py @@ -0,0 +1,42 @@ +key = 'abcdefghijklmnopqrstuvwxyz' + +def encrypt(n, plaintext): + """Encrypt the string and return the ciphertext""" + result = '' + + for l in plaintext.lower(): + try: + i = (key.index(l) + n) % 26 + result += key[i] + except ValueError: + result += l + + return result.lower() + + +def decrypt(n, ciphertext): + """Decrypt the string and return the plaintext""" + result = '' + + for l in ciphertext: + try: + i = (key.index(l) - n) % 26 + result += key[i] + except ValueError: + result += l + + return result + +print("Encrypt or decrypt?") +ans = input() +ans = ans.lower() +print("Enter message") +k = input() +print("Enter rotation number") +nn = int(input()) +if ans == 'encrypt': + ret = encrypt(nn,k) + print ('Encrytped: %s' % ret) +else: + ret = decrypt(nn,k) + print ('Decrytped: %s' % ret) From 0b5a17f216107e9cf9c959d6e257870e09831bef Mon Sep 17 00:00:00 2001 From: Iyanu Ajao Date: Mon, 9 Oct 2017 08:03:24 +0100 Subject: [PATCH 5/6] Guess-the-number (#18) * created a dice_simulator.py program * added a guess-the-number.py script * Delete Python-Scripts.iml * Delete misc.xml * Delete modules.xml * Delete workspace.xml * Delete vcs.xml --- dice-simulator.py | 10 ++++++++++ guess-the-number.py | 47 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 dice-simulator.py create mode 100644 guess-the-number.py diff --git a/dice-simulator.py b/dice-simulator.py new file mode 100644 index 0000000..779c6b0 --- /dev/null +++ b/dice-simulator.py @@ -0,0 +1,10 @@ +import random #import the random module. + +def roll_dice(): + #randrange is a function of the random module + #it accepts two postional arguments; start and stop + print(random.randrange(1,7)) + + + + diff --git a/guess-the-number.py b/guess-the-number.py new file mode 100644 index 0000000..6ce378d --- /dev/null +++ b/guess-the-number.py @@ -0,0 +1,47 @@ +import random + +def guess(): + """This is the function that runs the guess-the-number.py script + + :return: It has no return value + """ + unknown = random.randrange(1, 101) + for i in range(1,11): + usernumber = inputnumber('Enter a number: ') + comparenumber(unknown, usernumber) + +def inputnumber(message): + """This function verifies whether the user typed an integer as input. + + :param message: This argument is usually a prompt message + :return: It returns an integer type. + """ + while True: + try: + userNumber = int(input('Enter a number:')) + except ValueError: + print('This is not a whole number') + else: + return userNumber + break + +def comparenumber(unknownnumber, usernumber): + """This function compares the unknown number with the userinput number. + + :param unknownnumber: This parameter is for the unknown number. It is randomly + generated by the computer + :param usernumber: This parameter is for the userinput. It must be an integer + :return: It has no return value. + """ + comparednumber = unknownnumber - usernumber + if usernumber == unknownnumber: + print('You are correct!') + elif usernumber < unknownnumber: + print('Your choice is less than the answer') + print('Your choice is about {0} below the answer'.format(comparednumber+5)) + else: + print('Your choice is greater than the answer') + print('Your choice is about {0} greater than the answer' .format(5-comparednumber)) + + +guess() From 43057cadaf72114e6cc881d5caafd79d5addef3b Mon Sep 17 00:00:00 2001 From: Khushal Sharma Date: Mon, 9 Oct 2017 07:04:36 +0000 Subject: [PATCH 6/6] Revert "Guess-the-number (#18)" (#20) This reverts commit 0b5a17f216107e9cf9c959d6e257870e09831bef. --- dice-simulator.py | 10 ---------- guess-the-number.py | 47 --------------------------------------------- 2 files changed, 57 deletions(-) delete mode 100644 dice-simulator.py delete mode 100644 guess-the-number.py diff --git a/dice-simulator.py b/dice-simulator.py deleted file mode 100644 index 779c6b0..0000000 --- a/dice-simulator.py +++ /dev/null @@ -1,10 +0,0 @@ -import random #import the random module. - -def roll_dice(): - #randrange is a function of the random module - #it accepts two postional arguments; start and stop - print(random.randrange(1,7)) - - - - diff --git a/guess-the-number.py b/guess-the-number.py deleted file mode 100644 index 6ce378d..0000000 --- a/guess-the-number.py +++ /dev/null @@ -1,47 +0,0 @@ -import random - -def guess(): - """This is the function that runs the guess-the-number.py script - - :return: It has no return value - """ - unknown = random.randrange(1, 101) - for i in range(1,11): - usernumber = inputnumber('Enter a number: ') - comparenumber(unknown, usernumber) - -def inputnumber(message): - """This function verifies whether the user typed an integer as input. - - :param message: This argument is usually a prompt message - :return: It returns an integer type. - """ - while True: - try: - userNumber = int(input('Enter a number:')) - except ValueError: - print('This is not a whole number') - else: - return userNumber - break - -def comparenumber(unknownnumber, usernumber): - """This function compares the unknown number with the userinput number. - - :param unknownnumber: This parameter is for the unknown number. It is randomly - generated by the computer - :param usernumber: This parameter is for the userinput. It must be an integer - :return: It has no return value. - """ - comparednumber = unknownnumber - usernumber - if usernumber == unknownnumber: - print('You are correct!') - elif usernumber < unknownnumber: - print('Your choice is less than the answer') - print('Your choice is about {0} below the answer'.format(comparednumber+5)) - else: - print('Your choice is greater than the answer') - print('Your choice is about {0} greater than the answer' .format(5-comparednumber)) - - -guess()