mark1973 发表于 2020-7-11 19:00:27

关于爱因斯坦阶梯问题

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
    我这个有什么问题么?

qiuyouzhi 发表于 2020-7-11 19:02:56

没有,但会打印多个答案
改成这样就好了:
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)
      break
    else:
      x=x+1

zltzlt 发表于 2020-7-11 19:02:56

你的程序打印了 1000 以内所有的阶梯数,想要打印 1000 以内第一次出现的阶梯数应该加一个 break 跳出循环:

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)
            break
    else :
      x=x+1

Twilight6 发表于 2020-7-11 19:09:32


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

x=0
print ('阶梯数是:',end='')
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,end='')
      x+=1
      continue
    x+=1

输出结果:
阶梯数是:119329539749959

mark1973 发表于 2020-7-11 20:57:43

我刚学了一周,还没有学到break

Twilight6 发表于 2020-7-11 21:44:19

mark1973 发表于 2020-7-11 20:57
我刚学了一周,还没有学到break

那就直接这样就好:
x=0
print ('阶梯数是:',end='')
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,end=' ')
      x+=1
    else:
      x+=1

你试着去运行下吧

weiyideid823 发表于 2020-7-11 23:33:47

Twilight6 发表于 2020-7-11 21:44
那就直接这样就好:




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

先感谢大神指定了,小白刚起步。。

Twilight6 发表于 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 又满足了条件...又继续循环打印........
页: [1]
查看完整版本: 关于爱因斯坦阶梯问题