python字符串的格式化输出

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

一般做法:

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
原文地址:https://www.cnblogs.com/fanhk/p/8618673.html