开发者学堂课程【Python 语言基础 1 :语法入门:格式化字符串】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/599/detail/8667
格式化字符串
我们通常用字符串去显示一些信息,那如何显示信息,显示信息内容是什么?
先输入:
a = ‘hello’
print(a)
结果直接打印出 hello,而 hello 是什么不清楚,要想明确知道打印出来的是hello,是 a 的值,所以接下来要体现格式化字符串。
字符串之间也可以进行加法运算
如果将两个字符串进行相加,则会自动将两个字符串拼接为一个
比如输入:
a = ‘abc’ + ‘haha’
print(a)
如果拼接三个,比如输入:
a = ‘ abc ’+ ‘ haha ’ +‘哈哈"
print(a)
若在打印结果 a 的时候直接输入:
print(“a=” +a)
结果就是 a=abchaha 哈哈,就可以满足最初需求,但是这种写法在 Python 中不常见
以上 a 都是字符串类型,若将 a 赋值为 123,比如输入:
a = 123
print(a)
结果会报错,原因是字符串只能和字符串拼接,不能和其他的类型进行加法运算,如果做了会出现异常 TypeError: must be str,not int
该方法有限制,操作中变量不可能总是字符串,会出现其他类型,所以研究更通用方法:
1.使用两个参数形式来格式化 print 信息:
print 是一个函数,如果在 print 中传两个参数,都会输出,比如输入:
print(‘ abc ’, ‘ bcd ’)
结果 abc bcd 两个都输出,而且中间有一个空格,此时我们再输入两个参数,第一个参数是 a=,第二个是 a
print( ‘ a = ’ , a)
2. 在创建字符串时,可以在字符串中指定占位符
%s 在字符串中表示任意字符:
比如输入:
b = ‘ Hello %s ’
print(b)
结果直接输出 %s,是因为没有对 %s 进行填充,在原式后再加 % 进行填充,孙悟空为填充内容,再次输入:
b= ‘ Hello %s ’% ‘孙悟空’
输入:
b= ‘ hello %s 你好 %s ’% ‘孙悟空’
结果报错,对格式化 string 这个参数不足够,这时需要传两个参数,用 tom 填充第一个 %s,孙悟空填充第二个 %s,修改输入:
b= ‘ hello %s 你好 %s ’% (‘ tom ’ , ‘孙悟空’)
所以要注意,占位符是按顺序填充的,第一个内容对应第一个 %s,第二个内容对应第二个 %s
再输入:
b= ‘ hello %s ’% ‘abcdefg’
若将 %s 修改成 %3s,3 是限制字符串的最小位数,现试着输入:
b= ‘ hello%3s ’% ‘ab’
而若直接输入b= ‘ hello%s ’% ‘ab’
相比 %3s 比 %s 多了空格,因为 %3s 规定输出字符串长度是 3 个,如果不够,就会在 ab 前增加空格去补
如果输入:
b= ‘ hello%3.5s ’% ‘abcdefg’
%3.5s 字符串的长度限制在 3-5 之间
再比如输入:
b = ‘ hello %s ’ %123
%s 是字符串 str 简写,但是可见输入 123 也可以打印出,但输入小数呢?
b = ‘ hello %s ’ %123.5
所以实际上在这里,string 是万能的,小数整数都能够填入,但是如果我们输入 %5s 限制位数
b = ‘ hello %5s ’ %123
可以看到同样补空格,再比如如果是用 %.1s 限制小数 123.456
b = ‘ hello %.1s ’ %123.456
可以看到替换数字确实可以,但是总是有缺陷的,不能保留小数
对于这种缺陷,引出 %f,表示小数
%f 浮点数占位符
比如输入:
b = ‘ hello %f ’ %123.4
可以用 %.2f 来限制小数位数:b = ‘ hello %.2f ’ %123.4
再比如输入:b = ‘ hello %.2f ’ %123.456
会看到结果自动四舍五入
%d 整数占位数
比如输入:
b = ‘hello %d ’%123.45
print(b)
可以看到小数位直接省去,再比如输 入 b = ‘hello %d ’%123.95
所以是直接将小数省去,没有四舍五入
回到最初的需求,打印 p
rint(‘ a= %s’%a),
打印一个字符串,用a去填充这个值。
3. 格式化字符串,可以通过在字符串前添加一个f来创建一个格式化字符串
比如输入:
c = f ‘ hello ’
print(c)
效果一样,但是在格式化字符串中可以直接嵌入变量,比如修改
c = f ‘ hello {a} {b}’
,{} 表示变量,{a} 表示变量 a,{b } 表示变量 b
ab 值一样,是因为上述内容中ab赋值恰好都是 123,但是在之前内容中增加 b= ‘呵呵’
如果想打印 c=,修改print(f ‘c = {c} ’)
或者修改 print(f ‘a = {a} ’)
但是如果增加一个变量 d ,c = f ‘ hello {a} {b} {d}’
所以在格式化字符串中写变量,必须是有效的,用过的
练习:创建一个变量保存一个名字,然后通过四种格式化字符串的方式,在命令行中显示,欢迎 xxx 光临!