diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..f6012d9 Binary files /dev/null and b/__pycache__/main.cpython-312.pyc differ diff --git a/__pycache__/test_main.cpython-312.pyc b/__pycache__/test_main.cpython-312.pyc new file mode 100644 index 0000000..ab6bc66 Binary files /dev/null and b/__pycache__/test_main.cpython-312.pyc differ diff --git a/main.py b/main.py index 3825247..4cce7cd 100644 --- a/main.py +++ b/main.py @@ -1,19 +1,72 @@ def factorial(n): - """Calculates the factorial of a non-negative integer.""" - # TODO: Implement the logic - pass + fact = 1 -def fibonacci(n): - """Returns the nth number in the Fibonacci sequence.""" - # TODO: Implement the logic - return None + try: + n = int(n) + except: + raise ValueError("n not an integer") + + for i in range(1, n+1): + if n < 0: + return "input positive number" + if n == 0: + return 1 + else: + fact *= i + return fact -def fizzbuzz(n): +# print(factorial(0)) + +def fibonacci(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" + fn = f(n-1)+ f(n-2) """ - # TODO: Implement the logic - return [] \ No newline at end of file + try: + n = int(n) + except: + raise ValueError("n not an integer") + if n < 0: + return "only positive integers" + 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("p")) + + +def fizzbuzz(n): + result = [] + # try: + # n = int(n) + # except: + # raise ValueError("n not an integer") + + 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 result + + # return i +# fizzbuzz(3) +# print(fizzbuzz(15)) + + + diff --git a/test_main.py b/test_main.py new file mode 100644 index 0000000..7e5fd6c --- /dev/null +++ b/test_main.py @@ -0,0 +1,29 @@ +import unittest +from main import factorial, fibonacci, fizzbuzz + +class TestMain(unittest.TestCase): + def test_factorial(self): + self.assertEqual(factorial(3), 6) + self.assertNotEqual(factorial(-1), "input positive number") + self.assertEqual(factorial(0), 1) + # self.assertRaises(NameError,fibonacci, n) + self.assertRaises(ValueError, fibonacci, "n") + + + + def test_fibonacci(self): + self.assertEqual(fibonacci(6),[8, [0,1,1,2,3,5,8]]) + self.assertEqual(fibonacci(-1), "only positive integers") + self.assertEqual(fibonacci(1), "only numbers above 1") + # self.assertRaises(NameError, fibonacci(p)) + self.assertRaises(ValueError, fibonacci, "p") + + 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.assertRaises(ValueError, fizzbuzz, "f") + + +if __name__ == "__main__": + unittest.main()