Python 2.7 在hackerrank的测试用例2和3中获取超时错误和运行时错误。如何解决这个问题?

Python 2.7 在hackerrank的测试用例2和3中获取超时错误和运行时错误。如何解决这个问题?,python-2.7,Python 2.7,此代码的目标是打印给定范围内3和5的倍数之和。在hackerrank中,我在测试用例2和3中遇到了错误。有人知道如何解决这个问题吗 t =int(raw_input()) for i in range(0,t): range = int(raw_input()) a=3 b=5 aa=[] res=[] def forA(a): #Calculating Multiple of 3 while True: if a >=range :

此代码的目标是打印给定范围内3和5的倍数之和。在hackerrank中,我在测试用例2和3中遇到了错误。有人知道如何解决这个问题吗

t =int(raw_input())  
for i in range(0,t):
range = int(raw_input())
a=3
b=5
aa=[]
res=[]
def forA(a):  #Calculating Multiple of 3
    while True:
        if a >=range :
            a = a-3
            break
        else:
            aa.append(a)
            a += 3;

def forB(b):  #Calculating Multiple of 5
    while True:
        if b >=range :
            b=b-5
            return b
            break
        else:
            aa.append(b)
            b += 5;


forA(a)
forB(b) 
for i in aa:    #eliminate duplicate values of multiples. 
    if i not in res:  
        res.append(i)

print sum(res)

这可能会解决您的问题,因为它使用pythons内置的“智能”功能,而不是自己一次创建一个列表项。所以他们更快。。。这可能会解决您遇到的计时错误

从3或5到t,你可以得到输入的所有数字

from itertools import chain
t =15

threes = range(0,t+1,3) # range provides [lower..higher[ not including higher value
fives = range(0,t+1,5)

sums = sum(chain(threes,fives)) # without itertools: sums=sum(threes) + sum(fives)
print(threes)
print(fives)
print(sums)
如果要避免倍数,请避免链(…),使用集合并在求和之前将它们连接在一起

s = set(threes) | set(fives)

print(sum(s))
输出:

[0, 3, 6, 9, 12, 15] # threes up to 15
[0, 5, 10, 15] # fives up to 15
75 # sum of chained ones
60 # sum of set

要考虑一个想法,我必须创建和帐户/登录到Hakrink,找到这个难题,得到测试用例,并分析你做了什么。对不起,不麻烦了。也许你可以提供更多关于这些测试用例的信息,这样我们就可以不费吹灰之力地解决它了?暂停可能意味着你做某事的速度不够快。非常感谢你,帕特里克。代码运行良好。很抱歉,我没有提供任何测试用例。问题在于时机。您的代码运行得更快,并且通过了所有测试用例。非常感谢。