灿烂的小雏菊 发表于 2020-6-10 17:23:55

第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


我自己写出来的程序:
temp = input('请输入一个整数:')
n = int(temp)
while n:
    while n:
      print(' ', end = '')
      n = n - 1
    while t:
      print('*', end = '')
      t = t - 1
    print()
    n= n - 1

为什么打出第一行之后就一直循环打出空格
参考答案中 j = number的作用是什么呢

Twilight6 发表于 2020-6-10 17:31:52

为什么打出第一行之后就一直循环打出空格
因为你在第二个循环里 ,退出循环的条件就是 n = 0 时候 导致你 大循环最后 n= n - 1= -1

而Python 的数字中 只有 0 为 False , 其他均为 True,所以会无限死循环因为你的 n 每次在大循环都会 - 1 ,永远不等于 0

参考答案中 j = number的作用是什么呢
做个临时替代number的参数,来打印 * 号 ,因为答案的第二个小循环里 循环条件是 j 而且每次循环会 -1 用来打印 * 号

如果你直接用 number 来,会导致和你上题一样 进入死循环,因为退出小循环时候 number = 0,你最后还 - 1

而且这样不符合要求,如果你最后没 -1 就会导致你大循环只循环一次

xiaosi4081 发表于 2020-6-10 17:43:04

Twilight6 发表于 2020-6-10 17:31
因为你在第二个循环里 ,退出循环的条件就是 n = 0 时候 导致你 大循环最后 n= n - 1= -1

而Python...

两天80个最佳,这是不是太快了{:10_245:}

Twilight6 发表于 2020-6-10 17:46:02

xiaosi4081 发表于 2020-6-10 17:43
两天80个最佳,这是不是太快了

{:10_245:}不 两天才 40个

xiaosi4081 发表于 2020-6-10 17:48:47

Twilight6 发表于 2020-6-10 17:46
不 两天才 40个

40个?!!!!!!!!!!!!{:10_285:}

灿烂的小雏菊 发表于 2020-6-10 17:57:30

Twilight6 发表于 2020-6-10 17:31
因为你在第二个循环里 ,退出循环的条件就是 n = 0 时候 导致你 大循环最后 n= n - 1= -1

而Python...

{:5_106:}{:5_106:}{:5_106:}很可!!懂了!!感谢大佬!!
页: [1]
查看完整版本: 第004讲课后作业动动手第二题有不明白的地方