Python 2 - “用于计数循环”

时间:2016-01-07 02:58:26

标签: python for-loop

我正在为python 2中的学校项目工作,我在遇到其中一个问题时遇到了很多麻烦:

  

编写一个计算以下总和的程序:       sum = 1.0 / 1 + 1.0 / 2 + 1.0 / 3 + 1.0 / 4 + 1.0 / 5 + .... + 1.0 / N.       N是用户输入的整数限制。

For example:
Enter N: 4
Sum is: 2.08333333333

我目前编写的代码是:

NumOfN = int(input("What is N? : "))
total = 0
for i in range (NumOfN):
  NextNum = 1.0/(NumOfN)
  total = NextNum
  NumOfN = NumOfN-1
print "the sum is", total

然而,每当我运行这个时,我得到输出“1.0”,我们将非常感谢任何帮助。

- 谢谢你。

2 个答案:

答案 0 :(得分:1)

您没有自己和total递增NextNum。我将total = NextNum更改为total += NextNum

NumOfN = int(input("What is N? : "))
total = 0
for i in range(NumOfN):
  NextNum = 1.0/(NumOfN)
  total += NextNum
  NumOfN = NumOfN-1
print "the sum is ", total

或更简单:

NumOfN = int(input("What is N? : "))
runningTab = []
for i in range(NumOfN, -1, -1):
    if i != 0:
        runningTab.append(1.0/(i))

print "the sum is ", sum(runningTab)

最好在结尾处使用列表和总和,而不是保持数字的运行记录。

答案 1 :(得分:0)

for循环的第二行:

total = NextNum

变量total应添加NextNum,而不仅仅是重新分配。这是因为必须通过向自身添加total来反复添加NextNum。让我们改变:

total = total + NextNum

这意味着:total需要将NextNum添加到自身,因此我们会将它们添加到一起,以便新的total现在等于旧total + NextNum

旁注:

你可能已经注意到@heinst在他的代码行+=中使用了total += NextNum。这与total = total + NextNum相同,但它就像一个缩写。您可以使用+=-=*=/=执行此操作。所有这些都是缩写代码行的方法,它会在对变量进行一些算术后重新分配变量。

话虽如此,代码如下:

NumOfN = NumOfN-1

可以成为:

NumOfN -= 1

这是缩写。