MIQIWEI 发表于 2020-8-24 19:38:13

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

本帖最后由 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!")



sunrise085 发表于 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!")

疾风怪盗 发表于 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后面的代码,用这个试试

疾风怪盗 发表于 2020-8-24 20:31:23

print(" X",end='')
你这个X前面加了空格,所以缝隙变大了吧

疾风怪盗 发表于 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()
你的这个改成这样试试

Twilight6 发表于 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)
页: [1]
查看完整版本: 可以帮我改一下这个代码吗?谢谢!