鱼C论坛

 找回密码
 立即注册
查看: 1079|回复: 11

[已解决]006课后习题-爱因斯坦难题

[复制链接]
发表于 2018-5-25 14:10:44 | 显示全部楼层 |阅读模式

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

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

x
我想问下第6讲课后习题爱因斯坦难题,我的答案是这样的
i=0
while i<=10000:
    if (i%2==1) and (i%3==2) and (i%5==4) and (i%6==5) and (i%7==0):
    print(i)
    else:
        i+=1
为啥不对呢?
最佳答案
2018-5-25 14:17:27
1. print(i)要缩进
2.当找到答案后程序进入了无限循环,需去掉else,将i+=1放到print(i)下面,或在print(i)加上break
360截图20180525141121487.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-25 14:17:27 | 显示全部楼层    本楼为最佳答案   
1. print(i)要缩进
2.当找到答案后程序进入了无限循环,需去掉else,将i+=1放到print(i)下面,或在print(i)加上break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 14:36:45 | 显示全部楼层
i=1
while i<=10000:
    if (i%2==1) and (i%3==2) and (i%5==4) and (i%6==5) and (i%7==0):
        flag=1
    else:
        i+=1
if flag==1:
    print(i)
else:
    print("没有答案")
试了下这样也不对,为啥捏?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-25 15:02:00 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2018-5-25 15:14:50 | 显示全部楼层
冬雪雪冬 发表于 2018-5-25 14:17
1. print(i)要缩进
2.当找到答案后程序进入了无限循环,需去掉else,将i+=1放到print(i)下面,或在print(i ...

我是初学者,只学过if 和 else搭配使用,能详细讲解下,只有if没有else的用法吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 15:17:24 | 显示全部楼层
purple76 发表于 2018-5-25 15:14
我是初学者,只学过if 和 else搭配使用,能详细讲解下,只有if没有else的用法吗?

i=0
while i<=1000:
    if (i%2==1) and (i%3==2) and (i%5==4) and (i%6==5) and (i%7==0):
        print(i)
        i+=1
为啥这样也不行呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-25 15:22:04 | 显示全部楼层

刚刚说错了,这样改一下:
  1. i=0
  2. while i<=1000:
  3.     if (i%2==1) and (i%3==2) and (i%5==4) and (i%6==5) and (i%7==0):
  4.         print(i)
  5.     i+=1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-25 15:25:33 | 显示全部楼层
purple76 发表于 2018-5-25 15:14
我是初学者,只学过if 和 else搭配使用,能详细讲解下,只有if没有else的用法吗?

对于if语句else不是必须的。
  1. if 条件:
  2.     语句A
  3. else:
  4.     语句B
  5. 语句C
复制代码


执行顺序为,条件成立:A,C,条件不成立:B,C

没有else
  1. if 条件:
  2.     语句A
  3. 语句C
复制代码


执行顺序,条件成立:A,C,条件不成立:C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 15:27:06 | 显示全部楼层
冬雪雪冬 发表于 2018-5-25 15:22
刚刚说错了,这样改一下:

是不是因为i+=1放的位置不同,为啥会有这样的差别呢?i+=1为啥不能作为If条件判断的结果呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-25 15:33:14 | 显示全部楼层
purple76 发表于 2018-5-25 15:27
是不是因为i+=1放的位置不同,为啥会有这样的差别呢?i+=1为啥不能作为If条件判断的结果呢?

如果i+=1也缩进在if语句下,那么只有条件成立时才加一,而条件不成立时i值不变,会陷入死循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 15:45:16 | 显示全部楼层
冬雪雪冬 发表于 2018-5-25 15:33
如果i+=1也缩进在if语句下,那么只有条件成立时才加一,而条件不成立时i值不变,会陷入死循环。

谢谢你,言简意赅非常清楚。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-25 16:23:57 | 显示全部楼层
purple76 发表于 2018-5-25 15:14
我是初学者,只学过if 和 else搭配使用,能详细讲解下,只有if没有else的用法吗?

i=7
while i < 1000 :
    i = i+1
    if i % 2 == 1:
        if i % 3 == 2:
            if i % 5 == 4:
                if i % 6 ==5:
                    if i % 7 ==0:
                        print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 19:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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