图图666 发表于 2020-11-10 22:39:46

关于python第四讲课后练习题

temp = input("请输入一个整数:")
number = int(temp)
while number:
    i = number - 1
    while i:
      print('',end ='')
      i = i-1
    j = number
    whilej:
      print('*',end ='')
      j = j - 1
    print()
    number = number - 1
             这道题是怎么说,有点看不懂,求大神讲解

昨非 发表于 2020-11-10 22:42:47

本帖最后由 昨非 于 2020-11-10 22:48 编辑

temp = input('请输入一个整数:') #输入,input返回字符串
number = int(temp)            #化为整型,以便使用
while number:                #当number不为0时,循环一个number对应一行
    i = number - 1         
    while i:      #循环打印i个空格
      print(' ', end = '')
      i = i - 1
    j = number   #同一行,循环打印j个*
    while j:
      print('*', end = '')
      j = j - 1
    print()       #相当于换行 ,对应下一行
    number = number - 1

昨非 发表于 2020-11-10 22:49:15

满意的话,记得给个最佳答案

Twilight6 发表于 2020-11-10 23:09:29


你的代码有个小错误就是: 你的 while i 循环体中的 print 函数打印的是空字符串,而正确的是 print 打印的是一个空格

代码已经修改,解释看注释哈:

temp = input("请输入一个整数:")
number = int(temp)
while number:         # while 条件循环,当条件不满足时不进入或退出循环,即 number 为 0 时退出循环
    i = number - 1      # 找个临时变量来统计需要打印的空格数,空格数正好等于每行星星数 - 1
    while i:            # 同上 while 循环解释
      print(' ',end ='') # 打印一个空格,end = '' 空字符串表示不换行,所以此时打印的空格都在同一行
      i = i-1         # 每次循环 -1 因为一次循环只打印一个空格,则 i 用于限制打印空格数
    j = number          # 临时变量记录星星数
    whilej:
      print('*',end ='') # 每次循环打印一个 * ,直到 j == 0 退出循环
      j = j - 1
    print()
    # 上面两个小循环都打印结束后就说明一行的空格和 * 号都打印完成了,加个 print() 用于换行
    number = number - 1

上面的代码进行简化,你看看下面的代码会不会更有助于你的理解:
temp = input("请输入一个整数:")
number = int(temp)
while number:                        # while 条件循环,当条件不满足时不进入或退出循环,即 number 为 0 时退出循环
    print(' '*(number-1)+'*'*number) # 空格数正好等于每行星星数 - 1,所以这里空格数成 number - 1 ,而 * 号乘以 number
    number = number - 1            # 一行打印结束,准备开始下一行

陈小东 发表于 2021-5-23 21:42:49

Twilight6 发表于 2020-11-10 23:09
你的代码有个小错误就是: 你的 while i 循环体中的 print 函数打印的是空字符串,而正确的是 print 打印 ...

简化的代码容易理解多了,但是还有个问题,以后可以直接使用简化代码吗?因为小鱼的太复杂感觉记不下来,我看代码都是靠记。
页: [1]
查看完整版本: 关于python第四讲课后练习题