潭州课堂25班:Ph201805201 第五课:格式化输出和深浅复制 (课堂笔记)
格式化输出和字符串转义
占位符 使用示意 作用 %s '%s %s' % ('hello', 'world') 表示占位的是str %d '%d %d' % (1, 2) 表示占位的是int %d '%d %d' % (1.3,2.9) 如果使用float占位,输出整数部分 %f '%f %f' % (1.3,2.9) 表示占位的是float,默认不足6位小数末尾用0补全 以上是上上节课的内容 %有关的内容 %.if '%.2f %.4f' % (1.123, 2.12) i为一个整数,表示小数后的位数,不足用0补全 %xf '%8f<>%10f' % (1.2, 1.2) x为一个整数,表示整个数字的位数,不足在左边用空格补全 %+f '%+f<>%+f' % (1.2, 1.2)' + 表示显示正负号 %-f '%-7.2f<>%-7.2f' % (-1.2, 1.2) - 表示不足位数在右边用空格补全 %c '%c' % 97 表示占位的为ASCII码,输出ASCII对应的字符 %o '%o' % 8 表示占位的为十进制数字,输出对应的八进制数字 %x ‘%x’ % 16 表示占位的为十进制数字,输出对应的十六进制数字 %e ‘%e’ % 11 表示占位的是数字,用科学计数法输出 %r '%r<>%r' % ('1', 1) 原始形象输出;区分字符串1 和 数字1 foramt有关的内容 {index} ‘{1}<>{0}’.format('零', '一') 索引输出 {obj} '{x}<>{y}'.format(x=2, y=1) 关键字输出 {:x} '{:x}'.format(16) 十进制转十六进制 {:o} '{:o}'.format(8) 十进制转八进制 {:*<i} '{:#<5} {:*<8}'.format(123, 'abc') i表示整数,*表示补全的符号;不足位数在右边用符号补全 {:*>i} '{:#>5} {:*>8}'.format(123, 'abc') i表示整数,*表示补全的符号;不足位数在左边用符号补全 {:*^i} '{:#^5} {:*^8}'.format(123, 'abc') i表示整数,*表示补全的符号;不足位数在两边用符号补全
接下来是转义符
转义符 作用 \a 发出一声响 \n 换行符 \t 水平制表符 \b 退格符 \r 将当前位置移动到本行开头 \ 代表 \,转义特殊字符 \0 空字符
字符串处理
添加的字符 作用 u 对字符进行Unicode编码 r 取消转义 b 代表该字符串为bytes类型
字符串编码
PPT第十三页 编码规则
PPT第十四页
方法 作用 encode 编码 decode 解码
深浅复制
<font color='red'> 深浅复制只在列表嵌套的时候才讨论 </font>
li1 = [1,2,3,[4,5,6]] li2 = li1.copy() 这个时候我们的li1和li2是不是相等的?如果我在这里修改li1[3][0] = 'a' 我们来看li1的结果 会变成什么?是不是[1,2,3,['a',5,6]],这个时候我们来看li2变成了和li1一样的了? 为什么呢?我么来看li1[3]和li2[3]的ID,是不是一样的,说明什么?说明他们是同一个对象;这就是浅复制 那么什么是深复制呢? import copy li3 = copy.deepcopy(li1) 现在我们再来修改嵌套的列表,看看会不会改变另一个
bytes和bytearray
1:bytes(二进制序列类型) 一:用指定长度的0来填充字节对象 bys1 = bytes(5) 二:二进制字符串对象 bys2 = bytes(b'abcde') 2:bytearray(二进制数组) 一:用指定长度的0来填充字节对象 bya1 = bytearray(5) 二:二进制字符串对象 bya2 = bytearray(b'abcde')