这个题目,应该算是编程界的经典试题了,查阅了百度,可以看到很多的不同的实现形式,有些能够正确的打印出来,有些还是停留在未完成的状态,下面就让我们来分析一下这个题究竟应该怎么做吧。
菱形,我们可以看成是由上下两部分组成,上半部分是一个三角形,且每一行的元素均是居中显示的,下满则是一个倒立的三角形。
因此,上半部分,我们可以先打印出来一个三角形的形状。代码如下:
rows = int(input('请输入菱形边长:'))
row = 1
while row <= rows:
col = 1 # 保证每次内循环col都从1开始,打印前面空格的个数
while col <= (rows - row): # 这个内层while就是单纯打印空格
print(' ', end='') # 空格的打印不换行
col += 1
print(row * '* ') # 每一行打印完空格后,接着在同一行打印星星,星星个数与行数相等,且打印完星星后print默认换行
row += 1
作者试了一下,其中中间的while内层循环其实是专门打印空格的,去掉这部分的话,就是一个简单的直角三角形。
上半部分打印完了之后,我们就可以来打印下半部分。
最后完整的代码如下图所示:
rows = int(input('请输入菱形层数:'))
row = 1
while row <= rows:
col = 1 # 保证每次内循环col都从1开始,打印前面空格的个数
while col <= (rows - row): # 这个内层while就是单纯打印空格
print(' ', end='') # 空格的打印不换行
col += 1
print(row * '* ') # 每一行打印完空格后,接着在同一行打印星星,星星个数与行数相等,且打印完星星后print默认换行
row += 1
bottom = rows - 1
while bottom > 0:
col = 1 # 保证每次内循环col都从1开始,打印前面空格的个数
while bottom + col <= rows:
print(' ', end='') # 空格的打印不换行
col += 1
print(bottom * '* ') # 每一行打印完空格后,接着在同一行打印星星,星星个数与行数相等,且打印完星星后print默认换行
bottom -= 1
这样写的好处,是我们输入任意的菱形层数,均可以打印出我们所期待的菱形形状。
请输入菱形边长:10
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * * *
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
Process finished with exit code 0
好了,以上就是作者分享给大家的内容,我们下期再见吧。
2020年2月23日
北京市通州区京贸中心
网友评论