3-4中这样的代码为什么错误
x1 = 1
d = 3
n = 100
x100 = 298
#s = (x1+x100)*n/2
s=0
for i in range (100)
s = s+3*i-2
print s
x1 = 1
d = 3
n = 100
x100 = 298
#s = (x1+x100)*n/2
s=0
for i in range (100)
s = s+3*i-2
print s
2019-07-04
你写的for i in range(100)相当于for i in range(0,100),所以第一次循环中i=0,3*i-2=-2。
第二次循环3*i-2=1。以此类推,第三,四,五…一直到第一百次循环中3*i-2的值为4,7,9…295。
s的值为14650,比正确值14950少了300,这是因为第一次循环你多减去了2,最后一次循环只给s加上了3*99-2,把3*100-2落下了2+(3*100-2)正好为300.....也许你会问为什么最后一次循环i为什么等于99而不是100,因为range(0,100)其实是一个list:[0,1,2,3,4...99]而不包含100。另外你的for i in range(100)后面没加冒号,后面也没有缩进。。。
正确方法:
s=0
for i in range (1,101):
s = s+3*i-2
print(s)
举报