Python中有趣的.format()槽机制

Python中有趣的.format( )的槽机制

时光飞逝,转眼间已经到了大二第一学期的寒假。(enn又是这种小学作文式的开头,————这篇文章一看就是水文。)虽然我是一名计算机专业的同学,虽然我已经到了大二,但我总结的我的大一生涯以及大二第一学期,我尽然发现我对计算机这个专业毫无了解,我对编程语言仅仅是了解好像有个面向过程的编程叫C语言,有个面向对象的编程是Java,而且有个很火的编程语言叫Python。【表示惭愧】最后Python成为了我的目标,然后在最近的学习中发现了一些有趣好玩的代码,想着把它写成东西表达出来,让大家一起乐呵乐呵,当然最重要的是希望各位大佬救救孩子(好像废话有点多,OOOO第一次学写博客,大家多多担待,以后肯定改)
哈哈进入正题首先请大家看一道例题
在这里插入图片描述
这题看着是不是有熟悉的感觉,好像学C的时候循环中也有这题目,好像叫倒三角。于是乎我照猫画虎写了如下的代码

d = input()
for i in range(1,d-1,2):
	print("{:^}".format("*" * d))

我感觉so easy,这样准木有错误,但事实有些残酷❌

TypeError: must be str, not int

大意失荆州,前两天刚学了eval()函数,呃,木有脑子忘记了输入的东西是字符型了,于是我又改正代码(毫无疑问,又error)

n = eval(input())
for i in range(1,n+1,2):
    print("{:^}".format('*'*i))

但我明明已经居中,我明明已经写了^,为毛它还是靠左,于是百度了一番,芜湖,直接搜到源代码

n = eval(input())
for i in range(1,n+1,2):
    print("{0:^{1}}".format('*'*i,n))

但我看着大佬的代码,我这种刚学几天的菜鸟表示很迷,为什么print中的{}里面又有一个{},于是又去找度娘,又去刷博客终于看懂了这个代码,现在由我这位小白为大家讲解一下有趣的.format()的槽机制,各位和我一样刚入门的伙伴可以借鉴一下:
首先.format()是一种格式化函数,至于什么是格式化,通俗的说,就是有一个缓存区,用来存储我们要输出的内容,举个例子

r = 10
area = 3.14 * r * r
print("圆的半径为",r,"面积为",area)


圆的面积为 10 面积为 314.0

这是一个简单的计算圆的面积的代码,当用了.foemat()时,你会发现代码写起来顺畅了许多

r = 10
area = 3.14 * r * r
print("圆的半径为{}面积为{}".format(r,area))

圆的半径为10面积为314.0

代码中出现的{}叫做’槽’,利用槽,可以更加简介的输出(这是它的一个标准形式)<模板字符串>.format(<逗号分隔的参数>)
在这里插入图片描述
图片来源https://www.icourse163.org/course/BIT-268001
在文章开头的例子以及刚才提到的例子中{}就是槽,对于槽,里面又许多的规则具体如下
在这里插入图片描述print("{0:=^10}".format("love"))得到结果===love===
当填充对齐木有填写时,系统会默认为空格和向左

print("{0:,.3f}".format(1000.5201314))
>>>1,000.520

有了这些知识的储备,现在回到题目中,再看看大佬的代码

n = eval(input())
for i in range(1,n+1,2):
    print("{0:^{1}}".format('*'*i,n))

明显可以看出,大佬在一个槽中又嵌套了一个槽,第一个槽为0号槽用来表示居中,以及存放*号,但是0号槽默认填充内容,所以打印出来表现为空格,第二个槽为1号槽,用来表示0号槽的宽度。此处的0和1均可以省略,但必须满足“同生共死”,就是两个同时出现,同时省略,如果只写其中的一个,就会出现以下的错误cannot switch from manual field specification to automatic field numbering【尴尬】我的英语水平不行,只能借助百度翻译,得到的解释无法从手动字段规范切换到自动字段编号

这就是我对.format()槽的一点浅见,希望对刚学习Python 的小伙伴有些帮助。

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值