前言

上节课我们介绍了字符串N多种奇葩方法的用法,但是我们唯独漏掉了format方法,那为何不把format方法和上节课的内容一起讲呢?

因为小甲鱼觉得format方法,跟今天的主题是如出一辙的,都是讨论字符串的格式问题。哎呀,那有些朋友听到格式化就来劲了,那格式化跟我们的硬盘格式化有关系吗?

没有关系的。

那什么是字符串的格式化呢?又为什么需要对字符串进行格式化呢?

我们举个小例子,给大家讲一下:

某天小甲鱼召开了鱼c国际安全大会,到会的朋友有来自世界各方各地的精英人士,

有这个小乌龟啦,有喵星人啦,有汪星人啦,当然还有这个米奇和唐老鸭,哇塞,那气势

简直就像小甲鱼开了个动物园一样,但是呢,那问题来了,那真是鸡同鸭讲,驴唇不对马嘴,

不知所云,但是呢,小甲鱼还是聪明,想办法把问题解决了,什么办法呢?

小甲鱼在各界找一个翻译,翻译成普通话之后,再开会,最后呢,大会完美举行成功。

举这个例子,是想跟大家说,格式化字符串,就是按照统一的规格去输出,成为一个字符串。如果规格不统一,就可能会造成误会。

例如说,十六进制的10,十进制的10 ,二进制的10完全就是不同的概念,

十六进制的10 对于 10进制是等于16

十进制的10 对于 10进制等于10

二进制的10 对于 10进制等于2

所以他们是完全不同概念。字符串格式化就是帮助我们纠正规范这类可能出现的问题。

知识点

format 方法,有两个参数,分别是 位置参数关键字参数

位置参数


>>> "{0} love {1}.{2}".format("I","FishC","com")
'I love FishC.com' 字段0,字段1,字段2,分别用'{}'括起来,表示'字段',
它通过位置参数"I","FishC","com"传递给我们的format方法,
然后再用format方法对字符串进行格式化处理,得到了我们最终的目标:'I love FishC.com'

关键字参数

>>> "{a} love {b}.{c}".format("I","FishC","com")
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
"{a} love {b}.{c}".format("I","FishC","com")
KeyError: 'a' >>> "{a} love {b}.{c}".format(a="I",b="FishC",c="com")
'I love FishC.com'

位置参数关键字参数一起使用

>>> "{a} love {b}.{c}".format(a="I",b="FishC",c="com")
'I love FishC.com'
>>> "{0} love {b}.{c}".format("I",b="FishC",c="com")
'I love FishC.com' 【注意】同时使用时,
必须位置参数在前,关键字参数在后,否则会报错:
>>> "{a} love {b}.{0}".format(a="I",b="FishC","com")
SyntaxError: positional argument follows keyword argument

如果想把{}打印出来,有没有办法呢?

>>> "{{0}}".format("不打印")
'{0}'
>>>

看如下例子

>>> '{0:.1f}{1}'.format(27.658,'GB')
'27.7GB' 为什么不是打印27.658GB,而是27.7GB呢?
位置参数跟以前的不一样,化了点小妆,
后边多了一个冒号,在替换域中,
冒号:表示格式化符号的开始,后边接的就是格式化符号。

下面开始讲字符串格式化符号含义及转义字符含义

字符串格式化符号含义

符号 说明 示例
%c 格式化字符及其ASCII码 >>> '%c' % 97
'a'
>>> '%c %c %c' % (97,98,99)
'a b c'
>>> '%c,%c,%c' % (97,98,99)
'a,b,c'
%s 格式化字符串 >>> '%s' % 'I love FishC.com'
'I love FishC.com'
%d 格式化整数 >>> '%d + %d = %d' % (4,5,4+5)
'4 + 5 = 9'
%o 格式化无符号八进制数 >>> '%o' % 10
'12'
%x 格式化无符号十六进制数 >>> '%x' % 10
'a'
%X 格式化无符号十六进制数 >>> '%X' % 10
'A'
%f 格式化定点数,可指定小数点后的精度,默认6位小数 >>> '%f' % 27.658
'27.658000'
%e 用科学计数法格式化定点数 >>> '%e' % 27.658
'2.765800e+01'
%E 作用同%e,用科学计数法格式化定点数 >>> '%E' % 27.658
'2.765800E+01'
%g 根据值得大小决定使用%f或%e >>> '%g' % 27.658
'27.658'
>>> '%g' % 271111111111.6581111111111
'2.71111e+11
%G 作用同%g,根据值得大小决定使用%F或%E >>> '%G' % 27.658
'27.658'
>>> '%G' % 271111111111.6581111111111
'2.71111E+11

