完善下面的程序def cni(n,i): minNI = min (i,n-i) result1 = 1 for a in range(0,minNI): result1 = result1 * (n - a) result2 = 1 for b in range(0,minNI): result2 = result2 * (minNI-b) result = int(result1 / result2) print(result) print('组合数的运算') while True: try: n = int(input('组合数的下标为:')) i = int(input('组合数的上标为: ')) 0 < i < n break except: print('输入错误,请重新输入') cni(n,i)
时间: 2024-04-09 12:33:45 浏览: 90
您好!根据您提供的代码,它的功能是计算组合数C(n, i),其中n和i是用户输入的下标和上标。
代码本身在逻辑上是正确的,但是在输入验证部分存在一个问题。您在验证`0 < i < n`时没有使用任何条件语句,导致它没有实际的作用。为了正确验证输入的合法性,您可以使用条件语句来检查输入是否满足条件,并在不满足条件时提示用户重新输入。
以下是修复后的代码:
```python
def cni(n, i):
minNI = min(i, n - i)
result1 = 1
for a in range(0, minNI):
result1 = result1 * (n - a)
result2 = 1
for b in range(0, minNI):
result2 = result2 * (minNI - b)
result = int(result1 / result2)
print(result)
print('组合数的运算')
while True:
try:
n = int(input('组合数的下标为:'))
i = int(input('组合数的上标为: '))
if 0 < i < n:
break
else:
print('输入错误,请重新输入')
except:
print('输入错误,请重新输入')
cni(n, i)
```
修复后的代码将会验证输入的合法性,并计算并打印出组合数的结果。如果输入不满足条件,将会提示用户重新输入。
阅读全文