From 845d56d353ac9724ef92fc163e7766cd6248fed8 Mon Sep 17 00:00:00 2001 From: Hazel Sibhuku Date: Fri, 28 Nov 2025 15:48:32 +0200 Subject: [PATCH] system check assessment --- __pycache__/system_check.cpython-312.pyc | Bin 0 -> 4834 bytes system_check.py | 70 +++++++++++++++++++++-- test_reactor.py | 29 ++++++++++ 3 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 __pycache__/system_check.cpython-312.pyc create mode 100644 test_reactor.py diff --git a/__pycache__/system_check.cpython-312.pyc b/__pycache__/system_check.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7dc713ffa2e8e98dfdd110f009dc0e37851e99c6 GIT binary patch literal 4834 zcmb7I-%ne~6~5Ot81u^^fk2XFGl6YlOW*(@+Z1gh8DkPsFuUMvwP`DI@g3~D*!PmT z*ATmjO1G_)&Azzp!&-e>RjVpd{)qkoeOXdgORYXowGZXZEBX|vYQLGe2AhyoawX5b zGjqeMF$LD_R{|O(TE4o6J6_2j|+IL6QJ$F1F zg{su^OqEn>ZQhG{uRHHOX5NQ+pWY<+eGT)?vy5|hW7nQJA`!9%F37!vb#}|_`^9eF4y2G#e2;%sChiNH?I2lT&=$giyJfkFP zur-T0BxdQ9tS~Dl=H*6++(<;Qi)PwlIn5!~3TfEt1R0o~9lkX`c4d6{R$_8E_I`4B zY-H@pz#-?Xl{QinqCZTMP$9(^G;CrUPF{1UPL`>&L8&R$w`s~Ub)wrM9I}_w1D^F6IX<81+ z+pvgnAF3IqZltJ9LNt<&43VFVj!cYR`B@k$r!-E*O)Bk^HPRV}B=WgshztpfgtnVaD`1m`Lm16!j^hZBsi(P3N**upOFPN@ZwjHL_Ny z^rYdh2j*GQq&F~*%qA}XJep0VN|c^~Z@MpSbzgeo{cHEo=G;zOU%6|m?c7(sbNe7s ziap0V!0{OPDHz@a1G;xLq$o@+_-d%oo7|D+gAuv z!~%Yp2ndJDEjj={kO`Ip4#v~M9(T8jCmt(yHg2HenOrOek7!u&OwSfizN|vAvvC2| z45_RIjf4~n@Kt&RPL|x0UphE>)`i(~ocIQs}+0=Yi*Ao_LNt&)mKZP&pjw z;(2h8Q}w1IETT8Npz?nw&G!X3CGdXp67a6PIq>RJm5ZxdNadlH=dOcvF$zfWJTZo! zjG043hUozjeh1u)A+$IO4ld1FQjHHQu$^P!eCxJxELoLRQ= zrd|h|V}wD#ysp2@zi8!O$xoS)l3R51&@xY!<~n6OOCmdHuF8jEXUuh>n6#BtNrHvv zhrR#dDRwpzF@ET*15NSd%ey)pJJd80_A)={D}KY)jkMuZyoTvukSC%_vn&WIt!`le ztJ>V}P_#%aofax0x-G4UNVz2K&bXIO;Af}M07`vFQ_XJ2+4AUCNB`#ZZdY&F^V_qV zw|3ilzG>^O~bLU{*XK(p7XaR;yPkz5>-)1N`{D_!joLdK`YbDnQ{8pg4uTx31rczOSyY7Mcpp z{1^6Xe|`xR<8Ka%!)#=%zz5Pu>?Yw#b2rt7cSFAu{fD8 z7G=iB$cksq((_s5B3_x*)k6#UEVX5&HX7mSfctfA9g0P>1)>}4hHWgP?piL8@gb5% z&0-Rh?y~xPR6j?x(_6xpLB1S21rlArYwj3)Pc{d+h3z zJL=G4V5nG*tbmAB^L4kIclP|eip^m;QfhB4-ayN;|1*!4fI$(+918=1C09}drjc9V_ z!#IiEjK_YoNJ6zBy+}>lVs=O=9Cx!03;o z3yGP;4HCL-;^Yu8j#~hms9pX5{}Gwa`A5hwQ(2Up>oiQFiK)7MUnihE+^)M!05QVfT0oZ8}h+rw=sZd93K+53d_=}eJay(_x>nw~eOr+Sq zM^p8xs#HCM${wTSvoUC>ZssrUy ZRRu4;C|=*rs)`zX#7bjdE2o9h{|7+#?!f>6 literal 0 HcmV?d00001 diff --git a/system_check.py b/system_check.py index 6c19688..8840c73 100644 --- a/system_check.py +++ b/system_check.py @@ -18,7 +18,11 @@ def get_departure_airport(ticket_string: str): Flight Number (JO234) can vary in length. You must find it relative to the hyphens. """ # TODO: Write your code here - pass + ticket_string = ticket_string.split("-") + return ticket_string[2] + +ticket_string = "FL-JO234-JNB-CPT-2023" +get_departure_airport(ticket_string) def check_baggage_allowance(ticket_string: str): """ @@ -36,7 +40,20 @@ def check_baggage_allowance(ticket_string: str): - For any other code: return "Standard - 0kg" """ # TODO: Write your code here - pass + ticket_string = ticket_string.split("-") + + if ticket_string[0] == "EC": + return "Economy - 20kg" + elif ticket_string[0] == "BS": + return "Business - 40kg" + elif ticket_string[0] == "FL": + return "First Class - 60kg" + else: + return "Standard - 0kg" + + +ticket_string = "FL-JO234-JNB-CPT-2023" +check_baggage_allowance(ticket_string) def validate_flight_number(ticket_string: str): """ @@ -50,7 +67,25 @@ def validate_flight_number(ticket_string: str): - If the numeric part cannot be converted to a number, return "Invalid Flight" """ # TODO: Write your code here - pass + ticket_string = ticket_string.split("-") + + ticket = ticket_string[1] + + ticket_num = ticket[-1] + + if not ticket_num.isdigit(): + return "Invalid Flight" + + if int(ticket_num)%2 == 0: + return "Valid - Northbound" + elif int(ticket_num)%2 != 0: + return "Valid - Southbound" + + +ticket_string = "FL-JOABC-JNB-CPT" + + +validate_flight_number(ticket_string) # ========================================== @@ -72,7 +107,20 @@ def is_leap_year(year: int): Return True or False (Boolean). """ # TODO: Write your code here - pass + if year%4 == 0: + if year%100 == 0: + if year%400 == 0: + return True + else: + return False + else: + return True + else: + return False + +year = 2000 + +is_leap_year(year) # ========================================== @@ -105,4 +153,16 @@ def reactor_status(temp: int, radiation: int): - For all other cases: return "Normal Operation" """ # TODO: Write your code here - pass + if temp < 0 or radiation < 0: + return "Sensor Error" + elif temp > 2000 or radiation > 500: + return "CRITICAL" + elif 1000 <= temp <= 2000 and radiation > 100: + return "WARNING" + elif temp < 500: + return "Maintenance Mode" + else: + return "Normal Operation" + + +reactor_status(-1, 50) diff --git a/test_reactor.py b/test_reactor.py new file mode 100644 index 0000000..c304099 --- /dev/null +++ b/test_reactor.py @@ -0,0 +1,29 @@ +import unittest +import os +from system_check import reactor_status + +class TestReactor(unittest.TestCase): + + def test_00_tdd_file_exists(self): + print("\nGrading Pre-Check: Looking for student test file...") + file_exists = os.path.exists("test_reactor.py") + + self.assertTrue( + file_exists, + msg="❌ FAILED: 'test_reactor.py' was not found. Did you create the file?" + ) + print("✅ FOUND: 'test_reactor.py' exists.") + + def test_q5_reactor_status(self): + print("Grading Q5: Reactor Logic...") + self.assertEqual(reactor_status(-1, 50), "Sensor Error") + self.assertEqual(reactor_status(500, -10), "Sensor Error") + self.assertEqual(reactor_status(2500, 10), "CRITICAL") + self.assertEqual(reactor_status(500, 600), "CRITICAL") + self.assertEqual(reactor_status(1500, 200), "WARNING") + self.assertEqual(reactor_status(1000, 200), "WARNING") + self.assertEqual(reactor_status(400, 50), "Maintenance Mode") + self.assertEqual(reactor_status(800, 50), "Normal Operation") + +if __name__ == '__main__': + unittest.main(failfast=True, verbosity=0) \ No newline at end of file