GREENCOKE 发表于 2021-9-3 23:15:33

新人求助!

x = 7
i = 1
y = (x % 6 == 5) and (x % 5 == 4) and (x % 3 == 2) and (x % 2 == 1)

while i <= 100:
   if y = True:
         print ('楼梯阶数是', x)
   else:
         i += 1

请问报错的原因及如何修改呢?

GREENCOKE 发表于 2021-9-3 23:19:07

x = 7
i = 1
test = 0

while i <= 100:
   if (x % 6 == 5) and (x % 5 == 4) and (x % 3 == 2) and (x % 2 == 1):
         test = 1
         print ('楼梯阶数是', x)
         break
   else:
         i += 1
         x = (i+1)*7
         
      

傻眼貓咪 发表于 2021-9-3 23:19:47

不清楚你的代碼用意,不過你的報錯是 == 你寫成一個 =
if y == True

白two 发表于 2021-9-4 00:07:33

赋值才是单个 = 号,判断是否相等是两个 == 号,
如果 前者 本来就是一个得出布尔值的表达式,建议用 is ,
还有,你这逻辑铁定有问题,x 的值肯定是会变的,
即使你把x的值变了,代码也会死循环,因为一旦进入 if 语句,i 的值就不会再改变了,
x = 7
i = 1
y = (x % 6 == 5) and (x % 5 == 4) and (x % 3 == 2) and (x % 2 == 1)

while i <= 100:
    if y is True:
      print('楼梯阶数是', x)
         i += 1
    else:
      i += 1

十六的月亮圆 发表于 2021-9-4 00:21:36

楼主 赋值问题前面兄弟讲清楚了后面还有个问题是:你如果Y不设置成2楼兄弟7步倍数的话
一定记得 把 i <= 100   改成i<=1000这样print(x)就直接是答案了~

buhaozhao 发表于 2021-9-4 08:41:50


语法问题:if y == True:
数学逻辑问题:这个数除以6余5,就必然除以3余2,除以2余1,所以后面两个条件不用加
思路问题:看法2,这个数除以6余5,除以5余4,除以3余2,除以2余1,那么,这个数加上1,就能够被这四个数都整除,所以,只要它加上1能被30整除,这个数就是你要的结果

#方法1
x=1
while x <= 100:
    y = (x % 6 == 5) and (x % 5 == 4) #and (x % 3 == 2) and (x % 2 == 1)
    if y == True:
         print ('楼梯阶数是', x)
    x += 1

#方法2
x=1
while x<=100:
    y=x+1
    if y%30==0:
      print('楼梯阶数是', x)
    x+=1
页: [1]
查看完整版本: 新人求助!