我正在为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”,我们将非常感谢任何帮助。
- 谢谢你。
答案 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
这是缩写。