【问题标题】:The Sum of Consecutive Numbers in PythonPython中的连续数之和
【发布时间】:2021-12-24 18:23:29
【问题描述】:

我要做的是获取用户输入并使用循环添加从 1 开始的连续数字,直到总和等于或超过输入。这是一个练习,所以我尝试在不使用条件 True 或导入任何函数的情况下执行此操作。只是一个简单的 while 循环。

这就是我所拥有的。

num = int(input("Limit:"))
base = 0
while base < num:
    base += base + 1
    print(base)
    

当我输入 21 时,打印输出为 1 3 7 15 31

不知道如何解决。非常感谢任何建议。

编辑:抱歉没有指定,预期的输出应该只是最终的数字,它超过或等于输入。例如,如果输入为 10,则输出应为 10。如果输入为 18,则输出应为 21。

【问题讨论】:

  • 您的预期输出和输入是什么。添加有问题的

标签: python


【解决方案1】:

你应该计算专用变量中的连续数字

试试这个

limit = int(input("Limit:"))
base = 0
number = 1
while base < limit:
    base += number
    number += 1
print(base)

【讨论】:

  • 谢谢@Eugenij。抱歉没有指定,预期的输出应该只是最终的数字,它超过或等于输入。例如,如果输入为 10,则输出应为 10。如果输入为 18,则输出应为 21。
  • @emt1619 调整对您的编辑的回答。乐于助人,欢迎来到 Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。
【解决方案2】:

当给定21 作为输入时,逐步检查您的代码正在做什么。

num = int(input("Limit:"))
base = 0
while base < num:
    base += base + 1
    print(base)

我们知道我们的初始状态是:

num = 21
base = 0

base 小于21,所以我们将base 添加到1,然后将所有这些添加到base+=

num = 21
base = 1

现在,让我们继续:

num = 21
base = 1

num = 21
base = 1 + 1 + 1 = 3

num = 21
base = 3 + 3 + 1 = 7

num = 21
base = 7 + 7 + 1 = 15

number = 21
base = 15 + 15 + 1 = 31

如果您想对一系列数字求和,那么... Python 使用 while 循环使这变得非常简单。我们需要一个计数器(我们将在每个循环中更新)、结束编号和一个 sum 变量(名称 sum 已经是一个内置函数)。

num = int(input("Limit:"))
counter = 0
sumNums = 0
while counter < num:
    sumNums += counter
    count += 1
    print(sumNums)

或者我们可以对一个范围求和。

print(sum(range(1, num)))

【讨论】:

  • 感谢您的回复。原来我忘了提,抱歉没有指定,预期的输出应该只是最终的数字,超过或等于输入的数字。所以比如输入10,输出10,输入18,输出21,基本上需要加(1+2+3等)一直到或者超过这个数,然后打印只是计算的结果。
【解决方案3】:

只是因为我喜欢数学:

num = int(input("Limit:"))
for n in range(1,num):
    s = n * (n + 1) / 2
    if s >= num:
        break
print(int(s))

【讨论】:

    【解决方案4】:

    如果您希望您的预期输出只是最终数字,只需取消打印语句的缩进即可:

    limit = int(input("Limit:"))
    
    base = 0
    num = 1
    
    # Each time base is less than limit, add base by num (At the first iteration num is 1), and add num by 1
    while base < limit:
        base += num 
        num += 1
    print(base)
    

    样本输出:

    >>> Limit: 18
    21
    
    >>> Limit: 10
    10
    

    【讨论】:

      【解决方案5】:

      你必须做或base = base + 1bas += 1,否则你和 base + (base + 1)是错误的。

      但你也可以用同样的方式快速完成:

      sum(range(1, num + 1))
      

      【讨论】:

      • 这不是他们问的。他们想要一直到 sum 等于或超过提供的限制。
      猜你喜欢
      • 2022-01-25
      • 2016-05-03
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2016-08-26
      相关资源
      最近更新 更多