A common pattern in async code is to handle errors with try/except:
async def main():
task1 = asyncio.create_task(factorial(“A”, 2))
task2 = asyncio.create_task(factorial(“B”, 1))
await task1
await task2
try:
asyncio.run(main())
except Exception as e:
print(f”Caught error: {e!r}”)
import math
def factorial(n):
if n == 0:
return 1
else:
recurse = factorial(n-1)
result = n * recurse
return result
print factorial(4)
def factorial(number):
if number == 0:
return 1
return number * factorial(number – 1)
def factorial(n):
if n == 1:
return n
else:
return n * factorial(n-1)
n = int(input(“Enter number:”))
print(“Factorial:”)
print(factorial(n))
def factorial(n=None):
if n is None:
return None
elif not isinstance(n, int) or n < 0: raise ValueError('n must be a positive integer') elif n == 0: return 1 else: return n * factorial(n - 1) factorial(5) def factorial(n): """Returns the factorial of a number.""" if n < 0: raise ValueError("Inputs 0 or greater only") elif not isinstance(n, int): raise TypeError("Invalid type: {}".format(type(n))) elif n == 100: raise FactorialError("Value too high") result = 1 for i in range(1, n + 1): result *= i return result def fact(n): if n == 0: return 1 else: return n * fact(n-1) print(fact(3))