From 2a8afa88da5610fb3df9ed776cd8f3e96ae221ec Mon Sep 17 00:00:00 2001 From: Keamogetswe Date: Fri, 28 Nov 2025 15:43:29 +0200 Subject: [PATCH 1/2] Submission --- .vscode/settings.json | 11 ++++ __pycache__/system_check.cpython-313.pyc | Bin 0 -> 4824 bytes __pycache__/test_reactor.cpython-313.pyc | Bin 0 -> 1431 bytes __pycache__/test_system_check.cpython-313.pyc | Bin 0 -> 4807 bytes system_check.py | 54 ++++++++++++++++-- test_reactor.py | 19 ++++++ 6 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 __pycache__/system_check.cpython-313.pyc create mode 100644 __pycache__/test_reactor.cpython-313.pyc create mode 100644 __pycache__/test_system_check.cpython-313.pyc create mode 100644 test_reactor.py diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..184c4eb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "python.testing.unittestArgs": [ + "-v", + "-s", + ".", + "-p", + "test_*.py" + ], + "python.testing.pytestEnabled": false, + "python.testing.unittestEnabled": true +} \ No newline at end of file diff --git a/__pycache__/system_check.cpython-313.pyc b/__pycache__/system_check.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0149355408d9303c37ffa23bcd58736a6ef867a4 GIT binary patch literal 4824 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 literal 0 HcmV?d00001 diff --git a/__pycache__/test_reactor.cpython-313.pyc b/__pycache__/test_reactor.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e964f6dc253b8e402353a3a4cb3908deb70a63ed GIT binary patch literal 1431 zcmc&!%}*0S6rb7MmX$7`Cd9T9(~v0X0Ynlmm0$>hsYo$hh$J?dtm{%Hba!!fs)3U+ z@#7!h=FLmF@ke;@sHsFU>dA|}A=P;G&2F0%Xky~UN%l8y=6&pYzj-swzP?@rX1HH}Pd61?SLYDqI=xmAR$^9Yqt zF^nJS+Bl3RTVe*4aT#ah4Y@94vFK-xWpkgAfLpv8*lia%Vq&J6 zN*XauX2N2o1{gPEtfw5$_K3u?6YydbwINHg+i_&LID9I6O%AYwR#3513wv_hmlokL zv8l8xHPyD1`MV!*(zfpOE2C_@K;NE0s3Cb0`fM@3oS&V!Lw`aZbQMV5RYbxH0*CRr zM^&rBWG=f{Xn|8%3uLkxk+XB96|e|OuD{_srMp{v-Sk(J z*dQ&E$2PY_U$|j2%BgKtM5=?Wv12O9R4@+k6dmZsCq4N=PrklX(`pauscU<=kNR}y zwpug8?R|Z^2|oXe^sa{mq{j;MOAJVV2dRmkdo#sCzHp0v2X2`>2W9|7B!l5$F*sOw1_0!358xF-FVK;u#BLn*0{qf(Y#vAE(nu!eTGS&X8y9-jqg>W5 zj9@F^j!W!y$KD7pT@-gnx@gkj#BYT@6;(COE`yD{nZZ?nLltBE84Y|zBfm8R&*L9R d;^7d|j91%rHFcmFFBhLJK3_Uik(Le<`vXeAEFS;> literal 0 HcmV?d00001 diff --git a/__pycache__/test_system_check.cpython-313.pyc b/__pycache__/test_system_check.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d94238222510eba1de7383cbcbf0dd4fcf740f4a GIT binary patch literal 4807 zcmds5&u`n-9VaDHdXi;H@#-H6GJ`GB8CoJmR-|kZhBT5arFLw^746t*3=p(L%bX?B zeWcP^r(wXhZWy-a5OjwO=+WINf4~kqY(S1GB%=YF!>}Dz@08i;2JEtZA0_HnT*`V@%%V75%x3}8Zwc+O3#5zTZV-y9l z6I~gr1(qBzmh-BOqe^s%4x&TSl?$@QcuCTQqO>bwy^1A4l<}^Lbz`!yEfsczO|euG zOTaFd)%QiEAQ=<)#IjrzbxGJN%cX5yP^y(p2^$_+6UvgfE9^-kHoRC83%ZI0O&9g5 zRFS2hRd^@(!SgcLH_s2)j$Jpxf}R zNSe;?X}VNNlgS>!=2HdBIvIrQKG~(?UjlhR-R<=8biCc>sJk}kG@m?UwYu-Tv)i^> zyv@>9=v6B3viRNiD$Uz@hU|9Fn5?A*XFvrVxmwJ91B*pjDRIkK3Ylw2aEq$CLs(lX z<}|%ploXxQVWHfXT$aM&aLq@)g!cZ1clW9p828V=`309v&M#)>65Pyyzzp}ksBwx4 zCe*4@40CgGk=s+NTmg*e5~puVrt!Cev|+DkrRsTN@ZpcS?5)+@PlneT~b@`-=# z8B4jQ{!ZCl?&pYddF$TT0g4}kjT7+qJLowHe}Eu@(Shf#ZMvt zM~gj$mZPKP>}mm8QLe^WV0~vc!Od9?gG;s?20`X{b}_VYD|$H=TF9kB>E)GBG!ngR z*x{=-nc_q1cdn8rwD@*Dw2-|?dSiwizG`EcbSOC+noH$O)s`B31?`v|k1^6hQ|7&@ zSjJ?xKA|x^JWUFqE_~}5EqT?lxlteR=fylr7 zgSf1XWn~O5HC+Z=fz%b#(E9p-Auq3sN>Ri`5CMrc81XqcFHAxO{w9zi5R489n^4b?046!eowhegn5|i;i(B5XE5)l- zOKKFbnY`K&X(=UBfclmTt$F7aGvjK{pbvy3M!W#R>6Rb7ES!+2g@-%CljP46jDNoi z$5<1^dth{_9!WI<>3Zf)6TSN?{71e<;CekZfZmRo)dO_b6NiG2XTPe*UmYP~|L=>3{{zMlQ`pJKc-J$hqZJ;3`n zavJqTT+XX%t2qx5B|I& zmbqKI5{7C-Rr=g7T(uY7??mf1#jOghT>%^48h)h)<;dE!KLTmrtBXw(>fV{@ecL{` z+e?q8o9KEk+rG~?0<({k_Dr&I`rJ!JV1cBuA?H->16&xgHWk}x? zRS@tv+2LtI-XP>nLV|>lZ8F9Mb93c_AnH1nH>==k(A}xYXHYXV;Jcf)lum%Ht zueD>>a1vwyu#|QK$TK@l)1Onm&neeGZ4TP@B?aWUKSF2e54S&?nE7;K<~c>ao)u|| g@qAEg*aJ@(&rg?rwDjxP{%nH@J+o8HS#z!b0RiF&xBvhE literal 0 HcmV?d00001 diff --git a/system_check.py b/system_check.py index 6c19688..6ebca91 100644 --- a/system_check.py +++ b/system_check.py @@ -18,7 +18,12 @@ 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 + new_string = ticket_string.split("-") + depature_airport_code = new_string[2] + return depature_airport_code +print(get_departure_airport("FL-JO234-JNB-CPT-2023")) + + def check_baggage_allowance(ticket_string: str): """ @@ -36,7 +41,17 @@ def check_baggage_allowance(ticket_string: str): - For any other code: return "Standard - 0kg" """ # TODO: Write your code here - pass + new_string = ticket_string.split("-") + baggage_allowance = new_string[0] + if baggage_allowance == 'EC': + return "Economy - 20kg" + if baggage_allowance == 'BS': + return "Business - 40kg" + if baggage_allowance == 'FL': + return "First Class - 60kg" + else: + return "Standard - 0kg" +print(check_baggage_allowance("FL-JO234-JNB-CPT-2023")) def validate_flight_number(ticket_string: str): """ @@ -50,7 +65,18 @@ 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 + new_string = ticket_string.split("-") + flight_number = new_string[1] + number_portion = int(flight_number.replace("JO", "").replace("A", "")) + if number_portion % 2 == 0: + return "Valid - Northbound" + if number_portion % 2 != 0: + return "Valid - Southbound" + # I don't know what's wrong with this part of the code, I lost my brain cells!!! + if number_portion.isdigit() == False: + return "Invalid Flight" +print(validate_flight_number("FL-A9-JNB-CPT-2023")) + # ========================================== @@ -72,7 +98,15 @@ def is_leap_year(year: int): Return True or False (Boolean). """ # TODO: Write your code here - pass + if year % 400 == 0: + return True + elif year % 100 == 0: + return False + elif year % 4 == 0: + return True + else: + return False +print(is_leap_year(1900)) # ========================================== @@ -105,4 +139,14 @@ def reactor_status(temp: int, radiation: int): - For all other cases: return "Normal Operation" """ # TODO: Write your code here - pass + if temp in range(1000, 2001) and radiation > 100: + return "WARNING" + if temp < 0 or radiation < 0: + return "Sensor Error" + if temp > 2000 or radiation > 500: + return "CRITICAL" + if temp < 500: + return "Maintenance Mode" + else: + return "Normal Operation" +print(reactor_status(1500, 200)) diff --git a/test_reactor.py b/test_reactor.py new file mode 100644 index 0000000..8a90830 --- /dev/null +++ b/test_reactor.py @@ -0,0 +1,19 @@ +import unittest +from system_check import reactor_status + +class TestReactor: + + def test_critical(self): + self.assertEqual(reactor_status(2500, 10), "CRITICAL") + self.assertEqual(reactor_status(500, 600), "CRITICAL") + + + def test_warning(self): + self.assertEqual(reactor_status(1500, 200), "WARNING") + self.assertEqual(reactor_status(1000, 200), "WARNING") + + def test_normal(self): + self.assertEqual(reactor_status(800, 50), "Normal Operation") + +if __name__ == '__main__': + unittest.main() \ No newline at end of file From f3046c527f8f5369ee462c4dcd5f3a8f2ad11346 Mon Sep 17 00:00:00 2001 From: Keamogetswe Date: Sun, 30 Nov 2025 10:13:20 +0200 Subject: [PATCH 2/2] Modified Submission --- __pycache__/system_check.cpython-313.pyc | Bin 4824 -> 4863 bytes system_check.py | 15 +++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/__pycache__/system_check.cpython-313.pyc b/__pycache__/system_check.cpython-313.pyc index 0149355408d9303c37ffa23bcd58736a6ef867a4..112dc2e8fbe146d086c57f2b3b60c6bbdf4991b5 100644 GIT binary patch delta 384 zcmcbi`d^jzGcPX}0}$B$(ayZFk=KZw@xx>X_Rh&4*<}JWKoUTZ!pOjo&KAuH;W03T zGMfTLKp>AflsTAPmyLlTn8PZ9fgus3k`qa+94f|@&aKI_S(c-cQJ{*?Gp{T$Co@IC zEhjTQqh#_lP9tSMP1YiIpnlr;7dK4~;Zk6HGP#sXMTT4QI=A9QZpG`|$``qnZ}7`M5tW!BcUe@U!SBK3nOyQB zAD9_9|Te00719i5yv-{q2HVpN#?hewuG6(|$AS&sJ_Go#YvuL8+zYCwS^ z^~rI93amOnX8Gi1!DO8xNsuTvkhsNKP?VWhQX~u#06D2h21J02DFUf4Qkg6ylqM~~ isIo%&3j>h)XvDzCc9Biyf~?79Hq$E%W|JoixdH&+;9Qje delta 366 zcmeybdP9}>GcPX}0}z~DrkRAO|&dFGWR=47TQxaDM~XO#G9vJ|lc zZM(&snOAa)y(qOHCowto7JFuKN@jZIWMQsgE;*pI1rQfkO)lV4V7xPVBA3eKi(K-m z570JZa%t>mYZ3)<(QP^LHdD?W>6>s zdF~cZW^sH@YGOfrWolwkkqS^KY_luxHD*S|$ufe;Y^p$kBDKk_f(oqKKxWD0Rf5Sn zx0s7dii)^F+F1*VfX*!v1}OtMuSgO^fQ%^usV`EVY$=o`Ey}2{Liq~=kou^@z{qxy UP3D5E;bk_XD-6bycL})y0B>_!J^%m! diff --git a/system_check.py b/system_check.py index 6ebca91..6f856eb 100644 --- a/system_check.py +++ b/system_check.py @@ -67,15 +67,18 @@ def validate_flight_number(ticket_string: str): # TODO: Write your code here new_string = ticket_string.split("-") flight_number = new_string[1] - number_portion = int(flight_number.replace("JO", "").replace("A", "")) + # I finally figured it out! is.digit() is a str method, and I was using it after I had converted number_portion into an int. Brain cells restored! + number_portion = str(flight_number.replace("JO", "").replace("A", "")) + if not number_portion.isdigit(): + return "Invalid Flight" + + number_portion = int(number_portion) + if number_portion % 2 == 0: return "Valid - Northbound" if number_portion % 2 != 0: - return "Valid - Southbound" - # I don't know what's wrong with this part of the code, I lost my brain cells!!! - if number_portion.isdigit() == False: - return "Invalid Flight" -print(validate_flight_number("FL-A9-JNB-CPT-2023")) + return "Valid - Southbound" +print(validate_flight_number("FL-JOABC-JNB-CPT-2023"))