Python实现多种三角形打印:从直角到心形的完整指南

温以宁
温以宁
发布时间:2026-10-13 | 2人浏览过
原创

本文详细介绍如何使用Python语言打印各种几何三角形图案,包括直角三角形、等腰直角三角形、正方形、倒立三角形及心形组合。通过解析多层for循环与字符串乘法、center对齐及空格控制逻辑,提供完整代码示例,帮助初学者掌握循环嵌套与字符串格式化技巧。

Python打印直角三角形基础

首先介绍如何打印直角三角形。实现思路主要利用Python的字符串乘法特性或嵌套循环。在代码节选中,程序首先通过input获取用户输入的列数rows,并将其转换为整数。随后,代码通过两层逻辑生成图案:第一层使用range(1, rows)迭代i,直接打印'*' * i,利用字符串乘法快速生成每行的星号数量;第二层同样遍历range(1, rows),内部嵌套j从0到i-1的循环,逐个打印'*'并设置end=""以不换行,最后通过print("")换行。这种方法展示了字符串操作与显式循环两种不同的实现路径。


rows = int(input('输入列数:'))
for i in range(1, rows):
print('*' * i)
for i in range(1, rows):
for j in range(i):
print("*", end="")
print("")

等腰直角三角形的实现方法

接下来是等腰直角三角形的打印方法。参考代码节选,程序同样接收用户输入的列数rows。在生成图案时,代码演示了两种策略:第一种策略在range(1, rows)循环中,直接打印' * ' * i,通过增加空格使星号呈现等腰直角三角形的视觉效果;第二种策略则采用嵌套循环,外层i从1到rows-1,内层j从1到i,逐个打印" * "并设置end="",最后换行。这种方式更细致地控制了每个字符的间距,适用于需要精确控制字符间距的场景。


rows = int(input('输入列数:'))
for i in range(1, rows):
print(' * ' * i)
for i in range(1, rows):
for j in range(1, i + 1):
print(" * ", end="")
print("")

标准等腰三角形的居中打印技巧

打印标准等腰三角形需要处理每行星号数量与空格数量的关系。在节选代码中,程序获取rows后,遍历range(1, rows)。关键逻辑在于判断i是否为奇数(if i % 2 != 0),如果是,则生成由i个'*'组成的字符串str。随后,使用str.center(9, ' ')方法,将该字符串居中填充到宽度为9的空间内,不足部分用空格填充。这种方法利用Python内置的字符串居中功能,简化了手动计算前导空格的复杂逻辑,适用于固定宽度下的等腰三角形展示。


rows = int(input('输入列数:'))
for i in range(1, rows):
if i % 2 != 0:
str = ('*' * i)
print(str.center(9, ' '))

正方形图案的嵌套循环构建

打印正方形图案可以通过简单的嵌套循环实现。如节选所示,程序接收rows参数后,首先使用单层循环range(0, rows)打印完整的正方形行,每行由rows个" * "组成。接着,使用双层循环,外层i从0到rows-1,内层j从0到rows-1,逐个打印" * "并设置end="",最后通过print(" ")换行。这种双重遍历方式确保了每个位置都输出字符,从而形成完整的正方形网格结构,是理解二维数组映射到字符输出的基础案例。


rows = int(input('输入列数:'))
for i in range(0, rows):
print(" * " * rows)
for i in range(0, rows):
for j in range(0, rows):
print(" * ", end="")
print(" ")

正方形2的空格控制逻辑

正方形2的打印方式侧重于通过空格控制形成特定形状的空心或实心效果。在节选代码中,程序首先打印标题'正方形2'。随后,外层循环i从0到9(共10行)。内层包含四个独立的循环:第一个循环打印10-i个空格,第二个循环打印i个空格,第三个循环打印10-i个空格,第四个循环打印10-i个空格(此处逻辑看似冗余,实际可能意在调整间距)。最后通过print('')换行。尽管代码逻辑较为繁琐,但其核心在于通过不同区间的空格打印来构建正方形的边界或内部结构,展示了通过精确控制空格位置来塑造图形的方法。


print('正方形2')
for i in range(10):
for j in range(0, 10 - i):
print(end=' ')
for n in range(0, 0 + i):
print(end=' ')
for m in range(0 + i, 10):
print('', end=' ')
for k in range(10 - i, 10):
print('', end=' ')
print('')

倒立直角三角形的递减打印

打印倒立直角三角形时,图案从上到下逐渐减少星号数量。参考节选,程序使用双层循环。外层x从0到9(共10行),内层i从x到9。在内层循环中,逐个打印'*'并设置end=''不换行。当内层循环结束后,通过print('')换行。由于i的起始值x从0逐渐增加到9,每行打印的星号数量从10逐渐减少到1,从而形成倒立的直角三角形效果。这种通过改变循环起始值来控制输出长度的方法,是生成递减图案的常用技巧。


for x in range(10):
for i in range(x, 10):
print('*', end='')
print('')

单行内直角三角形的复杂排列

在同一行打印直角三角形涉及复杂的空格与星号交替逻辑。在节选代码中,程序首先打印标题'同一行打印直角三角形'。外层循环j从0到9。内层包含四个部分:第一部分打印j个空格,第二部分打印19-j个空格(此处逻辑可能意在构建特定宽度的背景),第三部分打印j个空格,第四部分打印19-j个空格(同样可能是背景构建)。最后换行。虽然代码中的空格逻辑较为复杂且可能存在冗余,但其意图是通过多层空格控制,在单行内构建出类似直角三角形的视觉结构,展示了通过精细控制字符间距实现复杂图形排列的可能性。


