我正在尝试编写一个程序来将 1 到 n 的数字相加。我已经设法让它多次打印数字,但不能将它们全部相加。它继续将两个数字相加。
我的第一次尝试是:
def problem1_3(n):
my_sum = 0
while my_sum <= n:
my_sum = my_sum + (my_sum + 1)
print()
print(my_sum)
我该如何解决这个问题?
For the recursive version of this question, see Recursive function to calculate sum of 1 to n? https://stackoverflow.com/q/19966290/6045800
根本不需要循环。您可以使用三角数公式 https://en.wikipedia.org/wiki/Triangular_number#Formula:
n = int(input())
print(n * (n + 1) // 2)
关于划分的说明(//
)(在 Python 3 中): 你可能知道,Python中有两种类型的除法运算符 https://stackoverflow.com/q/1282945/6045800。简而言之,/
将给出一个浮点数结果//
会给出一个 int。在这种情况下,我们可以使用这两个运算符,唯一的区别是返回的类型,但不是价值. Since 奇数与偶数相乘总是得到偶数 https://www.splashlearn.com/math-vocabulary/number-sense/even-and-odd-numbers#3-fascinating-properties-of-an-even-number-,除以 2 将始终是一个整数。换句话说 -n*(n+1) // 2 == n*(n+1) / 2
(但有一个是x
和另一个x.0
, 分别)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)