2915658109 发表于 2020-8-31 19:19:07

求助啊。老版第四课课后题

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                                                          哪位大神能讲解下这段代码。。为啥星号递减下去而且星星的左边坐标一直随着星号递减增加的。。看不懂啊

2915658109 发表于 2020-8-31 19:22:00

大神救我

昨非 发表于 2020-8-31 19:24:18


temp = input('请输入一个整数:')
number = int(temp)
while number:         #外循环
    i = number - 1
    while i:#这层循环4到0内循环前半部分
      print(' ', end = '')#每行打印空格
      i = i - 1
    j = number #这层循环5到0
    while j:
      print('*', end = '')#每行打印*号(在空格后)内循环后半部分
      j = j - 1
    print()
    number = number - 1   

见注释,如果解决了,记得给个最佳

昨非 发表于 2020-8-31 19:28:05

本帖最后由 昨非 于 2020-8-31 19:31 编辑

“为啥星号递减下去而且星星的左边坐标一直随着星号递减增加的”的原因在于:
第8行i=i-1的同时(同一外循环下)第1行也执行了 j=j-1
也就意味着,外循环对应打印一行,内循环每次先打印空格,后打印*,每行都各自比前一行少一个

2915658109 发表于 2020-8-31 19:28:10

昨非 发表于 2020-8-31 19:24
见注释,如果解决了,记得给个最佳

哎嘿。虽然目前没理解透。但是貌似大佬之前也是你回答的我。

疾风怪盗 发表于 2020-8-31 19:29:46

temp = input('请输入一个整数:')# 接收输入,为字符串型
number = int(temp)# 强制转换字符串型为数值型,转换失败会报错
while number:# 当录入的数字大于0时执行while循环,等于0时判断为Flase,while循环不执行

    i = number - 1# 赋值i为number-1
    while i:# 当录入的数字大于0时执行代码,等于0时为Flase不执行
      print(' ', end='')# 打印输出空格(非空值),结尾不换行
      i = i - 1# i递减,一直到0时while循环不执行

    j = number# 赋值j为number
    while j:# 当录入的数字大于0时执行代码,等于0时为Flase不执行
      print('*', end='')# 打印输出字符型“*”,结尾不换行
      j = j - 1# j递减,一直到0时while循环不执行

    print()# 输出空的一行,可写可不写
    number = number - 1# number递减,一直到0时不执行代码
页: [1]
查看完整版本: 求助啊。老版第四课课后题