十年云烟 2022-05-22 00:31 采纳率: 60%
浏览 41
已结题

问题挺长的,求帮助!用python输出一个矩形,如何对输入值判断后,重新输入,进行再次判断并执行

才学python没多久,不是很会写;现在我想要实现输入一个边长,然后根据这个边长输出一个矩形,在输入边长后,对边长进行判断,然后进行运行输出,但我发现在判断输入的边长被判定不满足条件后就不能通过重新输入后再次运行代码,而是需要我重新点击运行整个程序,才可以再次运行,相当于在判断输入边长不满足条件后就结束了,然后下面的就是我更改后的结果,但还是有问题,求帮助,怎么改(有些写法可能看着让人不太爽,但我也才学没多久,请谅解!)

#封装输出矩形
def bianchang():
    #输入正方形的边长
    rows = int(input("请输入正方形的边长:"))

def juxing():    #输出正方形
    # 输入正方形的边长
    rows = int(input("请输入正方形的边长:"))

    if rows <= 0:    #判断输入边长是否合法
        rows = int(input(f"您的输入有误,请重新输入一个大于0的数:{bianchang()}"))     #不合法,重新输入后返回进行再次判断
    else:
        x = int(input("需要输出实心正方形请输入1,否则请输入其他:"))   #判断需要输出实心正方形还是空心正方形
        if x == 1:    #输出实心正方形
            for i in range(rows):
                for j in range(rows):
                    print("#",end=" ")
                print()
        else:      #输出空心正方形
               #外层for循环控制打印行数
            for i in range(rows):
                   #通过if函数判断行数,筛选出首行和末行
                if i == 0 or i == rows-1:
                        #内层for循环打印出筛选出来的首行和末行
                    for j in range(rows):
                        print("#",end=" ")
                   #else获取除首行和末行之间的行
                else:
                       #for循环控制中间的打印行数
                    for j in range(rows):
                             #if判断列,将首列和未列筛出打印
                        if j == 0 or j == rows-1:
                            print("#",end=" ")
                            #else截留剩余列,打印空格
                        else:
                            print(" ",end=" ")
                print()


juxing()


  • 写回答

2条回答 默认 最新

  • Hann Yang 全栈领域优质创作者 2022-05-22 07:14
    关注

    修改了一下:可以反复输入输出,增加输入0退出。增加用户录入的错误处理

    #封装输出矩形
    def bianchang():
        #输入正方形的边长
        try:
            rows = int(input("请输入正方形的边长(输0退出):"))
        except:
            print('请输入一个整数!')
            rows = ''
        while type(rows)!=int:
            try:
                rows = int(input("请输入正方形的边长(输0退出):"))
            except:
                print('请输入一个整数!')
                rows = ''
        return rows
     
    def juxing():    #输出正方形
        # 输入正方形的边长
        rows = bianchang() #int(input("请输入正方形的边长:"))
     
        if rows == 0:    #判断输入边长是否合法
            return
        elif rows<0:
            print('请输入一个正整数!')
        else:
            x = int(input("需要输出实心正方形请输入1,否则输其他则输出空心正方形:"))   #判断需要输出实心正方形还是空心正方形
            if x == 1:    #输出实心正方形
                for i in range(rows):
                    for j in range(rows):
                        print("#",end=" ")
                    print()
            else:      #输出空心正方形
                   #外层for循环控制打印行数
                for i in range(rows):
                       #通过if函数判断行数,筛选出首行和末行
                    if i == 0 or i == rows-1:
                            #内层for循环打印出筛选出来的首行和末行
                        for j in range(rows):
                            print("#",end=" ")
                       #else获取除首行和末行之间的行
                    else:
                           #for循环控制中间的打印行数
                        for j in range(rows):
                                 #if判断列,将首列和未列筛出打印
                            if j == 0 or j == rows-1:
                                print("#",end=" ")
                                #else截留剩余列,打印空格
                            else:
                                print(" ",end=" ")
                    print()
        juxing()
     
     
    juxing()
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 r语言神经网络自变量重要性分析
  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