帮忙优化下python代码,加下输入的异常处理 200

importrea,b=re.split(',||,|',input('请输入2个数字,用逗号或空格隔开:'))a,b=int(a),int(b)i=1whilei<=a... import re
a, b = re.split(',| |,| ', input('请输入2个数字,用逗号或空格隔开:'))
a, b = int(a), int(b)
i = 1
while i <= a:
print(" " * (a - i), end="")
if i == 1 or i == a:
y = 1
while y <= b:
print("*", end="")
y += 1
else:
print("*", end="")
j = 1
while j <= (b - 2):
print(" ", end="")
j += 1
print("*", end="")
i += 1
print()
展开
 我来答
博迷月听鸟09
2019-03-14 · 超过21用户采纳过TA的回答
知道答主
回答量:39
采纳率:55%
帮助的人:27.7万
展开全部

代码主体部分给你整理到非常简洁了。另外在输入这块加了一重验证,非法输入(输入的不是数字、或者不是两个数字、或者没有用逗号空格隔开、或者数字小于等于0等)会要求用户重新输入。效果如下:

代码如下:

import re

def read_input():
    while 1:
        try:
            usr_input = input("请输入2个数字,用逗号或空格隔开:")
            a, b = map(int, re.split("[\s,]", usr_input))
            if a <= 0 or b <= 0:
                raise ValueError("长和宽均需要大于0!")
            break
        except ValueError:
            print("请确认输入的是两个数字, 并且中间有逗号或者空格!")
    return a, b

a, b = read_input()

for i in range(a):
    if i == 0 or i == a - 1:
        body = "*" * b
    else:
        body = "*" + " " * (b - 2) + "*"
    print(" " * (a - i - 1) + body)
gx03abc
2019-03-14 · TA获得超过538个赞
知道小有建树答主
回答量:415
采纳率:83%
帮助的人:186万
展开全部
你这样的代码没法看 python 的空格缩进和换行也是代码的一部分

请把准确的代码或者截图重发一次 或者说明白你要达到什么目的
追问
我也很绝望啊,复制粘贴进来就是这样了。
追答
# 你在代码可以这样写 然后没明白你要做什么会有什么异常? 比如输入的值是负数或是什么?
a, b = 3, 6
for i in range(1, a + 1):
    print(' ' * (a - i), end = '')
    if i == 1 or i == a:
        for y in range(1, b + 1):
            print("*", end = '')
    else:
        print("*", end = '')
        for j in range(b - 2):
            print(' ', end = '')
        print("*", end = '')
print()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
猪哥66
2019-03-14
知道答主
回答量:25
采纳率:0%
帮助的人:2.7万
展开全部

请参考我的另一个回答答案,直接复制代码可运行:

import re
 
 
def is_right_triangle(*nums: float) -> bool:
    """直角三角形判断"""
    if len(nums) != 3:
        return False
    new_nums = sorted(nums)
    return new_nums[0]**2 + new_nums[1]**2 == new_nums[2]**2
 
 
def triangle():
    """三角形判断"""
    try:
        a, b, c = [float(num) for num in re.split(',| |,| ', input("请输入3个数字,用逗号或空格隔开:"))]
    except:
        print('输入非法数值!')
    else:
        # 判断是否可以组成三角形
        if a + b > c and a + c > b and b + c > a:
            if a == b == c:
                print('%.2f,%.2f,%.2f能组成等边三角形' % (a, b, c))
            elif a == b or a == c or b == c:
                if is_right_triangle(a, b, c):
                    print('%.2f,%.2f,%.2f能组成等腰直角三角形' % (a, b, c))
                else:
                    print('%.2f,%.2f,%.2f能组成等腰三角形' % (a, b, c))
            elif is_right_triangle(a, b, c):
                print('%.2f,%.2f,%.2f能组成直角三角形' % (a, b, c))
            else:
                print('%.2f,%.2f,%.2f能组成普通三角形' % (a, b, c))
        else:
            print('%.2f,%.2f,%.2f不能组成三角形' % (a, b, c))
 
 
triangle()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小古娱乐实训
2019-03-14 · TA获得超过175个赞
知道小有建树答主
回答量:318
采纳率:54%
帮助的人:77.6万
展开全部
python的异常处理是try execpt自己研究下,比较简单。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2019-03-14 · TA获得超过462个赞
知道答主
回答量:764
采纳率:11%
帮助的人:66.5万
展开全部
坦白说这个我不是很懂,希望哪位大神能帮助到解决一下?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式