进入while 循环再跳出循环执行出现异常,如何解决?(语言-python)

img

img

img

img


代码正常进入while循环后,当跳出while循环时执行后面代码就出异常了,不进入while循环执行正常。问题出在哪里?

你反复要求输入row的值,才会出现这样的情况
把while之前的input拿到while里面去,保证只有一个地方处理输入,避免代码冗余,就能减少很多问题
根源其实是top_row利用了row的值做计算,而row的值改变后top_row并没有重新赋值导致的
而更根源的问题就是因为你同样的代码复制来粘贴去,少粘了一行就会出bug
你应该封装一下,或者优化你的逻辑,不要总是出现重复的代码段

换种想法:

def diamond(n):
    for i in [*range(1,(n+2)//2),*range((n+2)//2,0,-1)]:
        print(' '*((n+2)//2-i) + ('*' if i==1 else ('*'+' '*(2*i-3)+'*')))

for i in range(1,12,2):
    print(i)
    diamond(i)

输出:
1
*
3
 *
* *
 *
5
  *
 * *
*   *
 * *
  *
7
   *
  * *
 *   *
*     *
 *   *
  * *
   *
9
    *
   * *
  *   *
 *     *
*       *
 *     *
  *   *
   * *
    *
11
     *
    * *
   *   *
  *     *
 *       *
*         *
 *       *
  *     *
   *   *
    * *
     *

循环输入row后top_row没有修改