寒暄371 发表于 2020-9-30 10:43:44

006讲动动手第2题,我自己写的代码怎么总是过不去?

2. 爱因斯坦的难题
爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
(小甲鱼温馨提示:步子太大真的容易扯着蛋~~~)

题目:请编程求解该阶梯至少有多少阶?


下面是我写的,问题出在哪里?
i=1
whilei<100 :
      j=7*i
    if(j%2==1) and (j%3==2) and (j%5==4) and (j%6==5):
      print ("这个阶梯一共有:"+7i+"级")
    else:
         i=i+1


下面是报错信息

LuLD 发表于 2020-9-30 10:56:41

本帖最后由 LuLD 于 2020-9-30 11:00 编辑

缩进问题,不知道你用的是什么编辑器


whilei<100 :
      j=7*i
    if(j%2==1) and (j%3==2) and (j%5==4) and (j%6==5):
首先 这两行应该在同一位置的
其次
print ("这个阶梯一共有:"+7i+"级")这个是有错误的,写在这儿会被认为是 字符,那就会报错,字符应该加上引号
然后就是 i 的类型是 int print里是字符与字符链接,这个 i 需要 转换类型 str(i),这样才行
根据题目来看应该是j

最后
一旦if 判断成立,将会一直打印 print里的内容,是给死循环,应该在后面加上 break 中止寻魂

这是我改好的
i=1
while i<100 :
    j=7*i
    if(j%2==1)and(j%3==2)and(j%5==4)and(j%6==5):
      print("这个阶梯一共有:"+ str(j) +"级")
      break
    else:
      i=i+1

寒暄371 发表于 2020-9-30 11:13:20

非常感谢!确实如你所说,出现了两个错误,我是新手,还望多多指教

LuLD 发表于 2020-9-30 13:12:47

寒暄371 发表于 2020-9-30 11:13
非常感谢!确实如你所说,出现了两个错误,我是新手,还望多多指教

共同进步
页: [1]
查看完整版本: 006讲动动手第2题,我自己写的代码怎么总是过不去?