0基础教程习题9—打印菱形

打印菱形


1、题目要求

 

在屏幕上输出一个菱形,如下,

    *    
   ***   
  *****  
 ******* 
*********
 ******* 
  *****  
   ***   
    *   

2、程序分析

 

  • 程序必然要一行一行的输出,因此,只要解决掉了单行如何输出,就解决了菱形如何输出
  • 中间的一行决定了最多输出多少个 * ,每一行输出多少个 * 取决于行号是多少

3、示例代码

 

#coding=utf-8
import math
def get_line(line_index,line_count):
    # 获得中间这行
    middle_line = (line_count-1)/2
    # 距离中间行越远,输出的 * 越少,每行递减两个
    diff = int(math.fabs(middle_line - line_index))
    return diff*' ' + '*'*(line_count-diff*2) + diff*' '


def print_diamond(line_count):
    '''line_count是中间行可以输出的*的数量'''
    if line_count % 2 != 1 or line_count < 3:
        print u'请输入正确的奇数'
        return

    for i in range(line_count):
        print get_line(i,line_count)

print_diamond(9)