啊特凹 2022-06-20 22:54 采纳率: 100%
浏览 47
已结题

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

img

img

img

img


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

  • 写回答

3条回答 默认 最新

  • 於黾 2022-06-21 08:05
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • Hann Yang 全栈领域优质创作者 2022-06-21 00:01
    关注

    换种想法:

    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
         *
        * *
       *   *
      *     *
     *       *
    *         *
     *       *
      *     *
       *   *
        * *
         *
    
    评论
  • 浪客 2022-06-20 23:25
    关注

    循环输入row后top_row没有修改

    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月30日
  • 已采纳回答 6月22日
  • 创建了问题 6月20日

悬赏问题

  • ¥15 MAX98357A 和stm32通讯后声音异常
  • ¥15 自学计算机组成原理前要学哪些书
  • ¥15 如何仅使用递归法改变链表顺序
  • ¥30 频率与占空比均可调的方波发生器
  • ¥15 VB6.0中PICTUREBOX加载本地图片无法显示
  • ¥100 关于游戏app session获取的问题
  • ¥15 爬虫程序爬取TTGChina网站文章代码
  • ¥35 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。
  • ¥15 如何用下图方法在AMESim中搭建离心泵模型
  • ¥15 C#连接服务器,请求时报Ssl/Tsl未能建立安全通道