鱼C论坛

 找回密码
 立即注册
查看: 1476|回复: 7

[已解决]关于爱因斯坦阶梯问题

[复制链接]
发表于 2020-7-11 19:00:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
x=0
while x <= 1000:
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5) and(x%7==0):
            print ('阶梯数是:',x)
            x+=1
    else :
        x=x+1
    我这个有什么问题么?
最佳答案
2020-7-11 19:02:56
没有,但会打印多个答案
改成这样就好了:
  1. x=0
  2. while x <= 1000:
  3.     if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5) and(x%7==0):
  4.         print ('阶梯数是:',x)
  5.         break
  6.     else:
  7.         x=x+1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-11 19:02:56 | 显示全部楼层    本楼为最佳答案   
没有,但会打印多个答案
改成这样就好了:
  1. x=0
  2. while x <= 1000:
  3.     if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5) and(x%7==0):
  4.         print ('阶梯数是:',x)
  5.         break
  6.     else:
  7.         x=x+1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-11 19:02:56 | 显示全部楼层
你的程序打印了 1000 以内所有的阶梯数,想要打印 1000 以内第一次出现的阶梯数应该加一个 break 跳出循环:

  1. x=0
  2. while x <= 1000:
  3.     if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5) and(x%7==0):
  4.             print ('阶梯数是:',x)
  5.             break
  6.     else :
  7.         x=x+1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-7-11 19:09:32 | 显示全部楼层

没啥毛病,不过会多次打印,改成这样效果就更好了:

  1. x=0
  2. print ('阶梯数是:',end='')
  3. while x <= 1000:
  4.     if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5) and(x%7==0):
  5.         print(x,end='  ')
  6.         x+=1
  7.         continue
  8.     x+=1
复制代码


输出结果:
  1. 阶梯数是:119  329  539  749  959
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-11 20:57:43 From FishC Mobile | 显示全部楼层
我刚学了一周,还没有学到break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-11 21:44:19 | 显示全部楼层
mark1973 发表于 2020-7-11 20:57
我刚学了一周,还没有学到break


那就直接这样就好:
  1. x=0
  2. print ('阶梯数是:',end='')
  3. while x <= 1000:
  4.     if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5) and(x%7==0):
  5.         print(x,end=' ')
  6.         x+=1
  7.     else:
  8.         x+=1
复制代码


你试着去运行下吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-11 23:33:47 | 显示全部楼层
Twilight6 发表于 2020-7-11 21:44
那就直接这样就好:

大神,请教下这里的 x+=1 为啥能避免重复打印啊
print(x,end=' ')
        x+=1

先感谢大神指定了,小白刚起步。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-11 23:36:55 | 显示全部楼层
weiyideid823 发表于 2020-7-11 23:33
大神,请教下这里的 x+=1 为啥能避免重复打印啊
print(x,end=' ')
        x+=1




如果不 x + 1 那么会导致你 if 条件始终成立呀,比如你循环到了 x =  119  然后满足 if 条件

然后打印一次print 然后直接开始下次循环,而因为你没有 x += 1 所以这次循环还是 x = 119 又满足了条件...又继续循环打印........
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-2 06:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表