嗨害嗨,我又来了啊!今天给大家介绍Python中如何精准控制数据输出。
先看到Program_34。
#Program_34
int_ = 1 #将1赋值给变量int_
float_ = 1.0 #将1.0赋值给变量float_
str_ = "龟" #将"龟"赋值给变量str_
print("我有%d只%s(%f只%s)" % (int_, str_, float_, str_)) #输出"我有1只龟(1.000000只龟)"
"""
控制台:
我有1只龟(1.000000只龟)
"""
我想要输出的是1.0,他却输出的是1.000000。那我们怎么办呢?
是时候运用本章的概念了!
如果用%格式化输出方法的话,那精准控制法如下:
#Program_39
int_ = 1 #将1赋值给变量int_
float_ = 1.0 #将1.0赋值给变量float_
str_ = "龟" #将"龟"赋值给变量str_
print("我有%d只%s(%1.1f只%s)" % (int_, str_, float_, str_)) #输出"我有1只龟(1.0只龟)"
"""
控制台:
我有1只龟(1.0只龟)
"""
可以看到,1.000000成功变为1.0。
我们发现,%f变成了%1.1f。那这是什么意思呢?
前面的1,表示预留1格输出。但这儿需要3格。所以Python自动调为3格输出。
后面的1,表示四舍五入到第一位(十分位)。
那如果输出格数有多,Python或如何做出反应呢?欲知后事如何,请听下回分解~我们试试。
#Program_39_1
int_ = 1 #将1赋值给变量int_
float_ = 1.0 #将1.0赋值给变量float_
str_ = "龟" #将"龟"赋值给变量str_
print("我有%d只%s(%10.1f只%s)" % (int_, str_, float_, str_)) #输出"我有1只龟( 1.0只龟)"
"""
控制台:
我有1只龟( 1.0只龟)
"""
可以看到,Python会靠右输出。那咱想靠左输出怎办?
别慌,我自有妙计~
#Program_39_2
int_ = 1 #将1赋值给变量int_
float_ = 1.0 #将1.0赋值给变量float_
str_ = "龟" #将"龟"赋值给变量str_
print("我有%d只%s(%-10.1f只%s)" % (int_, str_, float_, str_)) #输出"我有1只龟(1.0只龟 )"
"""
控制台:
我有1只龟(1.0 只龟)
"""
是的,加个负号,一切就结束了~
你以为只能控制浮点数的输出吗?错!
还有很多很多~
%(+/-)nd:控制整数的输出。
%(+/-)m.nf:控制浮点数的输出。
%(+/-)nx:控制十六进制整数的输出。
%(+/-)no:控制八进制整数的输出。
%(-)ns:控制字符串的输出。
%(-)m.ns:控制字符串的输出,m或n小于字符串宽度或高度的话会裁剪字符串。
%(+/-)e:控制小写e制科学计数法的输出。
%(+/-)E:控制大写E制科学计数法的输出。
实验时间到~
#Program_40
int_ = 1 #将1赋值给变量int_
print("number is %+5d" % int_) #输出"number is +1"
"""
控制台:
number is +1
"""
我们发现,加上正号,可以使正数添上正号。
#Program_41
str_ = "Python" #将"Python"赋值给变量str_
print("I love%7s" % str_) #输出"I love Python"
"""
控制台:
I love Python
"""
#Program_42
str_ = """Python
Java
C"""
"""
将\"""Python
Java
C\"""赋值给变量str_(3~5行)
"""
print("%1.6s" % str_) #输出"Python"
"""
控制台:
Python
"""
%的控制输出我们讲了,那{}和format()、f-strings的控制输出该怎么写呢?
其实也很简单。
我们以求圆面积来举例。
#Program_43
from math import * #导入math库中的所有模块
radius = 5 #将5赋值给变量raidus
area = pi * 5**2 #计算π·5²的积,并将结果赋值给变量area
print("面积 ={0:6.2f}".format(area)) #输出"面积 = 78.54"
"""
控制台:
面积 = 78.54
"""
其实也就和%格式化输出精准控制法差不多,就是把%换成{num:}了。
这个0代表第一个精准控制的数据。0是第一个,1是第二个,以此类推。
我们还可以设置数据究竟是靠左、靠中,还是靠右(<是靠左,>是靠右,^是靠中)。
#Program_43_1
from math import * #导入math库中的所有模块
radius = 5 #将5赋值给变量raidus
area = pi * 5**2 #计算π·5²的积,并将结果赋值给变量area
print("面积 ={0:<6.2f}".format(area)) #输出"面积 =78.54"
"""
控制台:
面积 =78.54
"""
我们还可以设置空格填充什么(当然必须在><^之后,否则,你会看到红字而非蓝字)。
#Program_43_2
from math import * #导入math库中的所有模块
radius = 5 #将5赋值给变量raidus
area = pi * 5**2 #计算π·5²的积,并将结果赋值给变量area
print("面积 ={0:*>6.2f}".format(area)) #输出"面积 =*78.54"
"""
控制台:
面积 =*78.54
"""
最后是f-strings的精准输出。
f-strings的精准输出基本上与{}和format()精准输出法一样。
还是以求圆面积为例。
#Program_44
from math import * #导入math库中的所有模块
radius = 5 #将5赋值给变量raidus
area = pi * 5**2 #计算π·5²的积,并将结果赋值给变量area
print(f"面积 ={area:6.2f}") #输出"面积 = 78.54"
"""
控制台:
面积 = 78.54
"""
就是把输出顺序换成变量名了而已。
好了,今天的教学就到这儿。下次再见了~