考试程序
# -*- 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)起到使上下称的作用