用python循环打印菱形_python for 循环三行代码实现菱形打印

本文介绍用Python实现菱形打印的代码,仅需两行。通过利用Python特有的正负区间实现菱形对称,解析了代码中循环区间、字符串乘法、绝对值函数的使用,还阐述了空格数和字符数的关系,即对称轴减去字符数是空格数,减去空格数是字符数。
部署运行你感兴趣的模型镜像

许多代码能实现 菱形打印,but python 我只用三..哦不,准确来说两行

num = eval(input())

for i in range(-num+1,num):

print(' '* abs(i)+'*' * ((num*2-1)-abs(i)*2))

代码解析:

首先我们知道菱形是个对称图形,正与反 刚好利用python 特有的

(负数,正数)区间 来实现

(-num,num)

并且我们知道 python for循环是个开区间。故而

右边的开区间无需 -1。例如num = 3 , 正方向则是 0,1,2

左边的区间恰恰相反 , 是从指定数字起始的故而需要 +1。

例如输入3 , 此时

-3+1 的循环则为 -2,-1,0

保证了菱形对称行的特点 -2,-1,0,1,2(有点像 坐标系的感觉)

接下来看print里边的

' ' * ? 字符串加 乘法符号 代表 对当前 字符串 复制 若干个 然后拼接一起

例如 'Q' * 3 = 'QQQ'

abs() 函数代表返回 绝对值,负数无法正常与 字符串操作,结果会有点意外

(自己尝试,嘿嘿)

这段代码需要动点脑子

'*' * ((num*2-1)-abs(i)*2))

菱形 是奇数边 和 奇数个字符为对称轴,去除对称轴然后分两边。例如 num = 5 ,对称轴为 9个字符,向外拓展就是 7, 5, 3 , 1 (奇数列)对应每行输出字符数。而空格数是 2,4,6,8(偶数列)

发现没有 !!!

对称轴 减去 字符数 就是 空格数

对称轴 减去 空格数 就是 字符数

(相爱相杀的奇偶)

那么空格数由谁控制呢,不就是区间嘛。 记得 -2,-1,0,1,2 ,吗。乘以 2 不就是 空格数

总字符数 = num*2-1

减去 区间内的 每个值 abs(i) * 2 得到结果

最后,觉得好 点个赞呗

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Python中,使用`for`循环打印空心菱形主要有以下几种实现方法: ### 方法一:通过用户输入层数打印 ```python layer = int(input("请输入要打印的层数:")) for x in range(1, layer + 1): # 先打印空格 space_num = layer - x for y in range(0, space_num): print(" ", end="") # 再打印* star_num = 2 * x - 1 for y in range(0, star_num): if y == 0 or y == star_num - 1: print("*", end="") else: print(" ", end="") # 换行 print("") for x in range(layer - 1, 0, -1): # 先打印空格 space_num = layer - x for y in range(0, space_num): print(" ", end="") # 再打印* star_num = 2 * x - 1 for y in range(0, star_num): if y == 0 or y == star_num - 1: print("*", end="") else: print(" ", end="") # 换行 print("") ``` 此方法会提示用户输入要打印的层数,然后根据输入的层数进行打印。程序先打印菱形的上半部分,再打印下半部分。对于每一行,先打印相应数量的空格,再打印空心的星号行,最后换行 [^1]。 ### 方法二:固定层数打印 ```python def shape3(): s = "*" for i in range(1, 8): if i == 1 or i == 7: str1 = s.center(7) elif i < 5: str1 = s.rjust(5 - i) str1 += s.rjust(2 * i - 2) else: str1 = s.rjust(i - 3) str1 += s.rjust(14 - 2 * i) print(str1) if __name__ == "__main__": shape3() ``` 该方法固定打印7层的空心菱形,通过字符串的`rjust`和`center`方法来控制星号的位置。根据行数的不同,构造不同的字符串并打印 [^2]。 ### 方法三:通过用户输入奇数行数打印 ```python a = int(input("请输入奇数行数:")) if a % 2 == 0: print("输入数字错误!") a = int(input("请重新输入奇数行数:")) b = a // 2 + 1 # 上半部分 for i in range(0, b + 1): # 空格数 space = b - i for j in range(space): print(" ", end="") # 星数 star = 2 * i - 1 for k in range(star): if k == 0 or k == star - 1: print("*", end="") else: print(" ", end="") # 换行 print() # 下半部分 for m in range(b - 1, 0, -1): # 空格数 space = b - m for j in range(space): print(" ", end="") # 星数 star = 2 * m - 1 for k in range(star): if k == 0 or k == star - 1: print("*", end="") else: print(" ", end="") # 换行 print() ``` 此方法要求用户输入奇数行数,如果输入偶数则会提示重新输入。同样先打印上半部分,再打印下半部分,通过控制空格和星号的数量来实现空心菱形打印 [^3]。 ### 方法四:根据用户输入奇数层打印 ```python layer = int(input("请输入您想打印空心菱形的层数:")) # 上半部分(layer // 2 + 1 层) for i in range(1, layer // 2 + 2): # i为当前的行数 space_num = layer // 2 + 1 - i for j in range(0, space_num): print(" ", end="") star_num = 2 * i - 1 for j in range(0, star_num): if j == 0 or j == star_num - 1: print("*", end="") else: print(" ", end="") print("") # 下半部分 for i in range(layer // 2, 0, -1): space_num = layer // 2 + 1 - i for j in range(0, space_num): print(" ", end="") star_num = 2 * i - 1 for j in range(0, star_num): if j == 0 or j == star_num - 1: print("*", end="") else: print(" ", end="") print("") ``` 该方法同样需要用户输入奇数层数,将菱形分为上半部分和下半部分,分别使用`for`循环控制空格和星号的打印 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值