题目描述
根据参数row
编写一个能打印row
行三角形图案的函数。
思路
用双层for
循环,分别打印直角在左侧的三角形、直角在右侧的三角形、等腰三角形。从1开始记数:
- 对于直角三角形,第
i
行有i
个*
,且对于直角在右侧的三角形,每行的第一个*
出现在row - i + 1
处 - 对于等腰三角形,每行的第一个
*
的位置是row - i + 1
,最后一个*
的位置是row + i - 1
代码
def triangle(row):
"""
:param row 三角形行数
:return 无返回值
"""
# 打印直角在左侧的三角形
for i in range(1, row + 1):
for j in range(1, i + 1):
print("*", end = '')
print()
# 打印直角在右侧的三角形
for i in range(1, row + 1):
for j in range(1, row + 1):
if j >= row - i + 1:
print("*", end = '')
else:
print(" ", end = '')
print()
# 打印等腰三角形
for i in range(1, row + 1):
for j in range(1, row + i): # 每行最后一个 * 的截止位置是 row + i - 1
if j >= row - i + 1:
print("*", end = '')
else:
print(" ", end = '')
print()
row = int(input())
triangle(row)
运行结果
row = 4
*
**
***
****
*
**
***
****
*
***
*****
*******
row = 8
*
**
***
****
*****
******
*******
********
*
**
***
****
*****
******
*******
********
*
***
*****
*******
*********
***********
*************
***************