当你遇到这样的需求:字符串中想让某些位置变成动态可传入的,首先要考虑到格式化输出。
(python代码飘红,说明该代码不是一个python认识的数据类型。)
'''
--------------info of 德刚 -----------
Name : 德刚
Age : 73
Job : Teacher
Hobbie : play
------------ end ------------
'''
# 制作一个公共的模板
# 让一个字符串的某些位置变成动态可传入的。
# 格式化输出
name = input('请输入你的姓名:')
age = input('请输入你的年龄:')
job = input('请输入你的工作:')
hobby = input('请输入你的爱好:')
# % 占位符
msg = '''--------------info of %s -----------
Name : %s
Age : %s
Job : %s
Hobbie : %s
------------ end ------------''' % (name, name, age, job, hobby)
print(msg)
# 坑一:
name = input('请输入你的姓名:')
age = input('请输入你的年龄:') # 这里输入的都是字符串,所以后面传入数字则需要转换。
job = input('请输入你的工作:')
hobby = input('请输入你的爱好:')
# % 占位符 s-->str 。 数字用 d 或 i 。 还有 r 以后再讲。
msg = '''--------------info of %s -----------
Name : %s
Age : %d
Job : %i
Hobbie : %s
------------ end ------------''' % ('name', name, int(age), int(job), hobby) # 第一个name传入的是一个字符串,而不是变量了。
print(msg)
'''
运行结果:
--------------info of name -----------
Name : 王
Age : 27
Job : 2002
Hobbie : 溜达
------------ end ------------
'''
#%s 字符串(采用str的显示)
#%r 字符串(采用repr的显示)
#%c 单个字符占位
#%b 二进制整数
#%i 十进制整数
#%o 八进制整数
#%x 十六进制整数
#%e 指数(基底写为e)
#%E 指数(基底写为E)
#%f 浮点数占位
#%F 浮点数占位
#%g 指数e 或 浮点数(根据显示长度)
#%G 指数E 或 浮点数(根据显示长度)
# 坑二:
# 在格式化输出中, % 只想表示一个百分号,而不是作为占位符使用
msg = '我叫%s,今年%s,学习进度1%%' % ('太白金星', 18) # %是占位符,两个%才能输出百分号,即%%。
print(msg)
'''
我叫太白金星,今年18,学习进度1%
'''
# format:格式化输出
# 第一种用法:
msg = '我叫{}今年{}性别{}'.format('大壮', 25, '男')
print(msg)
'''
运行结果:
我叫大壮今年25性别男
'''
# 第二种用法:
msg2 = '我叫{0}今年{1}性别{2}我依然叫{0}'.format('大壮', 25, '男')
print(msg2)
'''
运行结果:
我叫大壮今年25性别男我依然叫大壮
'''
# 第三种用法:
a = 100
msg3 = '我叫{name}今年{age}性别{sex}'.format(age=a, sex='男', name='大壮')
print(msg3)
'''
运行结果:
我叫大壮今年100性别男
'''