初学python算法100例-案例23 输出菱形

Posted 技术专家团-小兔子编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学python算法100例-案例23 输出菱形相关的知识,希望对你有一定的参考价值。

题目:输出三角形图案

打印出如下图案(菱形):中间*数量分别是1、3、5、7、9,层数由键盘输入 比如输入5  产生如下图形

解法1 常规思维

程序分析

1、我们可以看到每一层的星星数量是层数的2被+1

2、同时我们也可以计算出每一层对应的空格数是总层数-层数-1

代码编写

n = int(input("输入要显示的层数:"))   
for i in range(n):
    print(' ' * (n - i-1), end="")
    for j in range(2 * i+1):
        print('*', end="")
    print()
for i in range(n-1):
    print(' ' * (i+1), end="")
    for j in range(2*(n-(i+1))-1):
        print('*', end="")
    print()

运行结果

 

解法2 stdout类

程序分析和上面类似

代码编写

from sys import stdout
n = int(input("输入要显示的层数:"))
for i in range(n):
    for j in range(n-i-1):
        stdout.write(' ')
    for k in range(2 * i + 1):
        stdout.write('*')
    print('')
for i in range(n-1):
    for j in range(i+1):
        stdout.write(' ')
    for k in range(2*(n-(i+1))-1):
        stdout.write('*')
    print('')

运行结果

 

解法3 最简单

通过字符串相乘

代码编写

n = int(input("输入要显示的层数:"))   
for i in range(n):
    print((n-i-1)*' '+(2*i+1)*'*')
    
for j in range(n-1):
    print((j+1)*' '+(2*(n-(j+1))-1)*'*')

运行结果

还有更多其他的解法,欢迎一起交流学习

以上是关于初学python算法100例-案例23 输出菱形的主要内容,如果未能解决你的问题,请参考以下文章

初学python算法100例-案例9 间隔1秒输出结果

初学python算法100例-案例28 逆序输出每位数字

初学python算法100例-案例22 居中输出三角形

初学python算法100例-案例26 反序输出 并没有那么难

初学python算法100例-案例17 输出并计算n个 逐项数字

初学python算法100例-案例18 完数有那么难么