python字符串的格式化输出

很多时候我们在打印输入内容时希望有简单格式而不是拼接

一般做法:

 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
上一篇:Python基础学习_01修改代码所属作者


下一篇:python基础学习(起步)