# -*- coding:cp936 -*- '''------------------------------------------------------ 【程序设计】 --------------------------------------------------------- 题目:编写编写函数fun,其功能为打印如下图所示图形。 * *** ***** ******* ***** *** * 要求:要求使用abs()。 编写函数中包含输出语句,直接打印表达式的结果。 --------------------------------------------------------- 注意:部分源程序给出如下。请勿改动主函数main和其它函数中的 任何内容,仅在函数的注释标志之间填入所编写的若干语句。 ------------------------------------------------------''' def fun(n): #**********Program********** for i in range(abs(4-(n))): print(' ',end='') for i in range((4-abs(4-n))*2-1): print('*',end='') print() #********** End ********** def main(): for index in range(1, 8): fun(index) if __name__ == '__main__': main()
1.程序中函数fun(n)的第一个循环中,range的参数之所以为abs(4-n),是因为主函数中的循环次数是8次,所以当传入值大于4时,range的参数会为负的,不合法;关于为什么是4,是因为程序输出结果的第一行最大空格数为3,最小*的数量为1。
2.而第二个循环中前四行*的数量是行数*2-1,但是从第五行开始,*数是和前三行关于第四行对称的,所以我们只要将表达式改为4-abs(4-n)*2-1即可。其中4表示关于第四行对称,abs(4-n)起到使上下称的作用