Anonymous 发表于 2021-9-21 19:56:16

python课后作业004讲改进我们的小游戏

动动手第二题的答案

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

while i 不应该只是判断True或False的吗? 那为什么print空格的时候会正好打印7个空格呢?下面的while j 也是,为啥就正好打印8个*呢?

还有就是在判断while i 的时候,第一次为7,然后执行 i= i-1 ,再然后为什么就往下执行 while j 了呢? 不应该再继续回来执行 while i 吗?不是说while 就是一直循环的吗?也没有break,怎么就跳出了while i ,执行 while j 了呢?

最后就是我觉得看完每一讲的视频之后,做课后作业真的困难,感觉课程作业的安排并不适合完全没有任何基础的人。希望各位能够提供一些学习经验,谢谢!

白two 发表于 2021-9-21 20:04:54

判断里面主要不是 空 或者 0,就为真,否则为假,while i 等价于 while i != 0
执行while i 的时候并没有执行while j ,而是等 i 减到 0 后跳出循环后,再执行的 while j

heidern0612 发表于 2021-9-21 20:05:57

while i 表示的是i不为零的缩写。

只要i不为零,程序就一直循环.

也就是说,只要在i为零的时候,while循环才被打破。

因为不能死循环的缘故,所以每次循环都有i的自减1,直到i为零的时候,循环结束。

下面j也是同理。

二十又几 发表于 2021-9-21 20:18:35

白two 发表于 2021-9-21 20:04
判断里面主要不是 空 或者 0,就为真,否则为假,
执行while i 的时候并没有执行while j ,而是等 i 减到...

那如果是等到 i 为零后才跳出循环,为什么只打印7个空格,而不是7+6+5+4+3+2+1个空格呢?

二十又几 发表于 2021-9-21 20:20:27

heidern0612 发表于 2021-9-21 20:05
while i 表示的是i不为零的缩写。

只要i不为零,程序就一直循环.


你说的这个我懂,我不懂的是为什么 i还没为0 的时候,就执行 while j 了?谢谢

白two 发表于 2021-9-21 20:46:49

二十又几 发表于 2021-9-21 20:20
你说的这个我懂,我不懂的是为什么 i还没为0 的时候,就执行 while j 了?谢谢

    while i:
      print(' ', end = '')
      i = i - 1
你看哈,每次循环只打印一个空格
循环了 7 次,所以打印 7 个空格

jieshao 发表于 2021-9-22 07:58:51

记得有一集讲了0是等于False的,所以在while i 的循环里面,i = 0 = False,循环就退出来了。就继续往下执行 j 的循环。

晴雨皆宜 发表于 2021-9-22 12:31:51

开卷有益,多多益善····

二十又几 发表于 2021-9-22 20:37:23

白two 发表于 2021-9-21 20:46
你看哈,每次循环只打印一个空格
循环了 7 次,所以打印 7 个空格

懂了,大哥你这么一说 我瞬间茅塞顿开,感谢!感谢!

yg飞许 发表于 2022-12-30 04:42:49

白two 发表于 2021-9-21 20:46
你看哈,每次循环只打印一个空格
循环了 7 次,所以打印 7 个空格

感谢大哥
页: [1]
查看完整版本: python课后作业004讲改进我们的小游戏