我正在编写一个程序,从用户读取整数"n“,然后将数字1^2-2^2+3^2-4^2+...±n^2相加。例如,如果n= 7,则程序将返回28。我是这样做的:
n = int(input("n = "))
summ = 0
for number in range (1,n +1):
square = (number**2)*((-1)**(number+1))
summ += square
print(square)
print("The loop ran",number,"times, the sum is", summ)问题是,我希望程序在用户输入"k“之前结束。
n = int(input("n = "))
k = int(input("k = "))
summ = 0
for number in range (1,n +1):
square = (number**2)*((-1)**(number+1))
summ += square
print(square)
if summ > k:
break
print("The loop ran",number,"times, the sum is", summ)如果k= 6,程序返回“循环运行5次,和为15",但15明显超过6,正确的答案是”循环运行4次,和为-10“。有人知道怎么解决这个问题吗?我还尝试将if语句直接放在"for number“行下面,但返回”循环运行6次,和为15“。
发布于 2017-09-25 09:13:39
您正在更新summ值,然后检查条件。相反,在实际将数字加到和之前,您应该检查总数。
for number in range(1, n+1):
square = (number**2)*((-1)**(number+1))
if summ + square > k:
break
summ += square
...
# this should work, assuming the rest of your code works.https://stackoverflow.com/questions/46401514
复制相似问题