wuming323 发表于 2025-8-4 15:37:44

求问 12题错在哪里

我的代码
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
             *
         ***
         *****

FishC 发表于 2025-8-4 15:40:26

您的代码不完整且存在语法错误,主要问题如下:

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

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


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

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


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

示例输出(输入3时):

*
***
*****


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jian-qi- 发表于 2025-8-4 15:48:37

while j < n-1:
    print(" ", end="")
    j = j + 1
这个循环在每行开头都打印了n - 1个空格,导致三角形整体向右偏移,正确的空格数量应为 n - i,实现居中对齐的三角形{:9_226:}

某一个“天” 发表于 2025-8-4 16:23:25

你的第五行

while j < n-1:
    print(" ", end="")
    j = j + 1
因为j从0开始直到=n-1,所以
这个循环在每行开头都打印了n - 1个空格,这样只有第一行空格正确,剩下的每行缺越来越多的空格, 导致三角形整体向右偏移
正确的空格数量应为 n - i,实现居中对齐的三角形

xiaoniugogogo 发表于 2025-8-4 17:20:30

本帖最后由 xiaoniugogogo 于 2025-8-4 17:21 编辑

n = int(input("请输入三角形的层数:"))
i = 1
while i <= n:
    j = 0
    while j < n-i:#每行前面打印n-i个字符
      print("%", end="")#换成%号看的更清楚
      j = j + 1

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

    print("")
    i = i + 1

jackz007 发表于 2025-8-4 20:36:40

本帖最后由 jackz007 于 2025-8-4 22:29 编辑

. . . . . .
while i <= n:
    j = 0
    while j < n - i :   # 这一句(第5行)有错,已经修改正确   
. . . . . .
    Python 语言中的字符(串)重复可以使用字符(串)乘法,再结合字符串加法,可以大幅度简化代码。
    【参考代码】:
n = int(input("请输入三角形的层数:"))
for i in range(n) :
    print(' ' * (n - i - 1) + '*' * (2 * i + 1))
页: [1]
查看完整版本: 求问 12题错在哪里