from math import ceil def findFalseCoin(coins,idxStart,iLength): if iLength == 1: return idxStart n = ceil(iLength/3) wPart1 = sum(coins[idxStart:idxStart+n]) wPart2 = sum(coins[ ]) wPart3 = sum(coins[idxStart+2*n: ]) if wPart1 < wPart2: return findFalseCoin(coins,idxStart,n) elif wPart1 > wPart2: return findFalseCoin( ) else: return findFalseCoin( ) if __name__ == '__main__': coins = [100,100,100,100,100,100,100,100,100,100,100] for i in range(len(coins)): coinsCopy = coins[:] coinsCopy[i] = 99 r = findFalseCoin( ) print(f'False coin idx:{r}, weight:{coinsCopy[r]}') 期望的执行结果为: False coin idx:0, weight:99 False coin idx:1, weight:99 False coin idx:2, weight:99 False coin idx:3, weight:99 False coin idx:4, weight:99 False coin idx:5, weight:99 False coin idx:6, weight:99 False coin idx:7, weight:99 False coin idx:8, weight:99 False coin idx:9, weight:99 False coin idx:10, weight:99
时间: 2024-04-14 21:28:11 浏览: 14
您的代码存在一些错误。在函数`findFalseCoin`中,有几个地方需要填写正确的参数。
首先,第一个问题是关于`wPart2`和`wPart3`的计算。在这两个变量的计算中,需要正确指定切片的起始和结束索引。请使用以下代码进行修正:
```python
wPart2 = sum(coins[idxStart+n:idxStart+2*n])
wPart3 = sum(coins[idxStart+2*n:idxStart+3*n])
```
接下来,在递归调用`findFalseCoin`函数时,需要传递正确的参数。根据题目要求,应该传递的参数是`coinsCopy`、`idxStart`和`n`。请使用以下代码进行修正:
```python
return findFalseCoin(coinsCopy, idxStart, n)
```
最后,在主程序中,需要传递正确的参数给`findFalseCoin`函数。根据题目要求,应该传递的参数是`coinsCopy`、0和`len(coinsCopy)`。请使用以下代码进行修正:
```python
r = findFalseCoin(coinsCopy, 0, len(coinsCopy))
```
修正后的代码如下:
```python
from math import ceil
def findFalseCoin(coins, idxStart, iLength):
if iLength == 1:
return idxStart
n = ceil(iLength/3)
wPart1 = sum(coins[idxStart:idxStart+n])
wPart2 = sum(coins[idxStart+n:idxStart+2*n])
wPart3 = sum(coins[idxStart+2*n:idxStart+3*n])
if wPart1 < wPart2:
return findFalseCoin(coins, idxStart, n)
elif wPart1 > wPart2:
return findFalseCoin(coins, idxStart+n, n)
else:
return findFalseCoin(coins, idxStart+2*n, n)
if __name__ == '__main__':
coins = [100,100,100,100,100,100,100,100,100,100,100]
for i in range(len(coins)):
coinsCopy = coins[:]
coinsCopy[i] = 99
r = findFalseCoin(coinsCopy, 0, len(coinsCopy))
print(f'False coin idx:{r}, weight:{coinsCopy[r]}')
```
这样,您应该能够得到期望的执行结果:
```
False coin idx:0, weight:99
False coin idx:1, weight:99
False coin idx:2, weight:99
False coin idx:3, weight:99
False coin idx:4, weight:99
False coin idx:5, weight:99
False coin idx:6, weight:99
False coin idx:7, weight:99
False coin idx:8, weight:99
False coin idx:9, weight:99
False coin idx:10, weight:99
```