Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 逻辑错误,打印三倍或五倍的所有数字的总和_Python_Python 3.x_Logic - Fatal编程技术网

Python 逻辑错误,打印三倍或五倍的所有数字的总和

Python 逻辑错误,打印三倍或五倍的所有数字的总和,python,python-3.x,logic,Python,Python 3.x,Logic,我的程序有一些逻辑错误。过去几个小时我一直在努力解决这个问题。它应该打印所有数字的总和,这些数字要么是三的倍数,要么是五的倍数 我的输出 1.)enter an integer number (0 to end): enter an integer number (0 to end): 2.)enter an integer number (0 to end): 3+ = 3 预期产量 1.)enter an integer number (0 to end): 3 = 3 2.)enter

我的程序有一些逻辑错误。过去几个小时我一直在努力解决这个问题。它应该打印所有数字的总和,这些数字要么是三的倍数,要么是五的倍数

我的输出

1.)enter an integer number (0 to end): enter an integer number (0 to end):
2.)enter an integer number (0 to end): 3+ = 3
预期产量

1.)enter an integer number (0 to end): 3 = 3
2.)enter an integer number (0 to end): 3+5 = 8
下面是我的代码

while True:
  answer = ""
  num = int(input("enter an integer number (0 to end): "))
  end_answer = 0

  if num == 0:
    exit()

  for i in range(1, num+1):
    if i%3==0 or i%5==0 :
      answer += str(i)
      end_answer += i


    if i != num and (i%3==0 or i%5==0):
      answer += "+"
      print(str(answer) + " = " + str(end_answer) )
我已经看到了类似的答案,但不是在python中,特别是以下(正确缩进的)代码将提供您所需要的:

while True:
    num = int(input('Enter an integer number (0 to end): '))
    if num == 0: exit()

    answer = ''
    end_answer = 0
    sep = ''
    for i in range(1, num+1):
        if i % 3 == 0 or i % 5 == 0 :
            answer += sep + str(i)
            sep = ' + '
            end_answer += i

    if end_answer > 0:
        print(str(answer) + ' = ' + str(end_answer) )
请注意,它使用变量分隔符
sep
,以更清晰地打印您正在计算的项目。下面是一个运行示例:

Enter an integer number (0 to end): 2
Enter an integer number (0 to end): 3
3 = 3
Enter an integer number (0 to end): 10
3 + 5 + 6 + 9 + 10 = 33
Enter an integer number (0 to end): 38
3 + 5 + 6 + 9 + 10 + 12 + 15 + 18 + 20 + 21 + 24 + 25 + 27 + 30 + 33 + 35 + 36 = 329
Enter an integer number (0 to end): 0
以下(正确缩进)代码将为您提供所需的内容:

while True:
    num = int(input('Enter an integer number (0 to end): '))
    if num == 0: exit()

    answer = ''
    end_answer = 0
    sep = ''
    for i in range(1, num+1):
        if i % 3 == 0 or i % 5 == 0 :
            answer += sep + str(i)
            sep = ' + '
            end_answer += i

    if end_answer > 0:
        print(str(answer) + ' = ' + str(end_answer) )
请注意,它使用变量分隔符
sep
,以更清晰地打印您正在计算的项目。下面是一个运行示例:

Enter an integer number (0 to end): 2
Enter an integer number (0 to end): 3
3 = 3
Enter an integer number (0 to end): 10
3 + 5 + 6 + 9 + 10 = 33
Enter an integer number (0 to end): 38
3 + 5 + 6 + 9 + 10 + 12 + 15 + 18 + 20 + 21 + 24 + 25 + 27 + 30 + 33 + 35 + 36 = 329
Enter an integer number (0 to end): 0

通过使用
sum
内置和f字符串进行打印文本格式设置,可以大大简化代码。这可能也会更有效率

代码 输出
通过使用
sum
内置和f字符串进行打印文本格式设置,可以大大简化代码。这可能也会更有效率

代码 输出
为True时:
没有退出条件,也没有中断。您的代码将永远要求
num
(假设空行结束必须格式化的代码块)请正确格式化您的代码,它将不会在当前状态下运行@TusharAggarwal,我猜正确的缩进将在
中包含整个内容,而True
,这意味着如果num==0:exit()将是退出条件。@paxdiablo是的,如果数字等于零,则它存在。@AngelValenzuela,您仍然需要正确格式化缩进,我的缩进现在是正确的。
为True时:
没有退出条件,也没有中断。您的代码将永远要求
num
(假设空行结束必须格式化的代码块)请正确格式化您的代码,它将不会在当前状态下运行@TusharAggarwal,我猜正确的缩进将在
中包含整个内容,而True
,这意味着如果num==0:exit()将是退出条件。@paxdiablo是的,如果数字等于零,则它存在。@AngelValenzuela,您仍然需要正确格式化缩进,我的缩进现在是正确的。所以我的问题是我的缩进是错误的,这就是为什么它给了我一个错误的输出?@AngelValenzuela:不知道。如果你的缩进真的是你最初拥有的,它就永远不会运行了!因此,我认为根据您的文字描述,只提供可以运行的内容更容易。我的问题是,我的缩进是错误的,这就是为什么它给了我错误的输出?@AngelValenzuela:不知道。如果你的缩进真的是你最初拥有的,它就永远不会运行了!因此,我认为根据您的文本描述,提供一些可以运行的东西更容易。