首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >打印一个5位数字,这样如果我们在开头放1,则得到的6位数比将该数字的1@结束时小3倍。

打印一个5位数字,这样如果我们在开头放1,则得到的6位数比将该数字的1@结束时小3倍。
EN

Stack Overflow用户
提问于 2018-05-24 19:47:25
回答 1查看 37关注 0票数 1

到目前为止,这是我的代码

代码语言:javascript
运行
复制
x = 100000
while x < 100000:
y = x + 100000
z =  (3*10000)-1/(10-3)
    if y != z:
    x += 1
else: 
print(x)

中断

我知道答案应该是42857,但它给了我10000

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-24 20:00:30

循环永远不会执行,因为x的初始化错误。此外,z是常数(不依赖于x)

在您的代码中,它可能会打印100000,因为缩进不完整,使得else语句与while匹配。由于没有发生break,所以打印了x的最后一个值。

最好做一个for循环。这样做是可行的:

代码语言:javascript
运行
复制
for x in range (1,100000):
    y = x + 100000
    z = x*10 + 1
    if y == z//3:
        print(x)
        break
else:
    # for loop completed without break
    print("not found")

或者在一行中,使用next和生成器理解:

代码语言:javascript
运行
复制
result = next(x for x in range (1,100000) if x + 100000 == (x*10 + 1)//3)

在这两种情况下,结果确实是42857

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50517094

复制
相关文章

相似问题

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