鱼C论坛

 找回密码
 立即注册
查看: 1402|回复: 10

[已解决]第006讲动动手1程序中的疑惑

[复制链接]
发表于 2017-11-10 15:18:42 | 显示全部楼层 |阅读模式

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

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

x
题目:请用程序打印出0-100的奇数

  1. i=0
  2. while i<=100:
  3.     if i % 2!=0:
  4.         print(i,end='')
  5.         i=i+1
  6.     else:
  7.         i=i+1
  8.         
复制代码


这里print(i,end='')中,  如果没有 end='' 我的程序打印是竖列的,有了 end=''我的程序是横着排列的。这里 end='' 具体什么意思,怎么理解?

if函数里 else条件下也是 i=i+1  ,但是如果没有 else条件 我程序起来就没有打印东西,这个是为什么?
最佳答案
2017-11-10 15:33:01
end是print是输出完毕后加上的字符串,缺省是\n,即回车换行,=''就是什么也不加。
如果没有else则i为偶数时,不会增加循环一直进行下去。可以改为:
  1. i=0
  2. while i<=100:
  3.     if i % 2!=0:
  4.         print(i,end='')
  5.     i=i+1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-10 15:33:01 | 显示全部楼层    本楼为最佳答案   
end是print是输出完毕后加上的字符串,缺省是\n,即回车换行,=''就是什么也不加。
如果没有else则i为偶数时,不会增加循环一直进行下去。可以改为:
  1. i=0
  2. while i<=100:
  3.     if i % 2!=0:
  4.         print(i,end='')
  5.     i=i+1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-10 15:42:06 From FishC Mobile | 显示全部楼层
1 print函数的end参数指定了打印的分割符号,默认是换行,用 end='' 表示没有分割
2 如果没有else,进入循环时i的值为0,if判断为假,而且也没有在循环体没改变,所以变成了死循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-10 15:42:16 | 显示全部楼层
end  = ' ',就是打印不换行,就是你所谓的竖列变横列。
因为你要检测1~100的奇数,无论这个数是奇数还是偶数它都要加1进行递增,而如果你去掉else:之后,i=0不符合if语句,又没有else条件使它递增,所以没有输出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-10 16:32:15 | 显示全部楼层
阿撩 发表于 2017-11-10 15:42
end  = ' ',就是打印不换行,就是你所谓的竖列变横列。
因为你要检测1~100的奇数,无论这个数是奇数还是 ...

哦哦,好的。“无论这个数是奇数还是偶数它都要加1进行递增,而如果你去掉else:之后,i=0不符合if语句,又没有else条件使它递增,所以没有输出。”
那我奇数加1,不就变成偶数了? 那偶数的话就不打印了。
那第一步,i=0的时候进入循环,最后输出i=1
那第二步,i=1的时候进入循环,if  1%2 !=0 , print(1),i=1+1=2 ;

为什么说else条件下没有递增? if条件下就有 i=i+1,这个不是也是递增条件吗?

程序代码少了一段。标准的是下面的。
  1. i=0
  2. while i<=100:
  3.     if i % 2!=0:
  4.         print(i,end='')
  5.         i=i+1
  6.     else:
  7.         i=i+1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-10 16:34:15 | 显示全部楼层
冬雪雪冬 发表于 2017-11-10 15:33
end是print是输出完毕后加上的字符串,缺省是\n,即回车换行,=''就是什么也不加。
如果没有else则i为偶数 ...

1. end='' 这个明白了。
2.原本的程序如下:
  1. i=0
  2. while i<=100:
  3.     if i % 2!=0:
  4.         print(i,end='')
  5.         i=i+1
  6.     else:
  7.         i=i+1
复制代码


可以这么理解吗? if 条件下 print(i,end='') 下面的i=i+1 这里是给奇数递增?   else 下的i=i+1给偶数递增?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-10 16:41:16 | 显示全部楼层
zhuoyue65 发表于 2017-11-10 16:34
1. end='' 这个明白了。
2.原本的程序如下:

是的,所以我改的就可以都加一了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-10 16:45:07 | 显示全部楼层
冬雪雪冬 发表于 2017-11-10 16:41
是的,所以我改的就可以都加一了。

好的,谢谢了。刚才看到差别了。 缩进了一格。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-10 16:55:44 | 显示全部楼层
zhuoyue65 发表于 2017-11-10 16:32
哦哦,好的。“无论这个数是奇数还是偶数它都要加1进行递增,而如果你去掉else:之后,i=0不符合if语句, ...

当你的i= 0时,if语句判断为假,所以不执行i= i+1,此时如果没有else条件的话,它就不会递增了。当有else下这个i=i+1的话,i就会继续增长。if里的i=i+1要if条件判断为真时才执行,那为假时怎么办呢?所以有else这个语句。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-13 14:55:31 | 显示全部楼层
i=0
while i<=100:
    if i % 2!=0:
       print(i+1,end='')
    i=i+1
这样就可以打出所有偶数了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-17 20:02:45 | 显示全部楼层

谢谢,之前已经解决了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 16:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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