有一个需求,问用户的姓名,年龄,工作,爱好,然后打印成以下格式:
-----------info of yangwei---------------
Name : yangwei
Age : 22
Job : IT
Hobby : read
---------------end-------------------
这种形式用字符拼接的方式还很难实现这种格式的输出,因此需要格式化输出。
只需要把打印的格式先准备好,由于里面的一些信息是需要用户输入的,没办法预先知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系。
name = input("Name:")
age = input("Age:")
job = input("Job:")
hobby = input("hobby:")
info = """
-----------info of %s--------------- #这里的每个%s就是一个占位符
Name : %s #代表name
Age : %s #代表age
Job : %s #代表job
Hobby : %s #代表hobby
---------------end-------------------
""" % (name, name, age, job, hobby)
# 这行的%,就是把前面的字符串与括号后面的变量关联起来
print(info)
%就是代表字符串占位符,除此之外,还有%d,是数字占位符,如果把上面的age后面的换成%d,就代表必须只能输入数字。
age : %d
但是当实际运行的时候却出错了:
TypeError: %d format: a number is required, not str
这是因为input的所有输入默认是字符串格式的。