#function description
def getMoneySpent(keyboards, drives, b):
q = []
for i in range(len(keyboards)):
for j in range(len(drives)):
q.append(keyboards[i] + drives[j])
for m in range(len(q)):
if(q[m] > b):
q.remove(q[m])
else:
pass
if q is not None:
return max(q)
else:
return -1错误信息是:
Traceback (most recent call last):
File "Solution.py", line 42, in <module>
moneySpent = getMoneySpent(keyboards, drives, b)
File "Solution.py", line 15, in getMoneySpent
if(q[m] > b):
IndexError: list index out of range继续获取此错误message.This是hackerrank中的一个问题,我将链接到下面的链接,供任何需要进一步参考的人使用:
https://www.hackerrank.com/challenges/electronics-shop/problem
发布于 2020-05-19 07:55:33
您可以尝试这样做:
def getMoneySpent(keyboards, drives, b):
q = []
for k in keyboards :
for d in drives :
price = k + d
if price <= b :
q.append(price)
return max(q) if q else -1与其删除元素,不如先不要添加元素.
发布于 2020-05-19 07:25:13
问题是q.remove(q[m]),在迭代列表时,您正在从列表中删除项。
一种解决方案是将所有想要删除的m保存在另一个列表中,并在循环完成后删除它们。
或
您可以查看这些链接以获得更好的线索:
你可以理解这一点:
q[:] = [i for i in q if i <= b]在q上放置这一行而不是for循环。
还注意到:
else:
pass是多余的,你可以删除。
https://stackoverflow.com/questions/61885364
复制相似问题