首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结束for循环,Python

结束for循环,Python
EN

Stack Overflow用户
提问于 2017-09-25 09:10:37
回答 1查看 87关注 0票数 1

我正在编写一个程序,从用户读取整数"n“,然后将数字1^2-2^2+3^2-4^2+...±n^2相加。例如,如果n= 7,则程序将返回28。我是这样做的:

代码语言:javascript
复制
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“之前结束。

代码语言:javascript
复制
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“。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-25 09:13:39

您正在更新summ值,然后检查条件。相反,在实际将数字加到和之前,您应该检查总数。

代码语言:javascript
复制
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.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46401514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档