初学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例-案例26 反序输出 并没有那么难