Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查三角形代码,python_Python - Fatal编程技术网

检查三角形代码,python

检查三角形代码,python,python,Python,我想知道哪里出了问题。 假设我想获得: print(triangle(5)) * * * * * * * * * 我的代码: def triangle(n): result = "" for i in range(n): if (i+1) % 2 == 1: result = result + "*\n" if (i+1) % 2 == 0: result = " " + result

我想知道哪里出了问题。 假设我想获得:

print(triangle(5)) 

*
 * 
* *
 * *
* * *
我的代码:

def triangle(n):
    result = ""
    for i in range(n):
        if (i+1) % 2 == 1:
            result = result + "*\n"
        if (i+1) % 2 == 0:
            result = " " + result
    return result
它只给了我

  *
*
(答案如下,但我想知道我自己的代码出了什么问题)


当您使用
n==5
通过原始
for
循环运行时,请考虑
result

i   result
-   ------
0   "*\n"
1   " *\n"
2   " *\n*\n"
3   "  *\n*\n"
4   "  *\n*\n*\n"
print
ed时,它是:

  *
*
*
根据
i
是奇数还是偶数(实际上,
i+1
是奇数还是偶数,这似乎不必要地复杂),您可以在开头添加一个空格,或者在结尾添加一个星号和换行符。这就是你的代码所做的


一个更好的问题可能是:为什么您希望第一个代码能够工作?

当您使用
n==5
运行时,通过原始的
for
循环来考虑
结果

i   result
-   ------
0   "*\n"
1   " *\n"
2   " *\n*\n"
3   "  *\n*\n"
4   "  *\n*\n*\n"
print
ed时,它是:

  *
*
*
根据
i
是奇数还是偶数(实际上,
i+1
是奇数还是偶数,这似乎不必要地复杂),您可以在开头添加一个空格,或者在结尾添加一个星号和换行符。这就是你的代码所做的


一个更好的问题可能是:为什么您希望第一个代码能够工作?

当您使用
n==5
运行时,通过原始的
for
循环来考虑
结果

i   result
-   ------
0   "*\n"
1   " *\n"
2   " *\n*\n"
3   "  *\n*\n"
4   "  *\n*\n*\n"
print
ed时,它是:

  *
*
*
根据
i
是奇数还是偶数(实际上,
i+1
是奇数还是偶数,这似乎不必要地复杂),您可以在开头添加一个空格,或者在结尾添加一个星号和换行符。这就是你的代码所做的


一个更好的问题可能是:为什么您希望第一个代码能够工作?

当您使用
n==5
运行时,通过原始的
for
循环来考虑
结果

i   result
-   ------
0   "*\n"
1   " *\n"
2   " *\n*\n"
3   "  *\n*\n"
4   "  *\n*\n*\n"
print
ed时,它是:

  *
*
*
根据
i
是奇数还是偶数(实际上,
i+1
是奇数还是偶数,这似乎不必要地复杂),您可以在开头添加一个空格,或者在结尾添加一个星号和换行符。这就是你的代码所做的

一个更好的问题可能是:为什么您希望第一个代码能够工作?

要解决这个问题

  • result=result+“*\n”
    每行只会添加一颗星。如果将其与模型答案进行比较,它会将
    '*'
    乘以
    (n/2)
    ,这会打印出相当于
    n
    一半的星号,然后附加一个
    “\n”
    以插入新行

  • 在另一种情况下,看起来您正在尝试添加前一行,但随后将其缩进。然而,实际上你要做的是用一个缩进重新绘制整个三角形。因此,对于循环的前几次迭代,您只是在打印空格(请参阅第一次
    *
    之前的两个空格)。这需要更改以使用
    n
    打印正确数量的
    *

模型应答本身使用递归调用来委托打印其他行,这意味着三角形函数的批量可以集中打印一行。要将其放入迭代函数(如您的函数)中,其工作原理如下:

def triangle(n):
  if n == 0:
    return ""

  result = ""
  for i in range(1, n + 1):
    if i % 2 != 0:
      result += (i / 2) * "* "
      result += "*"
    else:
      result += (i / 2) * " *"
    result += "\n"

  return result
要打破这个

  • result=result+“*\n”
    每行只会添加一颗星。如果将其与模型答案进行比较,它会将
    '*'
    乘以
    (n/2)
    ,这会打印出相当于
    n
    一半的星号,然后附加一个
    “\n”
    以插入新行

  • 在另一种情况下,看起来您正在尝试添加前一行,但随后将其缩进。然而,实际上你要做的是用一个缩进重新绘制整个三角形。因此,对于循环的前几次迭代,您只是在打印空格(请参阅第一次
    *
    之前的两个空格)。这需要更改以使用
    n
    打印正确数量的
    *

模型应答本身使用递归调用来委托打印其他行,这意味着三角形函数的批量可以集中打印一行。要将其放入迭代函数(如您的函数)中,其工作原理如下:

def triangle(n):
  if n == 0:
    return ""

  result = ""
  for i in range(1, n + 1):
    if i % 2 != 0:
      result += (i / 2) * "* "
      result += "*"
    else:
      result += (i / 2) * " *"
    result += "\n"

  return result
要打破这个

  • result=result+“*\n”
    每行只会添加一颗星。如果将其与模型答案进行比较,它会将
    '*'
    乘以
    (n/2)
    ,这会打印出相当于
    n
    一半的星号,然后附加一个
    “\n”
    以插入新行

  • 在另一种情况下,看起来您正在尝试添加前一行,但随后将其缩进。然而,实际上你要做的是用一个缩进重新绘制整个三角形。因此,对于循环的前几次迭代,您只是在打印空格(请参阅第一次
    *
    之前的两个空格)。这需要更改以使用
    n
    打印正确数量的
    *

模型应答本身使用递归调用来委托打印其他行,这意味着三角形函数的批量可以集中打印一行。要将其放入迭代函数(如您的函数)中,其工作原理如下:

def triangle(n):
  if n == 0:
    return ""

  result = ""
  for i in range(1, n + 1):
    if i % 2 != 0:
      result += (i / 2) * "* "
      result += "*"
    else:
      result += (i / 2) * " *"
    result += "\n"

  return result
要打破这个

  • result=result+“*\n”
    每行只会添加一颗星。如果将其与模型答案进行比较,它会将
    '*'
    乘以
    (n/2)
    ,这会打印出相当于
    n
    一半的星号,然后附加一个
    “\n”
    以插入新行

  • 在另一种情况下,看起来您正在尝试添加前一行,但随后将其缩进。然而,实际上你要做的是用一个缩进重新绘制整个三角形。所以发生的是t的前几个迭代