Python3 星星序列的输出

考试程序

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

 

上一篇:fpga中求有符号数的绝对值


下一篇:【语音去噪】基于matlab 软阈值+硬阈值+折中阈值语音去噪【含Matlab源码 530期】