鱼C论坛

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

04课 i和number的关系没看懂

[复制链接]
发表于 2016-10-25 05:31:43 | 显示全部楼层 |阅读模式

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

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

x
04课的课后练习,是求输入一个整数,并打印比它小的所有整数。

temp = input('请输入一个整数:')
number = int(temp)
i = 1                                     # 请问i =1的作用是什么?
while number:                        # while number的意思是什么?
    print(i)
    i = i + 1                            #这里i = i+1的区间是如何定义的?
    number = number - 1        # number -1和i有什么关系,为什么当我把number = number -2 时,就成为无限循环了?

如果输入5,能够结合程序解释一下程序的实现过程吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-25 09:35:39 | 显示全部楼层
同为新手,要是要我设计,我设计不出这代码。但是让我读,我能明白什么意思。
如果输入5,
第一步:5被赋值给temp
第二步:temp被int给转化为int格式的数字,并赋值给number
第三步:此时number=5,在while循环中,条件不是0的时候,默认为真。也就是说while循环此时可以进入循环了。
第四步:打印i,此时i=1,你会看到第一个被打印出的整数1
第五步:i加上1,此时i=2了
第六步:number被减去1,此时number=4
---到此时循环结束一次,因为此时number=4,依然是非零,所以条件依然为真,循环继续---
第七步:打印i,此时i已经等于2了,所以打印出2来。
第八步:i继续加上1,i=3了
第九步:number减去1,等于3
---循环又结束一次,number此时等于3,依然是非零,所以条件依然为真,循环继续---
如此,每循环一次,i会被打印一次,并被加上1
而number会每次都被减去1,直到减成0为止,while的条件就成为假Flase,循环停止。
我描述的有些多,希望你能明白。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-25 14:35:07 | 显示全部楼层
回答太多,我来简化。
i是用来计数的,因为上面有print(i),每运行一次加一
while是用来判断number的值的,当且仅当number = (0;None;False)中的一个时,条件为假,跳出循环
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-25 14:57:18 | 显示全部楼层
循环中用number控制循环次数,用i递增来显示1~number的数值。所以一个要 -= 1, 一个要 += 1.
也可以简化一下:
  1. temp = input('请输入一个整数:')
  2. number = int(temp)
  3. n = number + 1                                 
  4. while number:                        
  5.     print(n - number)
  6.     number = number - 1
复制代码


至于你说的 -2时循环不终止是因为循环到0时才结束,而-2可能是5 3 1 -1 -3,没有0。所以严格的写法是:
while number > 0:   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-26 04:51:43 | 显示全部楼层
xinshouxuexi 发表于 2016-10-25 09:35
同为新手,要是要我设计,我设计不出这代码。但是让我读,我能明白什么意思。
如果输入5,
第一步:5被赋 ...

谢谢你的解释,步骤解释的很详细。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-26 04:55:29 | 显示全部楼层
本帖最后由 changhaitian 于 2016-10-26 05:05 编辑
ycgzs98789 发表于 2016-10-25 14:35
回答太多,我来简化。
i是用来计数的,因为上面有print(i),每运行一次加一
while是用来判断number的值的 ...


谢谢解答。但是number才是用来计数的吧?i=i+1设置的是数的排序规律吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-26 05:14:18 | 显示全部楼层
冬雪雪冬 发表于 2016-10-25 14:57
循环中用number控制循环次数,用i递增来显示1~number的数值。所以一个要 -= 1, 一个要 += 1.
也可以简化一 ...

谢谢版主。高手就是高手!
1. i = 1,其实这里控制的以1为基点,每次加1递增?
2. while number: =》 当 number != 0时执行命令?
3. number = number -1 限制循环的次数,比如说输入5,循环5 次,当number = 0时跳出循环?

大概明白了,还需要不断练习!抱抱!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-26 08:18:17 | 显示全部楼层
学习了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-26 09:31:43 | 显示全部楼层
changhaitian 发表于 2016-10-26 04:55
谢谢解答。但是number才是用来计数的吧?i=i+1设置的是数的排序规律吧?

i是用来计数的,number是条件,当number -=2的时候怎么能计数呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-26 10:12:30 | 显示全部楼层
i是用先打印显示,number是用来控制循环体
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-26 10:17:03 | 显示全部楼层
学习了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 20:34:55 | 显示全部楼层
学到了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-23 13:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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