我想用下面给出的代码得到一个倒金字塔。类似的代码适用于直立金字塔,但这些调整似乎不适用于倒金字塔。

试图调整语句很多,但没有运气。

    def pym(rows):
      result = ''
      for i in range(rows):
        row = ''
        row += '#' * (i-1)
        row += '*' * (2 * (rows-i) + 1)
        row += '#' * (i-1)
        result += row + '\n'
      return result
    print (pym(4))


预期产量

*******
#*****#
##***##
###*###

最佳答案

for循环条件略有错误,应将循环更正为for i in range(1,rows+1):而不是for i in range(rows):,然后您的代码才能正常工作。

def pym(rows):
    result = ''

    #Corrected the range
    for i in range(1,rows+1):
        row = ''
        row += '#' * (i-1)
        row += '*' * (2 * (rows-i) + 1)
        row += '#' * (i-1)
        result += row + '\n'
    return result

print (pym(4))


输出是

*******
#*****#
##***##
###*###


如您所见,从i=0而不是i=1开始会导致行变量出现问题,例如在for循环的前两个表达式中使用i = 0row如下所示

In [21]: row = ''

In [22]: row += '#' * -1

In [23]: row
Out[23]: ''


同样,由于您仅迭代到rows-1,因此您最终也没有获得最终的金字塔。

关于python - Python中的倒金字塔,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56141883/

10-12 16:50