python字符串的格式化输出
2018-03-21 18:04 鬼大斗 阅读(421) 评论(0) 编辑 收藏 举报很多时候我们在打印输入内容时希望有简单格式而不是拼接
一般做法:
1 name = input("name:").strip()
2 age = input("age:").strip()
3 job = input("job:").strip()
4 print("Name:" + name + " Age:" + age + " Job:" + job)
结果为:
Name:zhang Age:24 Job:IT
格式化输出做法:
name = input("name:").strip()
age = input("age:").strip()
job = input("job:").strip()
info = '''
----------info of %s ------- # info里每个%s就是一个占位符
Name : %s
Age : %s
Jog : %s
----------end---------------
'''%(name, name, age, job) # 这行的%就是把前面的占位符和括号后的变量关联
print(info)
结果为:
----------info of zhang -------
Name : zhang
Age : 24
Jog : IT
----------end---------------
除了%s还有%d、%f等多种类型可用,%d表示你输入的只能是数字,我们把age的%s换成%d看下会出现什么错误
1 name = input("name:").strip()
2 age = input("age:").strip()
3 job = input("job:").strip()
4 info = '''
5 ----------info of %s -------
6 Name : %s
7 Age : %d
8 Jog : %s
9 ----------end---------------
10 '''%(name, name, age, job)
11 print(info)
报错信息:
Traceback (most recent call last):
File "C:/Users/admin/PycharmProjects/test.py", line 10, in <module>
'''%(name, name, age, job)
TypeError: %d format: a number is required, not str
Name:li Age:25 Job:farmer
原因是我们input输入的虽然是数字但是存到变量中是以字符串str类型保存的,要用%d必须要修改变量类型,把第10行做如下修改age变量转为int类型即可正常执行
'''%(name, name, int(age), job)
所以一般在格式化输出是用%s比较万能,因为你输入的都是字符串str,所以不会报错。
补充另一种格式化输出函数format:
print('{0} {1} {0}'.format('a', 'b')) a b a print('{} {}'.format('a', 'b')) a b print('{name} {age}'.format(age=24, name='aaa')) aaa 24