零基础入门学习Python P16 字符串格式化

222 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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.nm 是显示的最小总宽度,n 是小数点后的位数
-用于左对齐
+在正数前面显示加号(+)
#在八进制数前面显示 '0o',在十六进制数前面显示 '0x' 或 '0X'
0显示的数字前面填充 '0' 取代空格

转义字符及其含义

符号说明
'单引号
"双引号
\a发出系统响铃声
\b退格符
\n换行符
\t横向制表符(TAB)
\v纵向制表符
\r回车符
\f换页符
\o八进制数代表的字符
\x十六进制数代表的字符
\0表示一个空字符
\反斜杠

课后题

  1. 请问以下这行代码会打印什么内容?

"{{1}}".format("不打印", "打印")

{1}

  1. 以下代码中,a, b, c是什么参数?

"{a} love {b}.{c}".format(a="I", b="FishC", c="com")

'I love FishC.com'

关键字参数

  1. 以下代码中,{0}, {1}, {2}是什么参数?

"{0} love {1}.{2}".format("I", "FishC", "com")\

'I love FishC.com'

位置参数

  1. 如果想要显示Pi = 3.14,format前边的字符串应该怎么填写呢?

''.format('Pi = ', 3.1415)

'{0}{1:.2f}'.format('Pi = ', 3.1415)

编程作业

  1. 编写一个进制转换程序,程序演示如下(提示,十进制转换二进制可以用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)))

    image.png

  1. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!
    字符串格式化format用法 字符串格式化操作符符号、含义,表格需熟悉备用。

P17 序列

列表、元组、字符串的共同点 1、都可以通过索引的到每一个元素 2、默认索引都是从0开始 3、有很多共同的操作符:重复操作符 *,拼接操作符 + ,成员关系操作符 in not in 他们统称为序列。

list() 把一个序列对象(迭代器)转换为列表 迭代:重复反馈过程的活动,其目的是为了得到尽可能确切的结果:for 循环 序列天生就是可迭代对象。 list(set()) list(str)

当序列数据类型一致时,可以使用min()、max()函数 -> 通过索引每一个元素的ASCII码,进行大小比较 若类型不一致,无法比较,函数会报错。

sum(迭代器,start),返回数字序列+start的总和

image.png

sorted() 返回排序列表,与list.sort() 用法一样 reversed() 返回逆序列表,但返回的是迭代器对象,可以用list()转化为列表 enumerate() 枚举,生成索引值和元素值的元组列表

image.png

zip() 返回由各个序列相同索引位置的参数组返回的元组。元组的元素个数取决于两个序列中元素数量较少的那个,另一个序列多出来的元素直接被舍弃。 image.png

课后题

    0. 我们根据列表、元组和字符串的共同特点,把它们三统称为什么? 序列   

  1. 请问分别使用什么BIF,可以把一个可迭代对象转换为列表、元组和字符串?    list() tuple() str()

  2. 你还能复述出“迭代”的概念吗?

重复反馈过程的活动,本次计算的值作为下一次迭代的变量参与计算,其目的是为了得到尽可能确切的结果。    3. 你认为调用 max('I love FishC.com') 会返回什么值?为什么?    c,ASCII码最大,标点 < 阿拉伯数字 < 大写字母 < 小写字母

  1. 哎呀呀,现在的小屁孩太调皮了,邻居家的孩子淘气,把小甲鱼刚写好的代码画了个图案,麻烦各位鱼油恢复下啊,另外这家伙画的是神马吗?怎么那么眼熟啊!??

     

编程题

  1. 猜想一下 min() 这个BIF的实现过程
min = max_value
l = list(items)
for each in l:
    if min > each:
        min = each
return min

       

  1. 视频中我们说 sum() 这个BIF有个缺陷,就是如果参数里有字符串类型的话就会报错,请写出一个新的实现过程,自动“无视”参数里的字符串并返回正确的计算结果    
sum(L):
sum = 0
for each in L:
    if isinstance(each, int) or isinstance(each, folat):
        sum += each
return sum

    2. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! 序列的各种操作符、函数复习