@TOC
需求:字符串中想让某些位置变成动态可传入的,首先要考虑到格式化输出。

1.% 占位符

  • %占位符使用示例,格式化一个字符串变量,然后输出。

    name = input('请输入姓名:')
    age = input('请输入年龄:')
    job = input('请输入工作:')
    hobbie = input('请输入爱好:')
    # 多行文本占位符跟最后,用%号隔开并加小括号标记,变量对应位置
    msg = '''------------info of %s-----------------
    Name :%s
    Age :%s
    Job :%s
    Hobbie :%s
    ------------------ end --------------------''' % (name, name, age, job, hobbie)
    print(msg)
    
  • 在格式化输出中,如果只想表示一个%号,而不是作为占位符使用的话使用两个%%符号即可

    print('%s项目完成进度为%d%%' % ('sheet1工作表整理',50))
    

    2.字符串的format()方法, 格式化输出

  • 第一种用法:相当于占位符

    print('我叫{},今年{}岁,性别:{}。'.format('amwkvi',27,'男'))
    
  • 第二种用法:重复调用格式化输出列表中变量或值

    print('我叫{0},今年{1}岁,性别:{2}。我的姓名是{0}'.format('amwkvi',27,'男'))
    # 重复调用格式化输出列表中变量或值
    
  • 第三种用法:键值对,无序

    print('我叫{name},今年{age}岁,性别:{sex}。'.format(age=27,sex='男',name='amwkvi'))
    

    3.Python3.6版本之后的新特性(尽量使用该方法)

优点:1.结构更清晰和简化;2.可以结合表达式和函数使用;3.效率提升很多。

  • 在字符串前面加上字母'f'或'F',字符串中用大括号进行对应变量格式化:
    name = 'walking'
    age = 20
    sex = '男'
    print(f'我叫{name},今年{age}岁,性别:{sex}。')
    
  • 可以加表达式,结合列表、字典进行格式化字符串:
    # 利用字典信息格式化字符串
    dict1 = {'name': 'walking', 'age': 20, 'sex': '男'}
    print(f"我叫{dict1['name']},今年{dict1['age']}岁,性别:{dict1['sex']}")
    # 利用其他表达式格式化字符串
    num1 = 9
    print(f'数字{num1}的平方是:{num1 ** 2}')
    name = 'walking'
    print(f'我的名字是:{name.upper()}')
    >>>我叫walking,今年20岁,性别:男
    数字9的平方是:81
    我的名字是:WALKING
    
  • 结合函数格式化字符串:
    def mysum(a,b):
    return a*b
    print(f'最终结果是:{mysum(3,7)}')
    >>>最终结果是:21
    

图片分享

在这里插入图片描述