本文已参与「新人创作礼」活动,一起开启掘金创作之路。
P16 字符串格式化 format
按照统一的规格输出字符串
规格:不同编码
位置参数:'{序号}'.format('字符串'),字符串必须按顺序排列
'{0}是{1}'.format('我','好人')
'我是好人'
关键字参数:'{关键字}'.format(关键词='字符串'),字符串可以不按顺序排列
'{a}天气{b}。'.format(a='今天',b='很好')
'今天天气很好。'
'{a}天气{b}。'.format(b='很差',a='明天')
'明天天气很差。'
'{0}eee{1}oo {a}bb {b}'.format('qwe','poi',b='vvv',a='ccc')
'qweeeepoioo cccbb vvv'
'{{0}}'.format('eee')
'{0}'
如果位置参数和关键字参数混用,位置参数(数字)要全部前置,关键词参数全部后置,否则会报错。
如果想打印双括号,用双重花括号转义
指定数据格式:'{序号:格式}'.format(字符串)
字符串格式化
格式化符号含义
| 符号 | 说明 |
|---|---|
| %c | 格式化字符及其 ASCII 码 |
| %s | 格式化字符串 |
| %d | 格式化整数 |
| %o | 格式化无符号八进制数 |
| %x | 格式化无符号十六进制数 |
| %X | 格式化无符号十六进制数(大写) |
| %f | 格式化浮点数字,可指定小数点后的精度 |
| %e | 用科学计数法格式化浮点数 |
| %E | 作用同 %e,用科学计数法格式化浮点数 |
| %g | 根据值的大小决定使用 %f 或 %e |
| %G | 作用同 %g,根据值的大小决定使用 %f 或者 %E |
格式化操作符辅助指令
| 符号 | 说明 |
|---|---|
| m.n | m 是显示的最小总宽度,n 是小数点后的位数 |
| - | 用于左对齐 |
| + | 在正数前面显示加号(+) |
| # | 在八进制数前面显示 '0o',在十六进制数前面显示 '0x' 或 '0X' |
| 0 | 显示的数字前面填充 '0' 取代空格 |
转义字符及其含义
| 符号 | 说明 |
|---|---|
| ' | 单引号 |
| " | 双引号 |
| \a | 发出系统响铃声 |
| \b | 退格符 |
| \n | 换行符 |
| \t | 横向制表符(TAB) |
| \v | 纵向制表符 |
| \r | 回车符 |
| \f | 换页符 |
| \o | 八进制数代表的字符 |
| \x | 十六进制数代表的字符 |
| \0 | 表示一个空字符 |
| \ | 反斜杠 |
课后题
- 请问以下这行代码会打印什么内容?
"{{1}}".format("不打印", "打印")
{1}
- 以下代码中,a, b, c是什么参数?
"{a} love {b}.{c}".format(a="I", b="FishC", c="com")
'I love FishC.com'
关键字参数
- 以下代码中,{0}, {1}, {2}是什么参数?
"{0} love {1}.{2}".format("I", "FishC", "com")\
'I love FishC.com'
位置参数
- 如果想要显示Pi = 3.14,format前边的字符串应该怎么填写呢?
''.format('Pi = ', 3.1415)
'{0}{1:.2f}'.format('Pi = ', 3.1415)
编程作业
- 编写一个进制转换程序,程序演示如下(提示,十进制转换二进制可以用bin()这个BIF):
print('--------Fred-2022-7-23-----------')
number = '1234567890'
fuhao = "~!@#$%^&*()_=-/,.?<>;:[]{}|"
word = 'qwertyuiopasdfghjklzxcvbnm'
while True:
number = input("请输入一个整数(输入end结束验证):")
if number == 'end':
print('程序结束')
break
print('十进制 -> 十六进制:',number,' -> ' ,'%#x' % int(number))
print('十进制 -> 八进制:',number,' -> ' ,'%#o' % int(number))
print('十进制 -> 二进制:',number,' -> ' ,bin(int(number)))
- 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!
字符串格式化format用法 字符串格式化操作符符号、含义,表格需熟悉备用。
P17 序列
列表、元组、字符串的共同点 1、都可以通过索引的到每一个元素 2、默认索引都是从0开始 3、有很多共同的操作符:重复操作符 *,拼接操作符 + ,成员关系操作符 in not in 他们统称为序列。
list() 把一个序列对象(迭代器)转换为列表 迭代:重复反馈过程的活动,其目的是为了得到尽可能确切的结果:for 循环 序列天生就是可迭代对象。 list(set()) list(str)
当序列数据类型一致时,可以使用min()、max()函数 -> 通过索引每一个元素的ASCII码,进行大小比较 若类型不一致,无法比较,函数会报错。
sum(迭代器,start),返回数字序列+start的总和
sorted() 返回排序列表,与list.sort() 用法一样 reversed() 返回逆序列表,但返回的是迭代器对象,可以用list()转化为列表 enumerate() 枚举,生成索引值和元素值的元组列表
zip() 返回由各个序列相同索引位置的参数组返回的元组。元组的元素个数取决于两个序列中元素数量较少的那个,另一个序列多出来的元素直接被舍弃。
课后题
0. 我们根据列表、元组和字符串的共同特点,把它们三统称为什么? 序列
-
请问分别使用什么BIF,可以把一个可迭代对象转换为列表、元组和字符串? list() tuple() str()
-
你还能复述出“迭代”的概念吗?
重复反馈过程的活动,本次计算的值作为下一次迭代的变量参与计算,其目的是为了得到尽可能确切的结果。 3. 你认为调用 max('I love FishC.com') 会返回什么值?为什么? c,ASCII码最大,标点 < 阿拉伯数字 < 大写字母 < 小写字母
- 哎呀呀,现在的小屁孩太调皮了,邻居家的孩子淘气,把小甲鱼刚写好的代码画了个图案,麻烦各位鱼油恢复下啊,另外这家伙画的是神马吗?怎么那么眼熟啊!??
编程题
- 猜想一下 min() 这个BIF的实现过程
min = max_value
l = list(items)
for each in l:
if min > each:
min = each
return min
- 视频中我们说 sum() 这个BIF有个缺陷,就是如果参数里有字符串类型的话就会报错,请写出一个新的实现过程,自动“无视”参数里的字符串并返回正确的计算结果
sum(L):
sum = 0
for each in L:
if isinstance(each, int) or isinstance(each, folat):
sum += each
return sum
2. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! 序列的各种操作符、函数复习