鱼C论坛

 找回密码
 立即注册
查看: 2981|回复: 12

004讲课后题 有一点不太明白

[复制链接]
发表于 2019-12-5 21:47:23 | 显示全部楼层 |阅读模式

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

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

x
动动手第二题
为了输出这个
   请输入一个整数:8
********
*******
******
*****
****
***
**
*
则应该:
temp = input("请输入一个整数:")
number = int(temp)
while number:
    i = number - 1
    while i:
        print(' ',end = '')
        i = i -1
    j = number
    while j:
        print('*',end = '')
        j = j - 1
    print()
    number = number - 1

此时
   i = number - 1
    while i:
        print(' ',end = '')
        i = i -1
在这个循环里 i最开始为number-1=7 的话  print(' ',end = '') 表示连着输出7个空格

但是这一讲的前面课后第一题
i = 10
while i:
    print('我爱鱼C!')
    i = i - 1
表示的却是现  i = 10,执行  print('我爱鱼C!')  ,打印出  我爱鱼C!  ,再执行 i = i - 1
得  i =  9,执行   print('我爱鱼C!')  ,打印出  我爱鱼C!  ,再执行 i = i - 1
得  i =  8,执行   print('我爱鱼C!')  ,打印出  我爱鱼C!  ,再执行 i = i - 1
.
.
.
.
这样循环,当 i = 0 时退出循环
如果按照上一个题的逻辑 应该是 当i=10的时候 执行的是输出10个我爱鱼C,当i=9的时候执行输出9个我爱鱼C啊????
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-12-5 21:48:56 | 显示全部楼层
原题是这个  上面打错了
请输入一个整数:8
       ********
      *******
     ******
    *****
   ****
  ***
**
*
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-5 22:13:17 | 显示全部楼层
i控制空格数,j控制“*”
Number-1是规律,有number个‘*’,就有number-1个空格
两个while 的逻辑没有什么不同啊,到底想问什么。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-5 22:20:34 From FishC Mobile | 显示全部楼层
        “如果按照上一个题的逻辑 应该是 当i=10的时候 执行的是输出10个我爱鱼C,当i=9的时候执行输出9个我爱鱼C。。。。。。”
          楼主差矣,是每次循环只打印 1 个 "我爱鱼C",整个循环过程总共打印出 10 个 "我爱鱼C"。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-5 22:32:32 | 显示全部楼层
jackz007 发表于 2019-12-5 22:20
“如果按照上一个题的逻辑 应该是 当i=10的时候 执行的是输出10个我爱鱼C,当i=9的时候执行输出9个 ...

想问问 同样最后一步 是i-1
为什么第一个 在下一个i-1循环之前 是直接打出了7个空格 下一个循环前面打出6个空格
而第二个题 在下一个i-1循环之间 只打出了 一个我爱鱼C 下一个循环还是只打出一个我爱鱼C
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-5 22:35:43 | 显示全部楼层
WXF666 发表于 2019-12-5 22:13
i控制空格数,j控制“*”
Number-1是规律,有number个‘*’,就有number-1个空格
两个while 的逻辑没有什 ...

可能我上面说的太罗嗦了
想问问 同样最后一步 是i-1
为什么第一个 在下一个i-1循环之前 是直接打出了7个空格加星号  下一个循环前面打出6个空格加星号
而第二个题 在下一个i-1循环之间 只打出了 一个我爱鱼C 下一个循环还是只打出一个我爱鱼C
明明是一样的流程 第一道题加起来一共打了7+6+5+4+3+2+1个空格 而第二道题一共只打了10个我爱鱼C
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-6 11:15:16 | 显示全部楼层
有始有终 发表于 2019-12-5 22:35
可能我上面说的太罗嗦了
想问问 同样最后一步 是i-1
为什么第一个 在下一个i-1循环之前 是直接打出了7 ...

不一样,第一个有end =‘’,不用换行就可以直接继续在后面打印,你第二个while的print后面加上end= ‘’试试就知道了

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-6 19:12:43 | 显示全部楼层
有始有终 发表于 2019-12-5 22:35
可能我上面说的太罗嗦了
想问问 同样最后一步 是i-1
为什么第一个 在下一个i-1循环之前 是直接打出了7 ...

第一道题是双层循环,与第二题不同,第二题是单层循环。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-27 08:47:05 | 显示全部楼层
尝试回答你帖子中的这个疑问:“如果按照上一个题的逻辑 应该是 当i=10的时候 执行的是输出10个我爱鱼C,当i=9的时候执行输出9个我爱鱼C啊????”
我运行代码后得到的结论是,的确会打印出10个"我爱鱼C!"。
另外说实话没有太明白你的问题。。建议首先总结抛出你的问题,比如“你认为... 实际结果...我的疑问是...”
修改代码加入了print当前i值如下,希望能帮上忙。
  1. i = 10
  2. while i:
  3.     print('我爱鱼C!')
  4.     print('此时i值为:', i, '进入下一次循环')
  5.     i = i - 1
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-28 11:37:16 | 显示全部楼层
我理解的是while i和while j都是一个单独的循环,当while i循环一直运行直至不满足条件后才会进行while j循环,所以才会是多个*而不是一个*
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-28 13:18:55 | 显示全部楼层
本帖最后由 陌上酒 于 2019-12-28 13:21 编辑

第一个课后题里面再给i赋值的时候就已经是‘i = number -1’了,
所以这个循环

while number:
    i = number - 1
    while i:
        print(' ',end = '')
        i = i -1
比这个循环

j = number
    while j:
        print('*',end = '')
        j = j - 1
    print()
    number = number - 1
和下面另一题里的循环是少一次的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-28 21:03:09 | 显示全部楼层
i = 10
while i:
    print('我爱鱼C!')
    i = i - 1
表示的却是现  i = 10,执行  print('我爱鱼C!')  ,打印出  我爱鱼C!  ,再执行 i = i - 1
得  i =  9,执行   print('我爱鱼C!')  ,打印出  我爱鱼C!  ,再执行 i = i - 1
得  i =  8,执行   print('我爱鱼C!')  ,打印出  我爱鱼C!  ,再执行 i = i - 1
=========================================
以上 如果你想当i=10的时候 执行的是输出10个我爱鱼C,当i=9的时候执行输出9个我爱鱼C,那么就要改成print('我爱鱼C!'*i)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-23 22:41:29 | 显示全部楼层
i=int(input("请输入一个整数:"))

while i>0:
    print(" "*i+"*"*i)
    i=i-1

我的代码是这样的,觉得更加简洁一点。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-2 19:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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