很多时候我们在打印输入内容时希望有简单格式而不是拼接
一般做法:
name = input("name:").strip()
age = input("age:").strip()
job = input("job:").strip()
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看下会出现什么错误
name = input("name:").strip()
age = input("age:").strip()
job = input("job:").strip()
info = '''
----------info of %s -------
Name : %s
Age : %d
Jog : %s
----------end---------------
'''%(name, name, age, job)
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