使用嵌套 for 循环在 python 中创建一个整数金字塔

时间:2021-05-25 00:39:10

标签: python for-loop

定义一个名为 print_pyramid(number_of_rows) 的函数,它以整数为参数,并使用数字打印特定的金字塔图案。注意:您可以假设行数总是 > 1 且 < 10,并且您必须使用嵌套的 for 循环。

例如:

code run live at IdeOne.com

以上是我的问题以及我需要得到什么,但我不确定如何完成以下是我的代码尝试和结果。 这是我的代码:

def print_pyramid(number_of_rows):
    
    for row in range(number_of_rows):
        
        for column in range(row, number_of_rows):
            print("", end="")
            
        for column in range(row+1):
            print(row+1, end="")
        
        for column in range(row, number_of_rows-1):
            print(" ", end= "")
            
        for column in range(row+1):
            print(row+1, end="")
        
        print() 

但是我的代码给了我这个: Pyramid I'm meant to get

3 个答案:

答案 0 :(得分:1)

这是一个使用 for 循环生成金字塔模式的列表推导式

print_pyramid = lambda x : print("\n".join([(" "*(x-i))+(str(i)*(i*2-1))+(" "*(x-i)) for i in range(1,x+1)]))

print_pyramid(9) 给出:

        1        
       222       
      33333      
     4444444     
    555555555    
   66666666666   
  7777777777777  
 888888888888888 
99999999999999999

答案 1 :(得分:1)

Jared 的回答是正确的,而且绝对更优雅,但无论如何这是另一种解决方案。对初学者更友好,希望一目了然更容易理解。

def pyramid(number_of_rows):
    for i in range(1, number_of_rows + 1):
        indent = ' ' * (number_of_rows - i)
        row = str(i) * (i * 2 - 1)
        print(indent + row)

答案 2 :(得分:0)

您可以定义一个函数来以这种方式打印您的金字塔

const data = [
    {
      key: '1',
      title: 'Title 1',
      desc: 'Desc 1',
      image: 'http://192.168.0.22:3000/build/photo_1621612104216_d747ced4-b313-4687-b9ac-ab5bcd78501d.jpg'
    },
    {
      key: '2',
      title: 'Title 2',
      desc: 'Desc 2',
      image: 'http://192.168.0.22:3000/build/photo_1621612230526_f49f2be8-6fd6-420d-b0b0-b39216418924.jpg'
    },
    {
      key: '3',
      title: 'Title 3',
      desc: 'Desc 3',
      image: 'http://192.168.0.22:3000/build/photo_1621612230526_f49f2be8-6fd6-420d-b0b0-b39216418924.jpg'

    },
    {
      key: '4',
      title: 'Title 4',
      desc: 'Desc 4',
      image: 'http://192.168.0.22:3000/build/photo_1621612104216_d747ced4-b313-4687-b9ac-ab5bcd78501d.jpg'

    },
  ];

const updatePropertyByKey = (key, name, value) => {
  return data.map(el => el.key === key ? {
    ...el,
    [name]: value
  } : el);
};

const newData = updatePropertyByKey('3', 'title', 'Title 3 New');
console.log(newData[2]);

然后调用函数

def pyramid(rows: int) -> str:
    if rows < 1 or rows > 9:
        raise ValueError

    pyramid_string = ""

    for i in range(1, rows + 1):
        pyramid_string += f" " * (rows - i) + f"{i}" * (i * 2 - 1) + "\n"

    return pyramid_string

或者你可以使用一个变量来存储函数的结果

print(pyramid(rows=5))

输出

five_rows_pyramid = pyramid(rows=5)
print(five_rows_pyramid)