From d4bc958333f0c553fe08547d1c82b8705fcaaba5 Mon Sep 17 00:00:00 2001 From: BonBonsNCandies <119838896+PeanutButterNJellyCrush@users.noreply.github.com> Date: Tue, 4 Mar 2025 10:51:16 +1000 Subject: [PATCH 1/5] Adding feedback Feedback to user input and KeyboardInterrupt --- continue_app.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/continue_app.py b/continue_app.py index 6b2c61c..8e64b8d 100644 --- a/continue_app.py +++ b/continue_app.py @@ -17,19 +17,23 @@ def ask_to_continue(): answer = input('Do you wish to calculate another budget? (y/n): ') # If user enters 'y', return True to continue the process - if answer == 'y': + if answer.lower() == 'y': return True - + # If user enters 'n', print a message and return False to exit. - elif answer == 'n': + elif answer.lower() == 'n': print('Thank you for using the Budget App!') return False # If the input is not 'y' or 'n', show an error message and prompt again. else: print("Invalid input! Please enter 'y' for yes or 'n' for no.") + + # Handle key interruption by user by pressing ctrl + c + except KeyboardInterrupt: + print('\nApp terminated by user.') # Handle any unexpected errors except Exception as e : - print(f'Error: Unexpected error {e} occor') - \ No newline at end of file + print(f'Error: Unexpected error {e} occor') + From 357613830e397cdd2165e7ecb2641fdca80b79a7 Mon Sep 17 00:00:00 2001 From: BonBonsNCandies <119838896+PeanutButterNJellyCrush@users.noreply.github.com> Date: Tue, 4 Mar 2025 11:13:19 +1000 Subject: [PATCH 2/5] Update user_input.py Added input timeout for user. Added expenses cannot be greater than income if that is what you want. Added KeyboardInterrupt exception. --- user_input.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/user_input.py b/user_input.py index bd5cedd..0a3b3c8 100644 --- a/user_input.py +++ b/user_input.py @@ -41,9 +41,15 @@ def get_user_input(self): # Prompt again continue + + # Prompt user for fixed expenses and validate input self.fix_expenses = float(input('Please enter your monthly fixed expenses: ')) + # Input validation with timeout by restricting user input time to 30 seconds + with timeout(30): + self.fix_expenses = float(input('Please enter your monthnly fixed expenses: ')) + # If the user input is negative if self.fix_expenses < 0: @@ -53,6 +59,10 @@ def get_user_input(self): # Prompt again continue + # If the user expesnes > monthly income: + elif self.fix_expenses > self.income: + print(f"Error: Expenses cannot be greater than your monthly income. Please try again.") + # Return validated values for running the calculation return self.income, self.fix_expenses @@ -65,11 +75,18 @@ def get_user_input(self): # Prompt again continue + # Catches user pressing ctrl + c + except KeyboardInterrupt: + print(f"App exited by user.") + # Catches any other unexpected errors except Exception as e: # Print the error message print(f"Unexpected Error Occur {e}, Please double check your answer and try again :)") # Exits the function in case of an unexpected error + + + return From eb9ef5f24caa4c4a83bd6042219140b6cec10706 Mon Sep 17 00:00:00 2001 From: BonBonsNCandies <119838896+PeanutButterNJellyCrush@users.noreply.github.com> Date: Tue, 4 Mar 2025 16:14:16 +1000 Subject: [PATCH 3/5] Update README.md Added Virtual Enviro Installation instructions --- README.md | 98 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 83 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 4de0a28..f516df7 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,16 @@ # Budget_allocation_app ## Overview - ###The Budget Allocation App is a command-line interface (CLI) tool designed to help users optimize their monthly income through tailored budgeting and expense planning. The app calculates how users can best allocate their income across various expense categories. - + The Budget Allocation App is a command-line interface (CLI) tool designed to help users optimize their monthly income through tailored budgeting and expense planning. +The app calculates how users can best allocate their income across various expense categories by allocating remaining income after fixed expense have been deducted. It provides a visual breakdown of spending into categories displaying in table format and in a pie chart in .png format. ## Features - **User Input**: Collects monthly income and fixed expenses from the user. - **Budget Allocation**: Calculates the budget for various categories like Savings, Investments, Dining Out, and Guilt-Free Spending. - **Budget Visualization**: Displays a pie chart representing the budget breakdown. + User Input**: Collects monthly income and fixed expenses from the user. + Budget Allocation**: Calculates the budget and allocates for various categories such as Savings, Investments, Dining Out, and Guilt-Free Spending post expenses deductions. + Budget Visualization**: Displays formated budgeted in tables and a pie chart representing the budget breakdown. + + *Supports multiple calculations + *Includes error handling and input validation ## Requirement: Before running the app, ensure you have the following installed: @@ -23,26 +26,91 @@ pip install matplotlib tabulate colorama pyfiglet``` -## Installation - ###Step 1: Clone this repository to your local machine: +## Installation Steps +Inside the terminal: + +1. Create new folder for repository to be saved in and change your directory to be in the folder. ``` - git clone git@github.com:Angie-newbie/Budget_allocation_app.git + mkdir Budget_allocation_app cd Budget_allocation_app ``` - - ###Step 2: Install the required dependencies: +2. Clone this repository to your local machine via terminal. + ``` - pip install matplotlib tabulate colorama pyfiglet + git clone git@github.com:Angie-newbie/Budget_allocation_app.git ``` - - ###Step 3: Run the App + +3. ``` + code . + ``` + +4. Create virtual environment to install dependencies in your IDE: + + Create virtual environment in your chosen IDE + ``` + python -m venv .venv + ``` + Activate the environment + macOS/Unix + ``` + source .venv/bin/activate + ``` + Windows + ``` + .venv\Scripts\activate + ``` + Verify activation + ``` + python --version + ``` + Check installed packages & create output into requirements.txt file + ``` + pip freeze > requirements.txt + ``` +6. Install the required dependencies: ``` - python main.py + pip install matplotlib tabulate colorama pyfiglet ``` +## Usage of app +To run the Budget Allocation App +In termimal: +``` +python main.py +``` +## Prompts +- Enter monthly income when prompted +- Enter fixed expenses when prompted +- Review budget allocation breakdown +- Choose to calculate another budget or exit + +## Budget Allocations +Savings: 25% of remaining income +Investments: 20% of remaining income +Emergency Fund: 15% of remaining income +Grocery: 15% of remaining income +Dining Out: 10% of remaining income +Transport: 5% of remaining income +Guilt-Free Spending: 10% of remaining income + +## Output Format +- ASCII art header for visual engagement +- Formatted budget table using tabulate library +- Pie chart visualization saved as 'Budget_Allocation_Breakdown_PieChart.png' + +## Error Handling +- Validates negative numbers +- Checks for invalid inputs +- Handles file operation errors +- Provides clear error messages + +## Example of output +![output_example](https://github.com/user-attachments/assets/bdb3ea93-b49f-4fbf-ab08-c1f8a21c056c) + + ## Copyright and Licence This project uses the following Python libraries: `matplotlib` (version 3.6.0) - Licensed under the [Matplotlib License](https://matplotlib.org/stable/users/license.html) - `tabulate` (version 0.9.0) - Licensed under the [MIT License](https://opensource.org/licenses/MIT) - `colorama` (version 0.4.6) - Licensed under the [MIT License](https://opensource.org/licenses/MIT) - - `pyfiglet` (version 0.8) - Licensed under the [MIT License](https://opensource.org/licenses/MIT) \ No newline at end of file + - `pyfiglet` (version 0.8) - Licensed under the [MIT License](https://opensource.org/licenses/MIT) From 4488129ea040f920b484f110927b84f9be32fe3b Mon Sep 17 00:00:00 2001 From: BonBonsNCandies <119838896+PeanutButterNJellyCrush@users.noreply.github.com> Date: Tue, 4 Mar 2025 16:40:50 +1000 Subject: [PATCH 4/5] Update README.md --- README.md | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index f516df7..d268e68 100644 --- a/README.md +++ b/README.md @@ -5,27 +5,32 @@ The app calculates how users can best allocate their income across various expense categories by allocating remaining income after fixed expense have been deducted. It provides a visual breakdown of spending into categories displaying in table format and in a pie chart in .png format. ## Features - User Input**: Collects monthly income and fixed expenses from the user. - Budget Allocation**: Calculates the budget and allocates for various categories such as Savings, Investments, Dining Out, and Guilt-Free Spending post expenses deductions. - Budget Visualization**: Displays formated budgeted in tables and a pie chart representing the budget breakdown. + #### User Input: Collects monthly income and fixed expenses from the user. + #### Budget Allocation: Calculates the budget and allocates for various categories such as Savings, Investments, Dining Out, and Guilt-Free Spending post expenses deductions. + #### Budget Visualization: Displays formated budgeted in tables and a pie chart representing the budget breakdown. - *Supports multiple calculations - *Includes error handling and input validation + #### Supports multiple calculations + #### Includes error handling and input validation -## Requirement: - Before running the app, ensure you have the following installed: - - **Python 3.x** (Recommended: Python 3.8+) - The following Python libraries (can be installed using 'pip'): - - 'matplotlib': For visualizing the budget allocation in a pie chart. - - 'tabulate': For formatting the budget data into a table. - - 'colorama': For terminal text formatting (used to display colorful output). - - 'pyfiglet': For printing the app header in an ASCII art style. +## System Requirements: + #### Before running the app, ensure you have the following installed: + #### Python 3.x (Recommended: Python 3.8+) + The following Python libraries (can be installed using 'pip') + - 'matplotlib': For visualizing the budget allocation in a pie chart. + - 'tabulate': For formatting the budget data into a table. + - 'colorama': For terminal text formatting (used to display colorful output). + - 'pyfiglet': For printing the app header in an ASCII art style. - You can install these dependencies by running: + You can install these dependencies by running: ```bash - pip install matplotlib tabulate colorama pyfiglet``` - + pip install matplotlib tabulate colorama pyfiglet + ``` + Recommended operating systems, with memory of minimum 2GB RAM (for smooth execution of the script) : + - Windows + - MacOS + - Linux + ## Installation Steps Inside the terminal: @@ -40,11 +45,12 @@ Inside the terminal: git clone git@github.com:Angie-newbie/Budget_allocation_app.git ``` -3. ``` +3. To start open and code in your chosen IDE: + ``` code . ``` -4. Create virtual environment to install dependencies in your IDE: +5. Create virtual environment to install dependencies in your IDE: Create virtual environment in your chosen IDE ``` From c7540342e79311fff2be0627407a3a37209f6355 Mon Sep 17 00:00:00 2001 From: Angie Date: Wed, 5 Mar 2025 10:26:54 +1100 Subject: [PATCH 5/5] Fix the long comment to docstring --- Budget_Allocation_Breakdown_PieChart.png | Bin 40945 -> 40562 bytes Budget_Percentage_Calculation.py | 31 ++++++++++-------- ...get_Percentage_Calculation.cpython-312.pyc | Bin 7132 -> 7531 bytes __pycache__/continue_app.cpython-312.pyc | Bin 776 -> 1189 bytes __pycache__/user_input.cpython-312.pyc | Bin 1629 -> 2319 bytes user_input.py | 14 +++----- 6 files changed, 23 insertions(+), 22 deletions(-) diff --git a/Budget_Allocation_Breakdown_PieChart.png b/Budget_Allocation_Breakdown_PieChart.png index a7c91ebaee95774d64baeb7c04355871735947a3..4edb20a4fd80755c720cecfb9acb381459fdd2c1 100644 GIT binary patch literal 40562 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
h-QAz(N>PSs9^c4g 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 diff --git a/Budget_Percentage_Calculation.py b/Budget_Percentage_Calculation.py index 002b008..b310434 100644 --- a/Budget_Percentage_Calculation.py +++ b/Budget_Percentage_Calculation.py @@ -6,10 +6,13 @@ # Import tabulate to display budget breakdown in a table format from tabulate import tabulate - # To add coloured text in console output - # Fore: For changing the text colour (e.g., Fore.RED for red text) - # Style: For additional text formatting like BRIGHT, DIM, and NORMAL - # init: To ensure compatibility with Windows terminals by enabling ANSI color codes + """ + To add coloured text in console output + Fore: For changing the text colour (e.g., Fore.RED for red text) + Style: For additional text formatting like BRIGHT, DIM, and NORMAL + init: To ensure compatibility with Windows terminals by enabling ANSI color codes + """ + from colorama import Fore, Style, init # Import pyfiglet for ASCII art title formatting @@ -24,13 +27,15 @@ # A class to represents a monthly budget allocation system class Budget: - # Initializes the budget with income and expenses, ensuring values are valid. - # Parameters: - # income (float): The user's total monthly income. - # fixed_expenses (float): The total fixed expenses deducted from the income. + """ + Initializes the budget with income and expenses, ensuring values are valid. + Parameters: + income (float): The user's total monthly income. + fixed_expenses (float): The total fixed expenses deducted from the income. + """ def __init__(self, income, fixed_expenses): - # Attributes: - # income (float): Stores the provided income value. + + # Attributes: income (float): Stores the provided income value. self.income = income # fixed_expenses (float): Stores the provided fixed expenses value. @@ -82,9 +87,9 @@ def display_budget(self): # Print the text in red text print(f"{Fore.RED}Your Monthly Budget Allocation:") - # Define a list of tuples containing budget categories and their calculated values - # Each tuple consists of two elements: the category name (as a string) and the corresponding value -# that was calculated earlier in the budget_calculation() method. + """Define a list of tuples containing budget categories and their calculated values. + Each tuple consists of two elements: the category name (as a string) and the corresponding value + that was calculated earlier in the budget_calculation() method.""" catergories = [ ("Saving" , savings), ("Investment" , investments), diff --git a/__pycache__/Budget_Percentage_Calculation.cpython-312.pyc b/__pycache__/Budget_Percentage_Calculation.cpython-312.pyc index 5b80541a2a71e8760c527fd650b57a8d84a3563e..2c0414db96d56c505421a6955643b80c39d32a5b 100644 GIT binary patch delta 1525 zcmah}UrbY17(b`C_qMk^t>v}?(iSgLgaX4DaY$Emr3ebf>0}dekyY;n8%t~2qUcPj zi^+;{QF1kQZ|rGgb4gA2z>A4fld&vYZfB9q>_HQJ+RL@N=_HH$PK(>#b|1d~-|zd* zcg}Zz?fA`S{lQ`}A^2<;z8ibBdD>cy=cgOjV*bYVAWr$gaSh367)xkaC*fg6(w#@c zdWiwbN_wCik0f4V&*NbONE}#;4j=Buf)VlCmU@#$)596P1gXF>~|yCO+hWAtr`^oJAUks@!S) zMKcI%-$?5VMkh#h4PTf)H_t}%qMw@FU?M_#Yvz#Z-t>?NRJARd#k^UZ3H)qsSgLTU zt`qkvPO9dU8k_rt*^6}5qew^l?aLDdb{9G3cIJPR~47UNh zlC~#5!J3&?wYpZN`*0ZZ3ms^Hsnde%-HNlbN%xMb+4q3Ce;(E zX9!sWx)S=O-BY_W9Ww*jnz{XI?*a8-SUr|pAQLa3mTiraGIy>v1Wo9UiSIEpckFFF z9CMdrd(62X%|)g+MY~5U-PiIlyyUE3bZ*Q$H)dOJ4HlgJ>0RZXJ=eU`-b^GfG%t{r z5_Vk?5x%wLRbH*~_@Em{ZMp{xF3{hYs&PO~YqdDfSmRGZ(P_ZNhr1#+N#^de#)xYVEO*meug zB~&4}NP6<5XIV2a%0qhx{!*!S)SF=8U@b2I&jlQ3bS;l*#kNvKNUwHh_RX|^Hhi6# z?fZ)4-R;@Xy{awg9neN)m9kWM75|YtUG+Uq-KS}k{CO4?!I{Eo69n07GH=bAvVCgT z9`)T1)x*csib$H%IF=_x!tv`hp^gt?O~+Ym&#cH|yVN(;ce!`QSLhg2L(&3~=@D#~ zc1-QKyuU!)Wo_rwPPKAVfwY&^fvEvCRZZU#)df{JSRfz#6Zz@D>kHHIz9mwjI@+^) zvq4qZvPe4fq;nY}ZENW4gSh1GnhVYCQ-#1H>CThxWsRktmkGLwR|EcT0o@k(pupUA zTD#kr+iir(K8H1EVeVL1PJ<+kO zu}JLfBrdkDV#B!TX=Gu4-p2;k_|#U%#<13ltq@bYnuTj`vw+#vsobo&G7tjSn2XseLXUPO9K9x2n# ob>2sMW4hv#zH@!c8V|;o2?yYQ>}*1_Y@m+$x;fxtzI9RYZ>^on;s5{u delta 1113 zcmaizO>7%Q6vt=w!}fZ|U+WK?Y@E8yN3m;y+5|aC>oopIoevbgQktfvu8XZuHKY=5 zX}Qo8MZ!i!jWwy_V=AO32M%t1AP0~_f*^`-5gH+wNh@(=5C47h z_RV|0H#_gQ?uy^|oxz|76vPLKTI(u;6{r(W_Jwn`bAPL4`0*o;UI1R?w z1VfZdutfQUF2PO1F-?LeD{VqURQI0NBW!9yR})6&ELq?qk&9QbkL;CwES9wW~-{MN?UH7e)7c@CUJ_Vv&`GcYm~8 zQ^adk7NFK`k`cTKanNpiz_&wa#~qr#Z8lmgMr3CSJhTm@g$+r@gW3SAnjH9+_IX&3 zKi6gpFX`G?o14Z4AO)*3l5i5LZ%yDkqPs;!<}z{>kt;V|Lah~KnH`xM&5q6tDvbd} z>M5b)Tdo%Ti`WAt+=2q^7Bb^;a$PQ~QJ z3#iMk2@7CV5F&bZRcedy>{mP=(HH(eHMZAJd8$MR4<`zjVMT5#%ZH2d;k<8oq$Cff zU!*L}bDpdxH&K+l>*x^4>#hM#@R2Y0IZN{q)#^$|{%_+?=n&zl0Z5DBWs65&G420v z>19}0_}vm?Y*C7|_5_JRLLc0+)Z@7AW~T%U((JRj7Z$to*A;K?+Od)}x{glMHff$d zNO%<6@nyJ_QlxMhMT#i0TV)|`wEN*b{JOnKM{m+cdI8|7p|S9Z{VZdAgI4qIRjWMH zfK5&ZtJ)pd>%0Rm6qcRe!W*MB;xi(DO@U4O`)R!@)#Z*Z>hn=0@UrsidF8?-#WIoB z)HICHTGi==Faa^$j%K1WC+53L{t+dfSVu|f>(BJhoGKv~wFfc-ile=RI_P33Go(1_ zPo^zMXG-Yo(~yscZag_|D0J_&*O7lEA6BH!GU_U#uHC1-(~_k3z*2naHAM=RQK*PQ zw08pYIMqzxXM;yWX0T!w!e(}*&KUBsD?UW+PGeYPS4E!K!yfof6Nx3$q>IHS<8LQp zu}yqWuET4x-$y4l)kE8rXa7R0W{3)&K+126np+cs4j) j+VWxaW^}j86X)X;owg6^4}t|g=w?6l24(h3nVSCsJ+)U+ diff --git a/__pycache__/continue_app.cpython-312.pyc b/__pycache__/continue_app.cpython-312.pyc index d4d25cb10cd66c3fb3ca4ec4cf94d1ce57201d23..daefd26f28b7980124bb55655985739240bc73f7 100644 GIT binary patch delta 805 zcmaJ=-%Hz26h7COtgW$4J8hK~xx=!}QQd#j%tOy zI93qX2N`1^gMq`p!o7?!7@hl}6#s~#!iIaM88#wyI$nXJt)QFeR30=oZ1M z#qtHBW{KjfyF4JaLv?GcUJT;7htwf+V|Zo}+e-vH7NK}y$uKNpl>;a?G1Sye%bN8M zp*sp$R_(fjNsSbhGmXA7LN6k|Ns~=WXhzj#n<#ibU;j*b3-w=14)9f8)lJ8)@|uw& zw91=Q)$MBVHp$N$GF4`D)=C|-`~exoPPV0O?6ICRSc6&!Is!GJ$2)o|KsZ{7-u=>@ zT%WE9AcZ#yPYcghw=eDo;)jtaqe4AfvCUYyZ+mz@c=<@`u7q!XmBtSvu~QEO!6(_jhjXWGkT?2ja+QapYHx zV@qciJAm+{Z_*F1UD!h%F8aHscy2H5aWN5?0`48~EKd#~>i*DMIAI7>WN_vg&lrlM akqIiX(mj=ydl8sDLMPt#I2xq^R{sX0Si+tF delta 415 zcmZ3=*}=wlnwOW00SMN0#i##coXBU#w2on-pF({KbG8NpLlI*oV+}(J3z*GQ!VFRg z0x7Jk86hl2hDtUhadw0_Cqs{cGD8UqL>&Wz3PX`(EhCazjvB_<3@My*nGt#-8B!Q( z8S5B(MC2fha>jCo3g$?Laz;%qzsW{SGbcY~QsCEQzQvlES5R7Vi?yIAGjFm!bACNH z&>oPRiqnBa1H%n2z7I@XoR)V)r7lSOUKaK1aJ#`TIzzat_J+9h4MFi4#*<|42#8(~ zv%Vr=b37%g5PolWy>T47vFr6;Ql~FsliHyK1kE8y6$EV#6(vN1AT=sAYwvTi)ZR6_ zYf)2>E0IGaA~n%geAgaOK#=dLP_Y5k<3DMYEiWXL*%dK(j(8QhE6M zYC_hx9hkAGnbY)2)mBbogaQQ41zoc>rKG)2En?48auh?1{5!N@llL@xo@jc(C{v>7 zDk*B$s7mOy3e_!Y4KtNGnO01tOl@jfW1cLNex}XJ6ibF;XUE7Jke~`hoU%yS(CztB z?Jz{8MWtG@iDr?CVp))(Xc}cwRy3VdOk)n@vtBNy4AM|Vu3ZCp^S?6uyIzv{|Cv@6 zz8`0ewqgJ`P*X&S^rEoT1x7l%DE#P8?STUopqGb71dE4nPvo2h{4@4DZ*wu{K8}i4 z&m&|8ozJ;Aw{+9_7RQ}IF77OH{q>H!2MQQnLQCJ+!M2)=%p^v3NBge&k0R~v_UqjP zgRynl4!7Tdo%#^}gWdT7{uHT!&-f#iOGrh|Z(Lkl#!EQc<#7C?Q?E{%reThe$%7G- zf}-n&P4bk?nN)!x!=@;@6XB)f!(_Td6^jzvtPy1nrsX{12c_ssl?tqgX2TrwHE-s_ zjwnpwPG?3qos7IfYk5O4)eAbPnbnHDEwE_khH$Z-g!-)@bj0g;ceE*vh7$WCIw^lK z=?+b8%CBwqO)m?#*chbb>iEj|TK`7$DTs*mxF_-rNd-qNy&pgWLthTK&t2XedTUd@ zvMe;h{T^j2Dz8W7wRbn7nFG@0hIGXv0o3C?Td~3Q*x+sHtKK`k8?iGxQp!D{HKeOv z$WMvh)$1$Q*UoRrBkS^rn;3D!BY%RB)Yn2{CTm`DRYO#2xQbe|jLACCIKp2~{OJ)d0P?#Sg-qmav) zouFj0oxX!iw%?|o0oz&+I54a@zyjJ8d_I3GDEhL^Fj#xR7k!B*6c#;|#ZOp0jC!c_ j*nhTcsMQjkFnhtlcH4>|7;BTq82=&6V4P?nh92i{DT7N% delta 551 zcmeAdy350NnwOW00SLZz#HRVsYUUbc?G2`3wFKGE)R`I_q7chZk z3il0R@#)qRtrsX>5>~z=B6&e3>553o4H20;Dw=ClFBrsJ){4EX5;uY6ihv?e>2+b1 zi^3`k3NHz3fECAF5s3pTp1hD;y#D0HZ15~4Sur1ymc)8;DhQMWEOQ#Y-_i YkodsN$jJDeO@dMU69bSa;sTig00keCYXATM diff --git a/user_input.py b/user_input.py index 0a3b3c8..f0c1366 100644 --- a/user_input.py +++ b/user_input.py @@ -46,10 +46,6 @@ def get_user_input(self): # Prompt user for fixed expenses and validate input self.fix_expenses = float(input('Please enter your monthly fixed expenses: ')) - # Input validation with timeout by restricting user input time to 30 seconds - with timeout(30): - self.fix_expenses = float(input('Please enter your monthnly fixed expenses: ')) - # If the user input is negative if self.fix_expenses < 0: @@ -64,8 +60,9 @@ def get_user_input(self): print(f"Error: Expenses cannot be greater than your monthly income. Please try again.") # Return validated values for running the calculation + continue return self.income, self.fix_expenses - + # Handles cases where the user enters a non-numeric value except ValueError: @@ -77,7 +74,9 @@ def get_user_input(self): # Catches user pressing ctrl + c except KeyboardInterrupt: - print(f"App exited by user.") + print(f"App exited by user.") + exit() + # Catches any other unexpected errors except Exception as e: @@ -85,8 +84,5 @@ def get_user_input(self): print(f"Unexpected Error Occur {e}, Please double check your answer and try again :)") # Exits the function in case of an unexpected error - - - return