鱼C论坛

 找回密码
 立即注册
查看: 1984|回复: 8

[已解决]打印1-100的奇数

[复制链接]
发表于 2018-2-6 11:29:53 | 显示全部楼层 |阅读模式

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

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

x
i = 0
while i <= 100:
    if i % 2 != 0:
        print(i, end=' ')
        i += 1
    else:
        i += 1
上面是老师的答案,为什么我的不行呐
i = 0
while (i % 2 == 1)and(i <=100):
    print(i,end=' ')
    i += 1
else:
    i += 1
最佳答案
2018-2-6 12:22:00
i=0的时候,0除以2等于0,同时没有余数
换句话说   i=0的时候, i%2  的结果是0
那么   i%2==1   的结果是   False
同时   i<=100  的结果是   True
那么  False and  True  的结果是  False
那么  while  False 是不能进入循环的
没有执行while循环,但是执行了else语句中的i+=1
需要注意的是,else语句是在while循环条件为False的时候执行的,并且仅仅执行一次,所以你的程序没有输出

其实对于python来说,清晰胜于晦涩,复合语句虽然能减少行数,但是对于阅读代码的人来说是不好的,而且更容易出问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-6 11:31:52 | 显示全部楼层
如果不是奇数就退出循环了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-6 11:42:39 | 显示全部楼层
while循环的所有条件必须都满足才会进入循环体
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-6 11:48:11 | 显示全部楼层
while (i % 2 == 1)and(i <=100):  你这个条件如果是100以内的偶数的话他就直接跳过了 i=0根本进不去程序啊兄弟
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-6 12:22:00 | 显示全部楼层    本楼为最佳答案   
i=0的时候,0除以2等于0,同时没有余数
换句话说   i=0的时候, i%2  的结果是0
那么   i%2==1   的结果是   False
同时   i<=100  的结果是   True
那么  False and  True  的结果是  False
那么  while  False 是不能进入循环的
没有执行while循环,但是执行了else语句中的i+=1
需要注意的是,else语句是在while循环条件为False的时候执行的,并且仅仅执行一次,所以你的程序没有输出

其实对于python来说,清晰胜于晦涩,复合语句虽然能减少行数,但是对于阅读代码的人来说是不好的,而且更容易出问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-6 13:51:15 | 显示全部楼层
print('----------打印指定区间内的奇数----------')
temp=input('请输入左值:')
i=int(temp)
temp=input('请输入右值:')
j=int(temp)
while i>j:
          print('错误,左值必须小于右值,请重新输入')
          temp=input('请输入左值:')
          i=int(temp)
          temp=input('请输入右值:')
          j=int(temp)
while i<=j:
          if i%2!=0:
                    print(i)
          i=i+1
print('----------结束----------')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-6 14:08:21 | 显示全部楼层
print('----------打印指定区间内的奇数或偶数----------')
temp=input('请输入左值:')
i=int(temp)
temp=input('请输入右值:')
j=int(temp)
while i>j:
          print('错误,左值必须小于右值,请重新输入')
          temp=input('请输入左值:')
          i=int(temp)
          temp=input('请输入右值:')
          j=int(temp)
k=input('奇数>>odd,偶数>>even,请输入:')
while k!='odd'and k!='even':
          print('错误,无法识别字符,请重新输入')
          k=input('奇数>>odd,偶数>>even,请输入:')
while i<=j:
          if k=='odd':
                    if i%2!=0:
                              print(i)
          else:
                    if i%2==0:
                              print(i)
          i=i+1
print('----------结束----------')
改进版…………
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-6 14:17:22 | 显示全部楼层
当i=1,你的就已经退出循环了,可以改成这样
i = 0
while i <=100:
    while i%2==0:
        print(i,end=' ')
        i += 1
    else:
        i += 1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-6 20:23:59 | 显示全部楼层
最主要的问题是你的while条件不对,导致的程序无法进入你期望的循环.
最简单的改动就是你可以把while (i % 2 == 1)and(i <=100):的and改成or就可以了,希望你能回味下,明白过来了,就有很大的进步了,你可以最近一步改一个符号,就让程序不打印101,很简单的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-7 09:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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