print('同一行打印直角三角形')
for j in range(10):
for x in range(0, j):
print('', end='')
for n in range(j, 19 - j):
print(' ', end='')
for k in range(0, j):
print('', end='')
print('')

直角三角形拼装心形图案

将直角三角形拼装成心形图案需要结合两种不同的循环逻辑。如节选所示,程序首先打印标题'直角三角形拼装心形'。上半部分通过外层j从0到7,内层x从0到j打印空格,n从j到19-j打印空格,k从0到j打印空格,构建心形的上半部分轮廓。下半部分通过外层i从0到9,内层j从0到i-1打印空格,k从i到9打印'*',构建心形的下半部分尖角。这种分段处理的方法,通过组合不同区域的空格与星号输出,最终在终端形成心形图案,体现了复杂图形分解为简单子模块的编程思想。


print('直角三角形拼装心形')
for j in range(8):
for x in range(0, j):
print('', end='')
for n in range(j, 19 - j):
print(' ', end='')
for k in range(0, j):
print('', end='')
print('')
for i in range(10):
for j in range(0, 0 + i):
print(end=' ')
for k in range(0 + i, 10):
print('*', end=' ')
print('')

倒立等腰三角形1的对称打印

打印倒立等腰三角形1需要同时处理前导空格与星号数量。在节选代码中,程序首先打印标题'打印倒立等腰三角形1'。外层循环j从0到9。内层x从0到j打印前导空格,随后n从j到15-j打印'*'。由于每行前导空格随j增加而增加,而星号数量随j增加而减少(15-2j),从而形成倒立的等腰三角形。这种方法通过同步调整空格与星号的输出,实现了图形的几何变换,是理解对称图形打印逻辑的重要示例。


print('打印倒立等腰三角形1')
for j in range(10):
for x in range(0, j):
print(end=' ')
for n in range(j, 15 - j):
print('*', end='')

倒立等腰三角形2的字符格式控制

打印倒立等腰三角形2采用了与前者不同的循环结构。参考节选,程序首先打印标题'打印倒立等腰三角形2'。外层循环i从0到9。内层j从0到i-1打印前导空格,随后k从i到9打印'* '(注意此处为'* ',包含空格)。由于前导空格随i增加,而星号数量随i减少(10-i),且每个星号后带有一个空格,从而形成倒立的等腰三角形。这种通过字符串乘法或逐个打印带空格的字符,实现了图形的倒立效果,展示了不同字符串格式对最终图形呈现的影响。


print('打印倒立等腰三角形2')
for i in range(10):
for j in range(0, 0 + i):
print(end=' ')
for k in range(0 + i, 10):
print('*', end=' ')
print('')

同一行双等腰三角形的空格布局

在同一行打印两个等腰三角形需要极高的空格控制精度。在节选代码中,程序首先打印标题'同一行打印两个等腰三角形'。外层循环i从0到9。内层包含多个部分:首先打印10-i个空格,然后打印10-i个空格(可能意在分隔),接着打印0个空格(逻辑上无输出),再打印10-i个空格(可能意在构建右侧背景),最后打印10-i个空格(可能意在构建右侧三角形)。尽管代码中存在多处看似冗余的空格打印(如range(0, 0)和range(10, 10)),但其核心意图是通过多层空格控制,在单行内构建出两个并排的等腰三角形。这种复杂的空格布局展示了通过精确计算字符位置来实现复杂图形排列的高级技巧。


print('同一行打印两个等腰三角形')
for i in range(10):
for j in range(0, 10 - i):
print(end=' ')
for k in range(10 - i, 10):
print('', end=' ')
for n in range(0, 0):
print(end=' ')
for m in range(0 + i, 10):
print(' ', end=' ')
for jj in range(10, 10):
print(end=' ')
for kk in range(10 - i, 10):
print('', end=' ')
print('')

等腰三角形拼装心形的分段处理

将等腰三角形拼装成心形图案需要结合上下两部分的打印逻辑。如节选所示,程序首先打印标题'等腰三角形拼装心形'。上半部分通过外层i从0到9,内层j从0到10-i打印空格,k从10-i到10打印空格(可能意在构建左侧背景),n从0到0打印空格(无输出),m从i到10打印空格(可能意在构建右侧背景),jj从10到10打印空格(无输出),kk从10-i到10打印空格(可能意在构建右侧三角形)。下半部分通过外层i从0到19,内层j从0到i-1打印空格,k从i到19打印'* ',构建心形的下半部分尖角。这种分段处理的方法,通过组合不同区域的空格与星号输出,最终在终端形成心形图案,体现了复杂图形分解为简单子模块的编程思想。


print('等腰三角形拼装心形')
for i in range(10):
for j in range(0, 10 - i):
print(end=' ')
for k in range(10 - i, 10):
print('', end=' ')
for n in range(0, 0):
print(end=' ')
for m in range(0 + i, 10):
print(' ', end=' ')
for jj in range(10, 10):
print(end=' ')
for kk in range(10 - i, 10):
print('', end=' ')
print('')
for i in range(20):
for j in range(0, 0 + i):
print(end=' ')
for k in range(0 + i, 20):
print('*', end=' ')
print('')

总结与展望

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表