格式化操作符辅助指定

符号 说明 示例
m.n m显示最小总宽度,n是小数点后的位数 >>> '%5.1f' % 27.658
' 27.7'
>>> '%.2e' % 27.658
'2.77e+01'
>>> '%10d' % 5
' 5'有9个空格在5前面
- 用于左对齐 >>> '%-10d' % 5
'5 '有9个空格在5后面
+ 在正数前面显示加号(+) >>> '%+d' % 5
'+5'
>>> '%+d' % -5
'-5'
# 在八进制数前面显示零0o,在十六进制前面显示0x0X >>> '%#o' % 10
'0o12'
>>> '%#X' % 109
'0X6D'
>>> '%#d' % 10
'10'
0 显示的数字前面填充0取代空格 >>> '%010d' % 5
'0000000005'
>>> '%0-10d' % 5
'5 '有9个空格在5后面
>>> '%0+10d' % -5
'-000000005'

字符串转义字符含义

符号 说明 示例
\’ 单引号 >>> print('\'')
'
\” 双引号 >>> print('\"')
"
\a 发出系统响铃声 >>> print('\a')
\b 退格符 >>> print('1\bf')
1f
\n 换行符 >>> print('1\nf')
1
f
\t 横向指标符(TAB) >>> print('1\tf')
1 f
\v 纵向制表符 >>> print('1\vf')
1f
\r 回车符 >>> print('1\rf')
1
f
\f 换页符 >>> print('1\f111111')
1111111
\o 八进制代表的字符 >>> print('\o1111')
\o1111
\x 十六进制代表的字符 >>> print('\x1111')
11
\0 表示一个空字符 >>> print('\01234')

34
\ 反斜杠 >>> print('\\')
\

课后习题

测试题

请问以下代码会打印什么内容?

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

运行结果:
'{1}'

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

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

>>> '{0}{1:.2f}'.format('pi= ',3.1415)
'pi= 3.14'

动动手

编写一个进制转换程序,程序演示如下(提示,十进制转换二进制可以用bin()这个BIF)

q = True
while q:
temp = input('请输入一个整数(输入Q结束程序):')
if temp != 'Q':
if temp.isdigit():
i = int(temp)
print('十进制 -> 十六进制:',i,'->','%#x' % i)
print('十进制 -> 八进制:',i,'->','%#o' % i)
print('十进制 -> 二进制:',i,'->',bin(i))
else:
print("抱歉,",end=" ")
else:
q = False ================== RESTART: C:/Users/ThinkPad/Desktop/6.py ================== 请输入一个整数(输入Q结束程序):108
十进制 -> 十六进制: 108 -> 0x6c
十进制 -> 八进制: 108 -> 0o154
十进制 -> 二进制: 108 -> 0b1101100
请输入一个整数(输入Q结束程序):F
抱歉, 请输入一个整数(输入Q结束程序):FS
抱歉, 请输入一个整数(输入Q结束程序):109
十进制 -> 十六进制: 109 -> 0x6d
十进制 -> 八进制: 109 -> 0o155
十进制 -> 二进制: 109 -> 0b1101101
请输入一个整数(输入Q结束程序):Q

零基础入门学习Python(15)--格式化的更多相关文章

  1. 【Python教程】《零基础入门学习Python》(小甲鱼)

    [Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609

  2. 《零基础入门学习Python》【第一版】视频课后答案第001讲

    测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...

  3. 零基础入门学习Python(1)--我和Python的第一次亲密接触

    前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...

  4. 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...

  5. 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...

  6. 零基础入门学习Python(36)--类和对象:给大家介绍对象

    知识点 Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前 ...

  7. 零基础入门学习Python(17)--函数:Python的乐高积木

    前言 相信大家小时候都玩过神奇的乐高积木, 只要通过想象力和创造力我们可以拼凑很多神奇的东西,那么随着我们学习的深入,我们编写的Python代码也将日益增加,并且也越来越复杂, 所以呢,我们需要找寻一 ...

  8. 零基础入门学习Python(35)--图形用户界面入门:EasyGui

    知识点 EasyGui学习文档[超详细中文版] 1. 建议不要在IDLE上运行EasyGui EasyGui是运行在TKinter上并拥有自身的事件循环,而IDLE也是Tkinter写的一个应用程序并 ...

  9. 零基础入门学习Python(14)--字符串:各种奇葩的内置方法

    前言 这节课我们回过头来,再谈一下字符串,或许我们现在再来谈字符串,有些朋友可能觉得没必要了,甚至有些朋友就会觉得,不就是字符串吗,哥闭着眼也能写出来,那其实关于字符串还有很多你不知道的秘密哦.由于字 ...

随机推荐

  1. HDU1180:诡异的楼梯

    传送门 题意 迷宫搜索 分析 这题写起来挺简单的,锻炼搜索基本功,一开始用记忆化搜索TLE了,改用访问标记,0ms过了,用优先队列保证终点最快达到,我会在代码中提供一些强力数据 trick 1.遇到梯 ...

  2. P2210 Haywire(A*)

    P2210 Haywire 题目描述 Farmer John有N只奶牛,(4 <= N <= 12,其中N是偶数). 他们建立了一套原生的系统,使得奶牛与他的朋友可以通过由干草保护的线路来 ...

  3. Luogu P1119 灾后重建 【floyd】By cellur925

    题目传送门 这道题我们很容易想到对于每次询问,都跑一遍最短路(spfa,虽然他已经死了).只需在松弛的时候加入当前相关的点是否已经修好的判断,果不其然的TLE了4个点. (然鹅我第一次用spfa跑的时 ...

  4. Luogu P1186 玛丽卡 【最短路】By cellur925

    题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城 ...

  5. 在JS/jQuery中,怎么触发input的keypress/keydown/keyup事件?

    怎么触发keypress/keydown/keyup事件? 问题: 1.在之前的写的input后面添加了搜索按钮 2.input只有keyup事件,如下: $("#desktop_folde ...

  6. ubuntu下进入xampp mysql命令行

    在命令行下进入到/opt/lampp/bin目录,使用命令:sudo ./mysql,回车即可. 注意:运行这个命令需要加上sudo,以root权限来运行,不然有些数据库没有权限查看.

  7. Qt之程序发布以及打包成exe安装包

    一.简述 Qt项目开发完成之后,需要打包发布程序,而因为用户电脑上没有Qt配置环境,所以需要将release生成的exe文件和所依赖的dll文件复制到一个文件夹中,然后再用 Inno Setup打包工 ...

  8. [POI2007]四进制的天平Wag

    Description Mary准备举办一个聚会,她准备邀请很多的人参加她的聚会.并且她准备给每位来宾准备一些金子作为礼物.为了不伤及每个人的脸面,每个人获得的金子必须相同.Mary将要用一个天平来称 ...

  9. Hdu 5358 First One (尺取法+枚举)

    题目链接: Hdu 5358 First One 题目描述: 数组a有n个元素,S[i,j]定义为a[i]+a[i+1]+.....+a[j],问:这个死东西等于多少? 解题思路: 二分肯定超,这个题 ...

  10. _bzoj1026 [SCOI2009]windy数【数位dp】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1026 数位dp果断记忆化搜索,代码量少~ 程序里我用11代表前导零. #include &l ...