时光飞逝,转眼间已经到了大二第一学期的寒假。(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(<逗号分隔的参数>)
在文章开头的例子以及刚才提到的例子中{}
就是槽,对于槽,里面又许多的规则具体如下
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 的小伙伴有些帮助。