鱼C论坛

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

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

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

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

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

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

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

三角形的轮廓使用“ X”字符,三角形的内部填充有“-”字符。
三角形的底边等于大小,该三角形的底边上的每一行在每一边上都缩小一个字符。
如果未传递任何参数,则应绘制一个默认大小为5的三角形。
三角形的大小必须至少为3。如果传递的值小于3,则将引发ValueError异常
  1. def draw_triangle(size):
  2.     try:
  3.         num = int(size)
  4.         if(num<=2):      
  5.             print("The size is too small.")
  6.             return
  7.         if(num%2!=0):
  8.             for i in range(1,num+1,2):  
  9.                 for j in range(1,num-i+1):
  10.                     print(" ",end='')
  11.                 for j in range(1,i+1):
  12.                     if(j==1 or j==i or i%num==0):
  13.                         print("X",end='')
  14.                     else:
  15.                         print("-",end='')
  16.                 print()
  17.         else:
  18.             for i in range(2,num+1,2):
  19.                 for j in range(1,num-i+1):
  20.                     print(" ",end='')
  21.                 for j in range(1,i+1):
  22.                     if(j==1 or j==i or i%num==0):
  23.                         print(" X",end='')
  24.                     else:
  25.                         print(" -",end='')
  26.                 print()
  27.     except:
  28.         print("ERROR: Invalid Input!")
复制代码




QQ图片20200824233704.png
QQ图片20200824233721.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-24 20:09:33 | 显示全部楼层
你的程序中后半部分的print多了空格
  1. def draw_triangle(size):
  2.     try:
  3.         num = int(size)
  4.         if(num<=2):      
  5.             print("The size is too small.")
  6.             return
  7.         if(num%2!=0):
  8.             for i in range(1,num+1,2):  
  9.                 for j in range(1,num-i+1):
  10.                     print(" ",end='')
  11.                 for j in range(1,i+1):
  12.                     if(j==1 or j==i or i%num==0):
  13.                         print("X",end='')
  14.                     else:
  15.                         print("-",end='')
  16.                 print()
  17.         else:
  18.             for i in range(2,num+1,2):
  19.                 for j in range(1,num-i+1):
  20.                     print(" ",end='')
  21.                 for j in range(1,i+1):
  22.                     if(j==1 or j==i or i%num==0):
  23.                         print(" X",end='')#这里X前多了一个空格
  24.                     else:
  25.                         print(" -",end='')#这里-前多了一个空格
  26.                 print()
  27.     except:
  28.         print("ERROR: Invalid Input!")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


把else后面的代码,用这个试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-24 20:31:23 | 显示全部楼层
  1. print(" X",end='')
复制代码

你这个X前面加了空格,所以缝隙变大了吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-24 20:36:49 | 显示全部楼层
  1.             for i in range(2,num+1,2):
  2.                 for j in range(1,(num-i)//2+1):
  3.                     print(" ",end='')
  4.                 for j in range(1,i+1):
  5.                     if(j==1 or j==i or i%num==0):
  6.                         print("X",end='')
  7.                     else:
  8.                         print("-",end='')
  9.                 print()
复制代码

你的这个改成这样试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

自己写了一遍,看看能不能用的:

  1. def draw_triangle(size=5):
  2.     if type(size) != int:
  3.         print("ERROR: Invalid Input!")
  4.         return
  5.     if size <= 2:
  6.         print("ERROR:The size is too small.")
  7.         return
  8.     count = size % 2
  9.     first = count
  10.     for i in range(size // 2, not count, -1):
  11.         print(' ' * (i - (not (size % 2))), end='')
  12.         if first:
  13.             print('X')
  14.             first = False
  15.             continue
  16.         print(f'X{"-" * count}X')
  17.         count += 2
  18.     print('X' * size)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-26 03:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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