鱼C论坛

 找回密码
 立即注册
查看: 1509|回复: 6

可以帮我改一下这个代码吗?谢谢!

[复制链接]
发表于 2020-8-24 19:38:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 MIQIWEI 于 2020-8-24 20:02 编辑

编写一个名为draw_triangle(size)的函数,该函数采用整数值大小作为参数,并使用打印语句,“ X”(大写X)和“-”字符(和空格)绘制等腰三角形。

三角形的轮廓使用“ X”字符,三角形的内部填充有“-”字符。
三角形的底边等于大小,该三角形的底边上的每一行在每一边上都缩小一个字符。
如果未传递任何参数,则应绘制一个默认大小为5的三角形。
三角形的大小必须至少为3。如果传递的值小于3,则将引发ValueError异常
def draw_triangle(size):
    try:
        num = int(size)
        if(num<=2):      
            print("The size is too small.")
            return
        if(num%2!=0): 
            for i in range(1,num+1,2):  
                for j in range(1,num-i+1): 
                    print(" ",end='')
                for j in range(1,i+1): 
                    if(j==1 or j==i or i%num==0):
                        print("X",end='')
                    else:
                        print("-",end='')
                print()
        else: 
            for i in range(2,num+1,2): 
                for j in range(1,num-i+1):
                    print(" ",end='')
                for j in range(1,i+1): 
                    if(j==1 or j==i or i%num==0):
                        print(" X",end='')
                    else:
                        print(" -",end='')
                print()
    except:
        print("ERROR: Invalid Input!")



QQ图片20200824233704.png
QQ图片20200824233721.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-24 20:09:33 | 显示全部楼层
你的程序中后半部分的print多了空格
def draw_triangle(size):
    try:
        num = int(size)
        if(num<=2):      
            print("The size is too small.")
            return
        if(num%2!=0): 
            for i in range(1,num+1,2):  
                for j in range(1,num-i+1): 
                    print(" ",end='')
                for j in range(1,i+1): 
                    if(j==1 or j==i or i%num==0):
                        print("X",end='')
                    else:
                        print("-",end='')
                print()
        else: 
            for i in range(2,num+1,2): 
                for j in range(1,num-i+1):
                    print(" ",end='')
                for j in range(1,i+1): 
                    if(j==1 or j==i or i%num==0):
                        print(" X",end='')#这里X前多了一个空格
                    else:
                        print(" -",end='')#这里-前多了一个空格
                print()
    except:
        print("ERROR: Invalid Input!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-24 20:30:23 | 显示全部楼层
def DarwX(size):
    halfsize=(size//2)
    for i in range(0,halfsize-1):
        print(' '*(halfsize-1-i)+'X'+'-'*i+'-'*i+'X'+' '*(halfsize-1-i))
    print('X'*size)
DarwX(10)

把else后面的代码,用这个试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-24 20:31:23 | 显示全部楼层
print(" X",end='')
你这个X前面加了空格,所以缝隙变大了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-24 20:36:49 | 显示全部楼层
            for i in range(2,num+1,2):
                for j in range(1,(num-i)//2+1):
                    print(" ",end='')
                for j in range(1,i+1):
                    if(j==1 or j==i or i%num==0):
                        print("X",end='')
                    else:
                        print("-",end='')
                print()
你的这个改成这样试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-24 23:33:15 | 显示全部楼层

自己写了一遍,看看能不能用的:
def draw_triangle(size=5):
    if type(size) != int:
        print("ERROR: Invalid Input!")
        return
    if size <= 2:
        print("ERROR:The size is too small.")
        return
    count = size % 2
    first = count
    for i in range(size // 2, not count, -1):
        print(' ' * (i - (not (size % 2))), end='')
        if first:
            print('X')
            first = False
            continue
        print(f'X{"-" * count}X')
        count += 2
    print('X' * size)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 03:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表