Advertisement
Guest User

eShrug

a guest
Oct 20th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.18 KB | None | 0 0
  1. def initialise_expenses(expenseList):
  2.     expenseList.append(createExpense(1,100,'clothing'))
  3.     expenseList.append(createExpense(1,10,'transport'))
  4.     expenseList.append(createExpense(1,25,'food'))
  5.     expenseList.append(createExpense(3,50,'others'))
  6.     expenseList.append(createExpense(5,25,'food'))
  7.     expenseList.append(createExpense(9,30,'food'))
  8.     expenseList.append(createExpense(15,22,'food'))
  9.     expenseList.append(createExpense(22,34,'food'))
  10.     expenseList.append(createExpense(23,66,'housekeeping'))
  11.     expenseList.append(createExpense(24,100,'internet'))
  12.  
  13. def getDay(x):
  14.     return x['day']
  15.  
  16. def getCategory(x):
  17.     return x['category']
  18.  
  19. def getAmmount(x):
  20.     return x['ammount']
  21.  
  22. def setDay(x,y):
  23.     x['day']=y
  24.  
  25. def setCategory(x,y):
  26.     x['category']=y
  27.  
  28. def setAmmount(x,y):
  29.     x['ammount']=y
  30.  
  31. def isCategory(x):
  32.     realCategories=['housekeeping','food','transport','clothing','internet','others']
  33.     if x in realCategories:
  34.         return True
  35.     return False
  36.  
  37. def nicePrint(expenseList):
  38.     for i in range(0,len(expenseList)):
  39.         print('day:',getDay(expenseList[i]),' category:',getCategory(expenseList[i]),'  ammount:',getAmmount(expenseList[i]))
  40.  
  41. def createExpense(day,ammount,category):
  42.     try:
  43.         return {'day':int(day),
  44.                 'ammount':int(ammount),
  45.                 'category':category}
  46.     except ValueError as ve:
  47.         raise ValueError
  48.  
  49. def insertIntoPlace(expenseList,expense):
  50.     i=0
  51.     x=getDay(expenseList[0])
  52.     j=len(expenseList)-1
  53.     while i<j and x<getDay(expense):
  54.         i+=1
  55.         x=getDay(expenseList[i])
  56.     if x<getDay(expense):
  57.         expenseList.append(expense)
  58.     else:
  59.         expenseList.insert(i,expense)
  60.  
  61.  
  62. def insertExpense(expenseList,category,ammount,day = False):
  63.     if day == False:
  64.         insertIntoPlace(expenseList,createExpense(getDay(expenseList[-1]),ammount,category))
  65.     else:
  66.         insertIntoPlace(expenseList,createExpense(day,ammount,category))
  67.  
  68. def ammountBigger(ammount1,ammount2):
  69.     if ammount1>ammount2:
  70.         return True
  71.     return False
  72. def ammountSmaller(ammount1,ammount2):
  73.     if ammount1<ammount2:
  74.         return True
  75.     return False
  76. def ammountEqual(ammount1,ammount2):
  77.     if ammount1==ammount2:
  78.         return True
  79.     return False
  80.  
  81. def categoryList(expenseList,category):
  82.     l=[]
  83.     for i in range(0,len(expenseList)):
  84.         if getCategory(expenseList[i])==category:
  85.             l.append(expenseList[i])
  86.     return l
  87. def removeBySomething(expenseList,value,getSomething):
  88.     i=0
  89.     x=len(expenseList)-1
  90.     while i<=x:
  91.         if getSomething(expenseList[i])==value:
  92.             del expenseList[i]
  93.             x-=1
  94.             i-=1
  95.         i+=1
  96.  
  97.  
  98. def removeFromList(expenseList,p1,p2=None):
  99.     try:
  100.         if p2==None:
  101.             if isCategory(p1)==True:
  102.                 removeBySomething(expenseList,p1,getCategory)
  103.             else:
  104.                 removeBySomething(expenseList,int(p1),getDay)
  105.         else:
  106.             i=int(p1)+1
  107.             j=int(p2)
  108.             while i<j :
  109.                 removeBySomething(expenseList,i,getDay)
  110.                 i+=1
  111.         nicePrint(expenseList)
  112.     except ValueError as ve:
  113.         raise ValueError
  114.                  
  115.  
  116. def showExpensesUI(expenseList,category=None,sign=None,value=0):
  117.     if category==None:
  118.         nicePrint(expenseList)
  119.         return
  120.     writeList=categoryList(expenseList,category)
  121.     if sign==None:
  122.         nicePrint(writeList)
  123.         return
  124.     i=0
  125.     x=len(writeList)-1
  126.     while i<=x:
  127.         if sign(getAmmount(writeList[i]),value)==False:
  128.             del writeList[i]
  129.             x-=1
  130.             i-=1
  131.         i+=1
  132.     if len(writeList)>0:
  133.         nicePrint(writeList)
  134.     else:
  135.         print('No such thing was found')
  136.     return
  137.  
  138. def addUI(expenseList,parameterList):
  139.     if len(parameterList)==2 and isCategory(parameterList[1])==True:
  140.         insertExpense(expenseList,parameterList[1],parameterList[0])
  141.         print('expense registered')
  142.     else:
  143.         print('Invalid input')
  144.    
  145.  
  146. def insertUI(expenseList,parameterList):
  147.     if len(parameterList)==3 and isCategory(parameterList[2])==True:
  148.         insertExpense(expenseList,parameterList[2],parameterList[1],parameterList[0])
  149.         print('expense registered')
  150.     else:
  151.         print('invalid input')
  152.  
  153. def writeUI(expenseList,parameterList):
  154.     realSigns={'>':ammountBigger,'=':ammountEqual,'<':ammountSmaller}
  155.     if len(parameterList)>3 or len(parameterList)==2 :
  156.         print('invalid input')
  157.         return
  158.     if len(parameterList)==0:
  159.         showExpensesUI(expenseList)
  160.     elif len(parameterList)==1 and isCategory(parameterList[0])==True:
  161.         showExpensesUI(expenseList,parameterList[0])
  162.     elif isCategory(parameterList[0])==True and parameterList[1] in realSigns.keys() :
  163.             showExpensesUI(expenseList,parameterList[0],realSigns[parameterList[1]],int(parameterList[2]))
  164.     else:
  165.             print('invalid input')
  166.  
  167. def removeUI(expenseList,parameterList):
  168.     if len(parameterList)>3 or len(parameterList)==2 or len(parameterList)==0:
  169.         print('invalid input')
  170.         return
  171.     if len(parameterList)==3:
  172.         if not parameterList[1] == 'to':
  173.             print('invalid input')
  174.             return
  175.         removeFromList(expenseList,parameterList[0],parameterList[2])
  176.     else:
  177.         removeFromList(expenseList,parameterList[0])                                    
  178.        
  179. def readCommand():
  180.     UInput=input()
  181.     command=UInput.split(' ')[0]
  182.     parameters=UInput.split(' ')[1:]
  183.     return {'command':command,'parameters':parameters}
  184.  
  185. def start():
  186.     expenseList=[]
  187.     initialise_expenses(expenseList)
  188.     print(expenseList)
  189.     while True:
  190.         realCommands={'add':addUI,'insert':insertUI,'list':writeUI,'remove':removeUI}
  191.         read=readCommand()
  192.         try:
  193.             if read['command'] in realCommands.keys():
  194.                 realCommands[read['command']](expenseList,read['parameters'])
  195.             elif read['command'] == 'exit':
  196.                 return
  197.             else:
  198.                 print('invalid input brother')
  199.         except ValueError as ve:
  200.             print("Value Error")
  201.  
  202. start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement