# 格式化输出
name = "sz"
age = 18
# 我的名字是xxx,年龄是xxx
print("我的名字是%s,年龄是%d"%(name,age))
这是我们上节课学的格式化输出,打印一句话,这句话有2个参数是变量,相当于我们先设计一个语句模板,然后在里面填写参数,%号的位置相当于变量,说白了就是挖了两个坑,这时候需要我们把对应的数值填写进去就ok了,而今天主要学习下这个%占位格式符的用途和写法。
# %[(name)][flags][width][.precision]typecode
# []里面的内容可以省略,只需要写%和typecode就可以,typecode是类型码,比如例子中的s和d,类型码有很多种。
这个%号有很多参数,[ ]里面的内容是可以省略不写的,但是要知道其中的含义
先了解下(name)
name的意思是:表示根据指定的名称(key),查找对应的值,格式化字符串当中。根据上面的例子延伸。
name = "sz"
age = 18
# 我的名字是xxx,年龄是xxx
print("我的名字是%(mz)s,年龄是%(nl)d"%({"mz":name,"nl":age}))
name就相当于模板里面的值,注意模板后面也要写出来,然后去上面找对应的值,mz和nl就是上面注解中的key。大括号里面是“字典”的意思
width表示的是占用的宽度
name = "sz"
age = 18
# (name)
# 表示,根据
# width,表示占用的宽度
print("%10d" % age)
结果是:
18
结果靠右对齐,左面是8个空格,一共占了10位。默认是用空格代替没有值得字符位,如果在上面的代码10前面加一个数字0,就相当于用数字0来代替没有值得字符位,此时就不是空格了。(一般用于时钟表示“07:27”,前面需要显示一个0,不是空格,就需要这样的表示,但是不可以加其他数字,加入其他数字就相当于width要占用多少位,比如%10d,在10前面加的不是0,加了一个1,width的参数就相当于110位了)
flags表示对齐的方式(默认是右对齐,如果在10前面加了一个“-”就会靠左对齐,右面是8个空格,同样一共占了10个字符位。)
print("%-10d" % age)
结果是:
18
print("% d" % age)
结果是:
18
如果中间加一个空格,那么结果前面就有一位空格,这个例子是为了和负数对其用的(负数前面有个-负号,这里空着一位),但如果中间加两个空格结果依然是前面空一位。
.precision 表示的是浮点数,也就是带小数点的数,这样数的一个写法
name = "sz"
age = 18.5
print("%.2f" % age)
结果是:
18.50
这里把之前的d换成了f,因为f是表示浮点数的字符,.2表示的是小数点保留后两位(不要把小数点.忘记了)。
typecode是%函数的必填项,它是类型符,因为它里面没有空格。它就相当于我们之前写的d或f,石必写的,以下是各种符号表示的含义