From c2866511098ce6fa536faf24452dc9a321119f8e Mon Sep 17 00:00:00 2001 From: Hazel Sibhuku Date: Tue, 30 Sep 2025 15:15:33 +0200 Subject: [PATCH 1/4] tried to append --- main.py | 62 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 15 deletions(-) diff --git a/main.py b/main.py index 3825247..7422d07 100644 --- a/main.py +++ b/main.py @@ -1,19 +1,51 @@ def factorial(n): """Calculates the factorial of a non-negative integer.""" # TODO: Implement the logic - pass + for i in range(1, n+1): + if n < 0: + return "input positive number" + if n == 0: + return 1 + + +print(factorial(3)) + +# def fibonacci(n): +# """Returns the nth number in the Fibonacci sequence.""" +# x = 0 +# y = 1 +# # TODO: Implement the logic +# return None + +# def fizzbuzz(n): +# """ +# Returns a list for the FizzBuzz game up to n. +# - Multiples of 3 are "Fizz" +# - Multiples of 5 are "Buzz" +# - Multiples of both 3 and 5 are "FizzBuzz" +# """ +# # TODO: Implement the logic +# game = [] +# # for i in range(n): +# while n <= n: +# if n%3==0 and n%5==0: +# i = "FizzBuzz" + +# elif n%3==0: +# i = "Fizz" + +# elif n%5==0: +# i = "Buzz" + +# else: +# i = n + +# game.append(i) + +# # return i + +# return game +# print(fizzbuzz(2)) + + -def fibonacci(n): - """Returns the nth number in the Fibonacci sequence.""" - # TODO: Implement the logic - return None - -def fizzbuzz(n): - """ - Returns a list for the FizzBuzz game up to n. - - Multiples of 3 are "Fizz" - - Multiples of 5 are "Buzz" - - Multiples of both 3 and 5 are "FizzBuzz" - """ - # TODO: Implement the logic - return [] \ No newline at end of file From 3464fb060ac669e352ad85b410eee694a7b0db16 Mon Sep 17 00:00:00 2001 From: Hazel Sibhuku Date: Tue, 30 Sep 2025 20:39:54 +0200 Subject: [PATCH 2/4] added tests for all 3 functions --- __pycache__/main.cpython-312.pyc | Bin 0 -> 1437 bytes __pycache__/test_main.cpython-312.pyc | Bin 0 -> 840 bytes main.py | 83 ++++++++++++++------------ test_main.py | 17 ++++++ 4 files changed, 61 insertions(+), 39 deletions(-) create mode 100644 __pycache__/main.cpython-312.pyc create mode 100644 __pycache__/test_main.cpython-312.pyc create mode 100644 test_main.py diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..49b5ecdbf6600a648a2050a198c7746ebc36f84a GIT binary patch literal 1437 zcma)6&u`O85Z?7VAwQg?q@_GiK@O-;gGv?9d*VRf6Hp-`)S{{a0fIvsJE>{vBx?r| zD-{vqV3$gDpFj#A8%RYj&;z7muvitq3U#80`CSwPhv0!-(9S(Dz`)Dc`Vm)g z16FK^yc58{m_m<^AhayNy08dqRKTcCxHs1Ga0534I}IqjdQ?OWJckr2cFa;0qQmi|POjoQ+@MiuObXwE2V3h}Ywi-la?^098R%gM6*b!=jxyrfN(a`S4r zJaNa+t#L~;t#R$CM)SIZLZ~|XJ zWCO8;@xXt_27b(Pv2QfUyPjMa zSZau|m&MidB6=n^a6y3NhwT$F$e>&>k$ z8Z{|9v%}Qye1q{;psZs2aIR9(3{?ryFms8iRcVCJKuw<*)`H1!>{yvbSs+@_=gUSe zpV#RS_(^!oMKDbiL{KE^WS`gCsk1>CNeO4x8Eszg>NM+B*XLe7+(v}!lsxQZysPV{ z-G$a*YqnK=Gxz4N56O%}+L8EL%#C@MR#R;NopOsV2@U}%h#@KE5$AIAHjTr12aCt5 zWCInUW`9%tIu}b&1sgtGC5x=;k8`p1{Pe+6si8foR!4!;zsIjQ;XclPe|XNJKFLb~#YsbHV{5Wna5lDZ{TXarJH7=pxrBc)Nrz)~@Q_*haFSS+C@H+E=RJE68CHCBfr z1=0VYLm8rOD1Qo55vbJz2_&X$k93t2tXr*iBgIk!k)#C^k_WJJy-Em_Frff=f?-mBhi5ot!-NEb|8%BDyw+*+ zc~=h%u{omg1|QMn5e-!0IdU9jkG{JF`g+AIBqkbuJTp2w%zfZ znrm&@olfmdyA@VLK>D%x6!#}fJX|R5Bcd++EHztV2ml8^svTb>elxj&zuVZ&z@^ezs`qPSk z6R}^wUqR#NNfFan5xrmmRUalA&s3%uD$`)vUP@y@>0Km9>ncIH_#p9Vrmy_e!h^*# z>2L6FlbU_(O5d2S_1Is<0-Y~-glfzgV?QDP8}45U!74}l=lSwkzI+K7jBkO+9Yx=G W=|Zd=zWh}GQ2+R9%t5TigZ}~DLartN literal 0 HcmV?d00001 diff --git a/main.py b/main.py index 7422d07..d6df102 100644 --- a/main.py +++ b/main.py @@ -1,51 +1,56 @@ def factorial(n): - """Calculates the factorial of a non-negative integer.""" - # TODO: Implement the logic + fact = 1 for i in range(1, n+1): if n < 0: return "input positive number" if n == 0: return 1 - - -print(factorial(3)) - -# def fibonacci(n): -# """Returns the nth number in the Fibonacci sequence.""" -# x = 0 -# y = 1 -# # TODO: Implement the logic -# return None - -# def fizzbuzz(n): -# """ -# Returns a list for the FizzBuzz game up to n. -# - Multiples of 3 are "Fizz" -# - Multiples of 5 are "Buzz" -# - Multiples of both 3 and 5 are "FizzBuzz" -# """ -# # TODO: Implement the logic -# game = [] -# # for i in range(n): -# while n <= n: -# if n%3==0 and n%5==0: -# i = "FizzBuzz" - -# elif n%3==0: -# i = "Fizz" - -# elif n%5==0: -# i = "Buzz" - -# else: -# i = n + else: + fact *= i + return fact + +# print(factorial(3)) + +def fibonacci(n): + """ + fn = f(n-1)+ f(n-2) + """ + if n < 0: + return "only positive integers" + + + seq = [0,1] + for i in range(2,n+1): + num = seq[i-1] + seq[i-2] + seq.append(num) + nth = seq[-1] -# game.append(i) + return nth, seq + +# print(fibonacci(6)) + + +def fizzbuzz(n): + result = [] + for i in range(1, n+1): + # while n <= n: + if i%3==0 and i%5==0: + result.append("FizzBuzz") + + elif i%3==0: + result.append("Fizz") + + elif i%5==0: + result.append("Buzz") + + else: + result.append(i) -# # return i + return result -# return game -# print(fizzbuzz(2)) + # return i +# fizzbuzz(3) +# print(fizzbuzz(3)) diff --git a/test_main.py b/test_main.py new file mode 100644 index 0000000..2c17559 --- /dev/null +++ b/test_main.py @@ -0,0 +1,17 @@ +import unittest +from main import factorial, fibonacci, fizzbuzz + +class TestMain(unittest.TestCase): + def test_main(self): + self.assertEqual(fizzbuzz(3),[1,2, 'Fizz']) + + self.assertEqual(factorial(3), 6) + + self.assertEqual(fibonacci(6),(8, [0,1,1,2,3,5,8])) + + + + + +if __name__ == "__main__": + unittest.main() From 94068e0b78a8308ea618105b0a31b89b01fe788b Mon Sep 17 00:00:00 2001 From: Hazel Sibhuku Date: Wed, 1 Oct 2025 15:40:49 +0200 Subject: [PATCH 3/4] expanded tests --- main.py | 75 +++++++++++++++++++++++++++------------------------- test_main.py | 12 ++++++--- 2 files changed, 47 insertions(+), 40 deletions(-) diff --git a/main.py b/main.py index d6df102..657ced6 100644 --- a/main.py +++ b/main.py @@ -1,56 +1,59 @@ -def factorial(n): - fact = 1 - for i in range(1, n+1): - if n < 0: - return "input positive number" - if n == 0: - return 1 - else: - fact *= i - return fact - -# print(factorial(3)) +# def factorial(n): +# fact = 1 +# for i in range(1, n+1): +# if n < 0: +# return "input positive number" +# if n == 0: +# return 1 +# else: +# fact *= i +# return fact + +# # print(factorial(3)) def fibonacci(n): """ fn = f(n-1)+ f(n-2) """ + if not n.isdigit(): + raise ValueError or NameError if n < 0: return "only positive integers" - - - seq = [0,1] - for i in range(2,n+1): - num = seq[i-1] + seq[i-2] - seq.append(num) - nth = seq[-1] + elif n == 1: + return "only numbers above 1" + else: + seq = [0,1] + for i in range(2,n+1): + num = seq[i-1] + seq[i-2] + seq.append(num) + nth = seq[-1] return nth, seq -# print(fibonacci(6)) +print(fibonacci("p")) -def fizzbuzz(n): - result = [] - for i in range(1, n+1): - # while n <= n: - if i%3==0 and i%5==0: - result.append("FizzBuzz") +# def fizzbuzz(n): +# result = [] +# for i in range(1, n+1): +# # while n <= n: +# if i%3==0 and i%5==0: +# result.append("FizzBuzz") - elif i%3==0: - result.append("Fizz") +# elif i%3==0: +# result.append("Fizz") - elif i%5==0: - result.append("Buzz") +# elif i%5==0: +# result.append("Buzz") - else: - result.append(i) +# else: +# result.append(i) - return result +# return result - # return i -# fizzbuzz(3) -# print(fizzbuzz(3)) +# # return i +# # fizzbuzz(3) +# # print(fizzbuzz(15)) diff --git a/test_main.py b/test_main.py index 2c17559..48b79f3 100644 --- a/test_main.py +++ b/test_main.py @@ -2,15 +2,19 @@ from main import factorial, fibonacci, fizzbuzz class TestMain(unittest.TestCase): - def test_main(self): + def test_fizzbuzz(self): self.assertEqual(fizzbuzz(3),[1,2, 'Fizz']) + self.assertEqual(fizzbuzz(5),[1, 2, 'Fizz', 4, 'Buzz']) + self.assertEqual(fizzbuzz(15),[1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz', 11, 'Fizz', 13, 14, 'FizzBuzz']) + - self.assertEqual(factorial(3), 6) - - self.assertEqual(fibonacci(6),(8, [0,1,1,2,3,5,8])) + def test_factorial(self): + self.assertEqual(factorial(3), 6) + def test_fibonacci(self): + self.assertEqual(fibonacci(6),(8, [0,1,1,2,3,5,8])) if __name__ == "__main__": From d6f5c1b9f34748136f4c1d8662205505d95cff9b Mon Sep 17 00:00:00 2001 From: Hazel Sibhuku Date: Wed, 1 Oct 2025 20:28:14 +0200 Subject: [PATCH 4/4] added more tests --- __pycache__/main.cpython-312.pyc | Bin 1437 -> 1739 bytes main.py | 77 ++++++++++++++++++------------- test_main.py | 24 ++++++---- 3 files changed, 61 insertions(+), 40 deletions(-) diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc index 49b5ecdbf6600a648a2050a198c7746ebc36f84a..f6012d97465645cd968302d538d53a53bfebc05c 100644 GIT binary patch delta 928 zcmZ`%Pe>F|7=Lfx%>Mts?vl02h?*`Mv_udR;i7r)V1yEN=&*hMEZ+5F4cG<-u z#uD0L3D-kl$MD#tLzm7TGP*2_L04~sdJrM(dt*iKi^XvRi*5k>`a z3P4EW&LAuJDS3dN;J7fg$8I?eD58=th$%(PDg`+sQ{z)th_nf0ZP&e2t|;H8G*6B8 z^ne%U8Ai>3tD%u_x`FfW>)ggP7WxbAW5xQcFv+ zBE<#D-qI$jyiDCz1edglQkYj6Ns$@#u!eIko6ak#+1V_OK;8jIeFLtB%&Oz>zc6jc z;nWi=#g>1d<#g$(m(iBL|A#+N59+c`c7xISax>UWY=j%JeMFoW^<*m)si&IQm^B8Q z)0@G~#Jlju{jZ^ZeXQm2zn)y3tgCBx*ihOSSRFI%05V<38>ol%ksUtLdt_cZ_vwty ziaQxYpJU!+oO~E1gBS~qEZ==M&RHVRAdJMxsRA}CtHoTw5^!jTPhaR?hUwCci0E%b|?qlm}X=DN3BihXhOvGcy&BeS_%*nT?2&uKx YOh}VpjQ2S|4(wkJP|CLui0kPd~IYb zXSZbV9E7)_cv%z|Pw|Pu;diRd$^y}r4sJ?hUur>x7D+A^ z{-M{yHMY1vz%|L>FVZpPVvy6=X1#7$dQRpsVKUoja3#`k#ZzWAtG2*p1o5~C#4Bd0 zW^I