结束for循环,Python
我正在编写一个程序,从用户那里读取一个整数“n”,然后将数字结束for循环,Python,python,for-loop,Python,For Loop,我正在编写一个程序,从用户那里读取一个整数“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",numb
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”。您正在更新
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.
在将平方和相加之前,只需设置一个条件 if summ + square > 7: break
测试
summ+square
相反,在添加到summ
之前,您可以在更新summ
之前检查一个单独的变量。您可以在打印时减去值(如果这就是您所做的)打印(“循环运行”,数字1,“次数,总和是”,summ square)
n = int(input("n = "))
summ = 0
for number in range (1,n +1):
square = (number**2)*((-1)**(number+1))
if summ + square > 7:
break
summ += square
print(square)
print("The loop ran",number,"times, the sum is", summ)