【问题标题】:How do I add numbers together within range. (Python) [duplicate]如何将范围内的数字相加。 (Python)[重复]
【发布时间】:2021-08-09 04:45:07
【问题描述】:
def num_sum():
    start = int(input("Please specify a starting number: "))
    end = int(input("Please specify a ending number: "))
    end = end + 1
    for x in range(start, end):
num_sum()

这是我希望发生的一个例子:

计算机:请指定起始编号。

用户: 1

计算机:请指定一个结束编号。

用户: 10

数学: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10

计算机: 55

提前感谢您的帮助。它对我意义重大! :)

我在做这个的时候看到了很多这样的问题,但是其中很多都是非常古老和混乱的,我想知道一种不那么混乱、更新和不那么复杂的新方法。

对于我正在做的项目,我的代码必须不凌乱或复杂。 (从我的例子可以看出。)

它不应该包含任何额外的模块,只是简单、简单的初学者 python。

【问题讨论】:

  • 使用sum()range() 函数。
  • 或者只使用算术:(start + end) * (end - start + 1) / 2
  • @Barmar 这正是我在回答中提出的建议。 FakeBlob,使用算术而不是循环的原因是为了让你的程序运行得更快。显然,在这么简单的事情上没有明显的区别,但是当您继续进行更复杂的项目时,您需要牢记这一点:)

标签: python python-3.x loops for-loop numbers


【解决方案1】:

这里的求和的 Python 版本非常简单,因为sum 可以处理任何值序列(一个迭代器),range() 就是这样一个。所以将startend 的值相加就是:

mySum = sum(range(start, end+1))

特别是对于一些更复杂的过程,我建议将计算放入带参数的函数中,然后返回结果,尽管在这种情况下可能会过于详细:

def sumOver(start, end):
    return sum(range(start, end+1))

然后您可以从负责“与用户交谈”的代码的另一部分调用它:

def sumChallenge():
    start = int(input("Please specify a starting number: "))
    end = int(input("Please specify a ending number: "))
    print(sumOver(start, end))

【讨论】:

    【解决方案2】:

    如果要使用for,请使用累积和

    def num_sum(start ,end ):
        
        total=0
        for x in range(start, end+1):
            total += x
        return total
    
    start = 1
    end = 10
    print(num_sum(start ,end ))
    

    输出

    55
    

    【讨论】:

    • 我更改了代码,使其与带有输入语句的任何数字一起使用。编辑代码,如果你愿意,它就像这样。 def num_sum(): start = int(input("Please specify a starting number: ")) end = int(input("Please sepcify a ending number: ")) total = 0 for x in range(start, end+1): total += x print(total)@DevScheffer
    【解决方案3】:

    从1到n的所有整数之和为n(n + 1) / 2

    如果你从 1 到 end 的所有整数的总和减去从 1 到 (start - 1) 的所有整数的总和,你会得到你的答案。

    def num_sum():
        start = int(input("Please specify a starting number: "))
        end = int(input("Please specify a ending number: "))
        print(end * (end + 1) // 2 - (start - 1) * start // 2)
    num_sum()
    

    记住你的操作顺序 (PEMDAS) 并记住 // 是整数除法——否则你会得到一个浮点数作为输出

    非常简单,不需要循环!

    【讨论】:

    • 对于这个问题我需要使用循环
    猜你喜欢
    • 2022-01-10
    • 2011-05-12
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    相关资源
    最近更新 更多