python定义一个求乘阶的函数fact(n),编写测试代码要求手动输入整数n(n >= 0)
时间: 2024-09-30 15:08:01 浏览: 46
在Python中,我们可以定义一个名为`fact`的函数,用于计算给定整数`n`的阶乘。阶乘是一个正整数乘以所有小于它的正整数的积。例如,5的阶乘(5!)等于5 * 4 * 3 * 2 * 1。
以下是函数的定义:
```python
def fact(n):
if n == 0 or n == 1:
return 1
else:
return n * fact(n - 1)
```
这里我们使用了递归的方式来计算阶乘,当`n`等于0或1时,返回1作为基本情况,因为0和1的阶乘都是1。
接下来,我们可以编写一些测试代码,让用户手动输入整数`n`:
```python
# 测试代码
while True:
try:
n = int(input("请输入一个非负整数(按q退出): "))
if n < 0:
print("输入错误,只能输入非负整数.")
else:
result = fact(n)
print(f"{n}的阶乘是: {result}")
except ValueError:
print("输入错误,请输入整数.")
if input("是否继续? (y/n): ").lower() != 'y':
break
```
在这个测试循环中,用户可以连续输入整数,直到他们选择退出。如果输入不是有效的非负整数,程序会提示用户重新输入。
相关问题
python定义一个求阶乘的函数fact(n),并编写测试代码,要求输入整数n(n>=0)。
在Python中,我们可以定义一个名为`fact`的函数来计算给定整数n的阶乘。阶乘是指从1乘到该数的所有正整数的积。以下是函数的定义以及简单的测试代码:
```python
def fact(n):
"""
计算输入整数n的阶乘。
参数:
n (int): 非负整数
返回:
int: n的阶乘结果
"""
if not isinstance(n, int) or n < 0:
raise ValueError("输入值必须是非负整数")
elif n == 0 or n == 1:
return 1
else:
result = 1
for i in range(1, n + 1):
result *= i
return result
# 测试代码
test_cases = [0, 1, 5, 10]
for n in test_cases:
print(f"fact({n}) = {fact(n)}")
定义一个求阶乘的函数fact(n),并编写测试代码,要求输入整数n(n>=0),分别用递归和非递归的方式实现,用python语言
递归方式实现:
```python
def fact(n):
if n == 0:
return 1
else:
return n * fact(n-1)
n = int(input("请输入一个非负整数:"))
print(fact(n))
```
非递归方式实现:
```python
def fact(n):
result = 1
for i in range(1, n+1):
result *= i
return result
n = int(input("请输入一个非负整数:"))
print(fact(n))
```
测试代码:
```python
#递归方式测试
assert fact(0) == 1
assert fact(1) == 1
assert fact(5) == 120
assert fact(10) == 3628800
#非递归方式测试
assert fact(0) == 1
assert fact(1) == 1
assert fact(5) == 120
assert fact(10) == 3628800
```
阅读全文