在python中确定3或5的倍数

新手上路,请多包涵

我对 python 比较陌生,因此尝试让自己运行一些简单的算法。这是 euler 项目的第一个问题,尽管 python 中的同一问题还有其他解决方案,但我尝试了不同的方法。

关键是找到小于 1000 的 3 或 5 的所有倍数的总和。这是我的代码。

 def main():

    num = input('Insert number:')
    output = sumOfMultiples(num)
    print(output)

def sumOfMultiples(param):

    j = 0
    i = 0
    for i in range(i, param):
        if (i % 3 ==0) or (i % 5 == 0) and (i % 15 != 0):
            j = j + i
    return j

if __name__ == '__main__':
    main()

这是我得到的错误

Traceback (most recent call last):
  File "/Users/Soumasish/PycharmProjects/MultiplesOf3And5/Main.py", line 21, in <module>
    main()
  File "/Users/Soumasish/PycharmProjects/MultiplesOf3And5/Main.py", line 7, in main
    output = sumOfMultiples(num)
  File "/Users/Soumasish/PycharmProjects/MultiplesOf3And5/Main.py", line 15, in sumOfMultiples
    for i in range(i, param):
TypeError: 'str' object cannot be interpreted as an integer

Process finished with exit code 1

原文由 user3283997 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

您需要将输入转换为 int:

 def main():
    num = int(input('Insert number:'))
    output = sumOfMultiples(num)
    print(output)

此外,您可以按如下方式减少第二种方法。我检查了一下,它仍然给出了正确的答案:

 def sumOfMultiples(param):
    sum = 0
    for i in range(param):
        if (i % 3 ==0) or (i % 5 == 0):
            sum += i
    return sum

原文由 sshashank124 发布,翻译遵循 CC BY-SA 3.0 许可协议

num = int(input("enter the number : "))
lt = []
for i in range(num):
  if (i%3==0 or i%5==0):
     lt.append(i)
sum_of_lt=sum(lt)
print(sum_of_lt)

原文由 sandeep mishra 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题