鱼C论坛

 找回密码
 立即注册
查看: 173|回复: 5

[已解决]求问 12题错在哪里

[复制链接]
发表于 2025-8-4 15:37:44 | 显示全部楼层 |阅读模式

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

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

x
我的代码
n = int(input("请输入三角形的层数:"))
i = 1
while i <= n:
    j = 0
    while j < n-1:
        print(" ", end="")
        j = j + 1

    j = 0
    while j < 2*i-1:
        print("*", end="")
        j = j + 1

    print("")
    i = i + 1
我的效果:请输入三角形的层数:6
     *
     ***
     *****
     *******
     *********
     ***********
>>>
答案效果:请输入三角形的层数:3
             *
           ***
         *****
最佳答案
2025-8-4 20:36:40
本帖最后由 jackz007 于 2025-8-4 22:29 编辑
  1. . . . . . .
  2. while i <= n:
  3.     j = 0
  4.     while j < n - i :   # 这一句(第5行)有错,已经修改正确   
  5. . . . . . .
复制代码

    Python 语言中的字符(串)重复可以使用字符(串)乘法,再结合字符串加法,可以大幅度简化代码。
    【参考代码】:
  1. n = int(input("请输入三角形的层数:"))
  2. for i in range(n) :
  3.     print(' ' * (n - i - 1) + '*' * (2 * i + 1))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-8-4 15:40:26 | 显示全部楼层
您的代码不完整且存在语法错误,主要问题如下:

1. 循环条件错误:使用 `i >>` 是无效语法
2. 循环体缺失:`while` 语句后缺少代码块
3. 缺少递增操作:未更新循环变量 `i` 会导致死循环
4. 缺少打印逻辑:未处理空格和星号的输出

以下是修正后的代码(使用 while 循环实现):


  1. n = int(input("请输入三角形的层数:"))
  2. i = 1
  3. total_width = 2 * n - 1  # 三角形底边的星号数量

  4. while i <= n:
  5.     stars = 2 * i - 1     # 当前行的星号数量
  6.     spaces = (total_width - stars) // 2  # 计算当前行首所需空格数
  7.     print(' ' * spaces + '*' * stars)  # 先打印空格再打印星号
  8.     i += 1  # 更新循环变量
复制代码


代码说明:
1. total_width = 2*n-1 计算最底层的星号数量
2. 每行的星号数量 = 2*i-1
3. 每行前面的空格数 = (总宽度 - 当前行星数) // 2
4. 使用字符串乘法生成空格和星号序列

示例输出(输入3时):
  1.   
  2.   *  
  3. ***  
  4. *****
复制代码


注意:实际输出时星号会正确居中对齐,网页显示可能因空格压缩产生偏移,在终端/Python环境中可完美显示三角形。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-4 15:48:37 | 显示全部楼层
while j < n-1:
    print(" ", end="")
    j = j + 1
这个循环在每行开头都打印了n - 1个空格,导致三角形整体向右偏移,正确的空格数量应为 n - i,实现居中对齐的三角形
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-4 16:23:25 | 显示全部楼层
你的第五行

  1. while j < n-1:
  2.     print(" ", end="")
  3.     j = j + 1
复制代码

因为j从0开始直到=n-1,所以
这个循环在每行开头都打印了n - 1个空格,这样只有第一行空格正确,剩下的每行缺越来越多的空格, 导致三角形整体向右偏移
正确的空格数量应为 n - i,实现居中对齐的三角形
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-4 17:20:30 | 显示全部楼层
本帖最后由 xiaoniugogogo 于 2025-8-4 17:21 编辑
  1. n = int(input("请输入三角形的层数:"))
  2. i = 1
  3. while i <= n:
  4.     j = 0
  5.     while j < n-i:#每行前面打印n-i个字符
  6.         print("%", end="")#换成%号看的更清楚
  7.         j = j + 1

  8.     j = 0
  9.     while j < 2*i-1:
  10.         print("*", end="")
  11.         j = j + 1

  12.     print("")
  13.     i = i + 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-4 20:36:40 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2025-8-4 22:29 编辑
  1. . . . . . .
  2. while i <= n:
  3.     j = 0
  4.     while j < n - i :   # 这一句(第5行)有错,已经修改正确   
  5. . . . . . .
复制代码

    Python 语言中的字符(串)重复可以使用字符(串)乘法,再结合字符串加法,可以大幅度简化代码。
    【参考代码】:
  1. n = int(input("请输入三角形的层数:"))
  2. for i in range(n) :
  3.     print(' ' * (n - i - 1) + '*' * (2 * i + 1))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-30 22:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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