格式化输出
Posted 许儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了格式化输出相关的知识,希望对你有一定的参考价值。
格式化输出实现方式:
1 format
format使用大括号‘{}’作为特殊字符代替‘%’,
(1)res = ‘我{},今年{},工作是{}‘.format(‘xyn‘,‘18‘,‘it‘)
运行结果为:我xyn,今年18,工作是it
(2)res = ‘我{0},今年{1},工作是{2},爱好{2}‘.format(‘xyn‘,‘18‘,‘it‘) -------0代表索引,可重复利用
我xyn,今年18,工作是it,爱好it
(3) res = ‘我叫{name},年龄{old},工作{job}‘.format(old=‘18‘,job=‘it‘,name=‘xyn‘)------------不需要一一对应,顺序可打乱
我xyn,今年18,工作是it,爱好it
2 %s,%d %表示占位符
现有一需求,问用户的姓名、年龄、工作、爱好 ,然后打印成以下格式
------------ info of Alex Li ----------- Name : Alex Li Age : 22 job : Teacher Hobbie: girl ------------- end -----------------
有三种方法可以实现此需求:
(1)
name = input(‘name:‘)
age = int(input(‘age:‘))
print(type(age))
job = input(‘job:‘)
salary = input(‘salary:‘)
info = ‘‘‘
- - - - info of {0} - - - -
name:{0}
age:{1}
job:{2}
salary:{3}
‘‘‘ .format(name,age,job,salary)
(2)
info2 = ‘‘‘
- - - info of {_name}- - -
name:{_name}
jog:{_job}
age:{_age}
salary:{_salary}
‘‘‘.format(_name=name,
_age=age,
_job=job,
_salary=salary,
)
print(info2)
(3)由于里面的 一些信息是需要用户输入的,无法预先知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦
name = input("Name:") age = input("Age:") job = input("Job:") hobbie = input("Hobbie:") info = ‘‘‘ ------------ info of %s ----------- #这里的每个%s就是一个占位符,本行的代表 后面拓号里的 name Name : %s #代表 name Age : %s #代表 age job : %s #代表 job Hobbie: %s #代表 hobbie ------------- end ----------------- ‘‘‘ %(name,name,age,job,hobbie) # 这行的 % 号就是 把前面的字符串 与拓号 后面的 变量 关联起来 print(info)
%s就是代表字符串占位符,除此之外,还有%d,是数字占位符, 如果把上面的age后面的换成%d,就代表你必须只能输入数字啦
运行后出现了错误,%d需要一个数字,而不是str, 我们输入的是数字呀,查看数据类型的方法:type()
age = input("Age:")
print(type(age))
执行输出是
Age:22
<class ‘str‘>
这是因为input接收的所有输入默认都是字符串格式!
要想程序不出错,你可以把str转成int
age = int( input("Age:") )
msg = "我是%s,年龄%d,目前学习进度为80%"%(‘金鑫‘,18) print(msg)
这样会报错,因为在格式化输出里,你出现%默认为就是占位符,此时就需要输入80%%,告诉Python解释器这只是一个单纯的%,而不是占位符。
msg = "我是%s,年龄%d,目前学习进度为80%%"%(‘金鑫‘,18)
以上是关于格式化输出的主要内容,如果未能解决你的问题,请参考以下文章
Golang PrintfSprintf Fprintf 格式化
golang的xorm如何将[]map[string][]byte 格式的数据序列化成json输出