从1到n的整数之和

时间:2017-05-10 19:45:57

标签: python

我正在尝试编写一个程序来添加从1到n的数字。我已经设法让它多次打印数字,但不是全部添加。它继续添加两个数字。

我的第一次尝试是:

def problem1_3(n):
    my_sum = 0
    # replace this pass (a do-nothing) statement with your code
    while my_sum <= n:
        my_sum = my_sum + (my_sum + 1)
    print() 
    print(my_sum)

如何解决此问题?

15 个答案:

答案 0 :(得分:4)

您可以使用一行来创建从0n的整数列表,并使用sum函数对所有元素求和

def problem1_3(n):
    return sum(range(n+1))

答案 1 :(得分:3)

我不明白为什么每个人都把事情变得复杂。 这是我的简单解决方案

my_combobox = QtWidgets.QComboBox()
my_combobox .setView(QtWidgets.QListView())

答案 2 :(得分:2)

你的代码中需要两个不同的变量 - 一个变量,你可以在迭代值并存储它们时添加它们(my_sum在我的代码中),另一个变量(我在我的代码中)迭代数字从0到n。

def problem1_3(n):
    my_sum = 0
    i=0
    #replace this pass (a do-nothing) statement with your code
    while i <= n:
        my_sum = my_sum + i
        print(my_sum)
        i+=1
    return my_sum

您在代码中使用my_sum变量来存储总和并遍历数字。

答案 3 :(得分:1)

从1到n的数字之和将大于n。例如,1到5之间的数字之和为15,显然大于5.您的while循环过早终止。你需要为循环维护一个单独的计数器。

答案 4 :(得分:1)

真正的程序员使用递归(由于Python中没有尾调用优化,所以希望得到一个不太大的n):

def problem1_3(n):
    return n + problem1_3(n-1) if n > 1 else 1

答案 5 :(得分:1)

答案 6 :(得分:1)

这就是我使用“数学”来解决此类问题的地方。有一个公式可以解决这个问题:n * (n+1) / 2

我会写的代码:

def sum(n):
  return n*(n+1)/2

答案 7 :(得分:0)

你如何使用“While Loop”尝试它:

def problem1_3(n):
my_sum = 0
while my_sum <= n:
    print(my_sum,end=" ")  # end = " " keeps from starting a new line
    my_sum = my_sum + 1
print(my_sum) 

答案 8 :(得分:0)

这一行完成了这项工作:

sum(range(1, n+1))

答案 9 :(得分:0)

所以会更好

def f(a):
    return (a + 1) * (abs(a) + 2 * (a <= 0)) // 2

答案 10 :(得分:0)

print("Sum =",sum(range(int(input("Enter a number\n"))+1)))

答案 11 :(得分:0)

n = input("Enter Number to calculate sum")
n = int (n)
#average = 0.
#sum = 0
sum = 0.
for num in range(0,n+1,1):
    sum = sum+num
print("SUM of first ", n, "numbers is: ", sum )

# Print sum of numbers from 1 to N inclusive

def sum2N(N):
    r = 0
    for i in range(N+1):
        #for i in range(0,N+1,1):
        #r+=i
        r=r+i
    return(r)

print(sum2N(10))

答案 12 :(得分:0)

实际上,我已经尝试了很多此类程序 在Jupyter Notebook中,您可以使用以下命令:

n = int(input("Enter the Number: "))
print(n * (n + 1) // 2)

而且您也可以尝试以下代码:

def problem1_3(n):
return n + problem1_3(n-1) if n > 1 else 1

而且您也可以尝试

def f(a):
return (a + 1) * (abs(a) + 2 * (a <= 0)) // 2

答案 13 :(得分:0)

这个循环确实有效:

定义 main():

n = int(input('Enter a number:'))              

while n <= 1:
    n = int(input('Please input a new number'))

total = 0
my_sum = 0
while (n - 1) >= total:
    total = total + 1
    my_sum += total
    print(my_sum)
    
    
return 

main()

答案 14 :(得分:0)

这些行在 Python

中对我有用
def summation(num): 
sumX = 0
for i in range(1, num + 1):
    sumX = sumX + i
return sumX

summation(3) #You place the num you need here

还有这些:

def summation(num):
    return sum(range(1, num+1))

summation(3) #You place the num you need here