python Format()函数的用法___实例详解(一)(全,例多)

(格式化替换,关键字替换,列表字典替换,类格式化,

魔法函数格式化,对齐及填充格式化,format对齐打印)

本篇目录内容:

📘  一、format() 函数的语法

📘  二、format() 函数基本用法

📘  三、用对齐及填充的方式格式化

📘  四、用format函数实现对齐打印

📘  五、其他内容待本系列篇(二)更新 


📘  一、format() 函数的语法

  • 语法:format(value, format_spec='')
  • 格式化指定的值,并将其插入字符串的占位符内。

将值转换为由 format_spec 控制的“格式化”表示形式。 

  • format_spec的解释将取决于值参数的类型;
  • 默认format_spec是一个空字符串,通常与调用 str(value) 具有相同的效果。
  • 将 to 转换为在搜索值的方法时绕过实例字典的调用。
  • 如果方法搜索到达对象并且format_spec为非空,或者如果format_spec或返回值不是字符串,则会引发 TypeError 异常
  • 在 3.4 版更改: 如果format_spec不是空字符串,则引发 TypeError.object().__format__(format_spec)

📘  二、format() 函数基本用法

  基本语法是通过 {} 和 : 来代替以前的 %

1、位置替换print('{0} {1}'.format('字符串1','字符串2'))格式,

      {}调用时,字符串编号顺序从0开始

2、可通过列表索引格式化字符串,{0[1]}中,‘0 是必须的

3、可以使用大括号 {} 来转义大括号,{{}}

4数字和关键字段可以混合使用来传递参数,

5关键字参数必须位于位置参数之后。

6省略字段名{}不能和数字形式的字段名同时使用

7、format 函数可以接受不限个参数,位置可以不按顺序。 

8、占位符使用大括号 {} 定义。

9、返 回 值,返回一个格式化的字符串


📖(1)按照先后顺序位置替换

  • 主要格式:print('{ } { }'.format('字符串1','字符串2'))
  • foramt会把参数按位置顺序来填充到字符串中(按照顺序自动分配),第一个参数是0,然后1 ……
  • 也可以不输入数字,则会按照顺序自动分配,而且一个参数可以多次插入
  • 一个参数可以多次插入
  • {{}}仅代表{},不占用字符串格式化位置顺序

位置替换,按照先后顺序对format内容进行匹配替换

代  码

#不指定位置,按默认顺序

print('{} {}'.format('Adversity','Awake'))

运行结果

Adversity Awake

代  码#empty 占位符
mtext1 = "我的名字叫{},我已经{}岁了~".format("逆境清醒",100)
print(mtext1)
运行结果我的名字叫逆境清醒,我已经100岁了~

代  码

#不指定位置,按默认顺序

print('{} {} {} '.format('逆境清醒:','不能如愿而行,', '也须尽力而为。'))

运行结果

逆境清醒: 不能如愿而行, 也须尽力而为。

代  码

#不指定位置,按默认顺序,{{}}仅代表{},不占用字符串格式化位置顺序

print('{} {{}} {} {{}} {}'.format('逆境清醒:','不能如愿而行,', '也须尽力而为。'))

运行结果

逆境清醒: {} 不能如愿而行, {} 也须尽力而为。

代  码

# {} 和参数的个数必须匹配,否则会报错。

print('{}{}{}{}{}{}{}{}'.format('逆境清醒:','不能如愿而行,', '也须尽力而为。'))

运行结果

Traceback (most recent call last):
  File "script.py", line 1, in <module>
    print('{}{}{}{}{}{}{}{}'.format('逆境清醒:','不能如愿而行,', '也须尽力而为。'))
IndexError: Replacement index 3 out of range for positional args tuple

Exited with error status 1

回溯(最近一次调用):
  文件 “script.py”,第 1 行,在<module>
    print('{}{}{}{}{}'.format('逆境清醒:','不能如愿而行,', '也须尽力而为。'))
索引错误:替换索引 3 超出位置参数元组的范围

已退出,错误状态为 1

代  码

#当{}号叠加时,例如{{{{}}}}

print(' {{{{}}}} {} {{{{}}}} {}{}'.format('逆境清醒:','不能如愿而行,', '也须尽力而为。'))

运行结果{{}} 逆境清醒: {{}} 不能如愿而行,也须尽力而为。

📖(2)按照索引进行匹配替换

  • 主要格式:print('{0} {1}'.format('字符串1','字符串2'))
  • 按索引编号来匹配替换{索引}的值

按照索引对format内容进行匹配替换

代  码#按索引编号来匹配
mtext1 = "我的名字是{0},我已经{1}岁了~".format("逆境清醒",100)
print(mtext1)
运行结果我的名字是逆境清醒,我已经100岁了~

代  码

# 设置指定位置

print('{0} {1}'.format('逆境','清醒'))

运行结果

逆境 清醒

代  码

# 设置指定位置

print('{1} {0}'.format('逆境','清醒'))

运行结果

清醒 逆境

代  码

# 设置指定位置

print('{1} {0} {1}'.format('逆境','清醒'))

运行结果

清醒 逆境 清醒

代  码

# 设置指定位置

print('{1}{3}:{0},{2}!{3}!'.format('不能如愿而行', '逆境','也须尽力而为','清醒'))

运行结果

逆境清醒:不能如愿而行,也须尽力而为!清醒!

代  码print("{0}{2}{1}".format("菠萝","雪梨","苹果"))
运行结果菠萝苹果雪梨

代  码

运行结果

📖(3)按关键字索引进行匹配替换

  • 主要格式:print('{关键字索引1} {关键字索引2}'.format(关键字索引1='关键字1',关键字索引2='关键字2'))

按照关键字索引对format内容进行匹配替换

代  码

print('ID:{id},Name:{name}'.format(id='No008',name='逆境清醒'))

运行结果

ID:No008,Name:逆境清醒

代  码

print("博客名:{name}, 地址:{url}".format(name="逆境清醒", url="https://blog.csdn.net/weixin_69553582"))

运行结果

博客名:逆境清醒, 地址:https://blog.csdn.net/weixin_69553582

#关键字可以随便放置

代  码

print("我今年{age}岁,座右铭{motto}".format(age="100",motto="要有勇气做真实的自己"))

print("我今年{age}岁,座右铭{motto}".format(motto="要有勇气做真实的自己",age="100"))

运行结果

我今年100,座右铭要有勇气做真实的自己

我今年100,座右铭要有勇气做真实的自己

代  码print("ID:{id},水果名:{Cname}".format(id="No01",Cname="菠萝"))
运行结果ID:No01,水果名:菠萝

📖(4)通过列表索引格式化字符串

主要格式:

  • 列表名=['列表值1','列表值2','列表值3'...]
  • print('{List[列表索引1]},{List[列表索引2]}'.format(List = 列表名))
  • 在format格式化时,可使用* 或者 ** 进行对list拆分。

通过列表索引格式化字符串

代  码

list1=['No008','逆境清醒']

print('ID:{List[0]},Name:{List[1]}'.format(List = list1))

运行结果

ID:No008,Name:逆境清醒

代  码

#注意正确使用索引值,否则会得出奇怪的答案

list1=['No008','逆境清醒']

print('ID:{List[1]},Name:{List[0]}'.format(List = list1))

运行结果

ID:逆境清醒,Name:No008

代  码

list1=['No008','逆境清醒']

print('ID:{0[0]},Name:{0[1]}'.format(list1))

运行结果

ID:No008,Name:逆境清醒

代  码

list1=['No008','逆境清醒']

print('ID:{0[1]},Name:{0[0]}'.format(list1))

运行结果

ID:逆境清醒,Name:No008

代  码

list1 = ['逆境清醒', 'https://blog.csdn.net/weixin_69553582']

print("博客名:{0[0]}, 地址:{0[1]}".format(list1))  # 0[1]中,‘0’是必须的

运行结果

博客名:逆境清醒, 地址:https://blog.csdn.net/weixin_69553582

代  码

info1 = ("草莓", "红色")
info2 = ('芒果', '黄色')
print('水果名:{0[0]}, 颜色:{0[1]}'.format(info1, info2))
print('水果名:{1[0]}, 颜色:{1[1]}'.format(info1, info2))

运行结果

水果名:草莓, 颜色:红色
水果名:芒果, 颜色:黄色

代  码

#注意正确使用索引值,否则会得出奇怪的答案

info1 = ("草莓", "红色")
info2 = ('芒果', '黄色')
print('水果名:{0[1]}, 颜色:{0[0]}'.format(info1, info2))
print('水果名:{1[1]}, 颜色:{1[0]}'.format(info1, info2))

运行结果水果名:红色, 颜色:草莓
水果名:黄色, 颜色:芒果

代  码

#注意正确使用索引值,否则会得出奇怪的答案

info1 = ("草莓", "红色")
info2 = ('芒果', '黄色')
print('水果名:{1[0]}, 颜色:{0[1]}'.format(info1, info2))
print('水果名:{0[0]}, 颜色:{1[1]}'.format(info1, info2))

运行结果水果名:芒果, 颜色:红色
水果名:草莓, 颜色:黄色
代  码#在format格式化时,可使用* 或者 ** 进行对list拆分
foods = ['苹果', '雪梨', '草莓', '菠萝', '香蕉']
s = '小白兔喜欢吃 {2} and {0} and {4}'.format(*foods)
print(s)
运行结果小白兔喜欢吃 草莓 and 苹果 and 香蕉

📖(5)通过字典设置格式化字符串

主要格式:

  • 字典名1={'字典索引1':'字典索引1的值','字典索引2':'字典索引2的值',...}
  • print('{字典索引},{字典索引值}'.format(字典名1)) 
  • 在format格式化时,可使用 ** 进行对字典拆分

通过字典设置格式化字符串

dict1={'id':'No008','name':'逆境清醒'}

错误使用方式:

print('ID:{Dict[0]},Name:{Dict[1]}'.format(dict1))

会出错:Traceback (most recent call last):

代  码

dict1={'id':'No008','name':'逆境清醒'}

print('ID:{0[id]},Name:{0[name]}'.format(dict1))

运行结果

ID:No008,Name:逆境清醒

代  码

#在format格式化时,可使用 ** 进行对字典拆分
dict1={'id':'No008','name':'逆境清醒'}

print('ID:{id},Name:{name}'.format(**dict1))

运行结果

ID:No008,Name:逆境清醒

代  码

site = {"name": "逆境清醒", "url": "https://blog.csdn.net/weixin_69553582"}

print("博客名:{name}, 地址:{url}".format(**site))

运行结果

博客名:逆境清醒, 地址:https://blog.csdn.net/weixin_69553582

代  码

info1 = {'名字': '逆境清醒', '性别':'女'}

info2 = {'名字': '蒲公英', '性别':'女'}

print('名字:{0[名字]}, 性别:{0[性别]}; 名字:{1[名字]}, 性别:{1[性别]}'.format(info1, info2))

运行结果

名字:逆境清醒, 性别:; 名字:蒲公英, 性别:

同时使用元组和字典传参

代  码

name1=["紫悦","魔法与友谊"]

name2={"Ponyname":"云宝","skill":"飞行"}

print("我是{0},我的绝招是{1}".format(*name1,**name2))

print("我是{0},我的绝招是{skill}".format(*name1,**name2))

print("我是{Ponyname},我的绝招是{skill}".format(*name1,**name2))

print("我是{Ponyname},我的绝招是{1}".format(*name1,**name2))

运行结果

我是紫悦,我的绝招是魔法与友谊

我是紫悦,我的绝招是飞行

我是云宝,我的绝招是飞行

我是云宝,我的绝招是魔法与友谊

📖(6)通过类设置格式化字符串

主要格式:

  • 类定义
    class 类名字():
        类内定义 = '类值'
        ....
  • print("{Value.类内定义}".format(Value = 类名字))

通过类设置格式化字符串

代  码

class value1():
    id = 'No008'
    name = '逆境清醒'
print("ID:{Value.id},Name{Value.name}".format(Value = value1))

运行结果

ID:No008,Name逆境清醒

代  码

class testValue(object):
    def __init__(self, value):
        self.value = value
ab = testValue(8)
print("ab=",ab)
print("testValue(8)=",testValue(8))
print("ID:{Value}".format(Value = testValue))
print("ID:{Value.value}".format(Value = ab))

运行结果

ab= <__main__.testValue object at 0x7f342b9ab670>
testValue(8)= <__main__.testValue object at 0x7f342b9bcfa0>
ID:<class '__main__.testValue'>
ID:8

代  码

class Names():
    name1='陌生但有缘的朋友'
    name2='逆境清醒'
print('你好! {names.name1},我是{names.name2}'.format(names=Names))

运行结果

你好! 陌生但有缘的朋友,我是逆境清醒

📖(7)通过魔法函数、参数设置格式化字符串

魔法函数__format__

  • 触   发:使用字符串.format(对象)时候触发
  • 参   数:一个self接收对象,一个参数接收format的{}中的格式,例如:>8
  • 返回值:必须是字符串
  • 作   用:设置对象可以作为format的参数,并且自定义对象格式化的规则
  • 注   意:无

通过魔法参数设置格式化字符串

代  码

class magiccs:
    def __format__(self, mstr):
        print("这个参数类型是:",type(mstr))  
        print(f"你使用format()函数,叫醒了我--》(逆境清醒留言内容:{mstr})")
        return "@" 

magic = magiccs()
format(magic)
 

运行结果

这个参数类型是: <class 'str'>
你使用format()函数,叫醒了我--》(逆境清醒留言内容:)

代  码

class magiccs:
    def __format__(self, mstr):
        print("这个参数类型是:",type(mstr))  
        print(f"你使用format()函数,叫醒了我--》(逆境清醒留言内容:{mstr})")
        return "@" 

magic = magiccs()
format(magic, "2023年,但行前路,不负韶华!")

运行结果

这个参数类型是: <class 'str'>
你使用format()函数,叫醒了我--》(逆境清醒留言内容:2023年,但行前路,不负韶华!)

代  码

class Date:
    __format_dic = {
        "1": "{obj.year} - {obj.mon} - {obj.day}",
        "2": "{obj.year} : {obj.mon} : {obj.day}",
        "3": "{obj.year} / {obj.mon} / {obj.day}"
    }
    def __init__(self, Year, Mon, Day):
        self.year = Year
        self.mon = Mon
        self.day = Day
        
    def __format__(self, s_str):
        if not  s_str or not  s_str in self.__format_dic:  
            f = self.__format_dic["1"]  
        else:
            f = self.__format_dic[ s_str]  
        return f.format(obj=self)  
    

mDate = Date(2023, 3, 31)
print("日期格式(选项为 1 ):",format(mDate, "1"))  
print("日期格式(选项为 2 ):",format(mDate, "2"))  
print("日期格式(选项为 3 ):",format(mDate, "3")) 
print("日期格式(选项为空, 则选择默认):",format(mDate, )) 
print("日期格式(选项不存在, 则选择默认):",format(mDate, "3iop"))

运行结果

日期格式(选项为 1 ): 2023 - 3 - 31
日期格式(选项为 2 ): 2023 : 3 : 31
日期格式(选项为 3 ): 2023 / 3 / 31
日期格式(选项为空, 则选择默认): 2023 - 3 - 31
日期格式(选项不存在, 则选择默认): 2023 - 3 - 31

代  码

运行结果

📖8)通过内嵌替换设置格式化字符串

通过内嵌替换设置格式化字符串

代  码

print('Hello {0:{1}>{2}} '.format('逆境清醒','☆',15))

运行结果

Hello ☆☆☆☆☆☆☆☆☆☆☆逆境清醒

代  码

运行结果

📖9)其他混搭使用

混搭使用

  • 可以通过索引,参数名来混搭进行匹配。
  • 注意,命名参数必须写道最后。负责会编译报错!
  • 不可以索引和默认格式化混合使用。
  • 支持对参数部分引用,可以通过索引对参数的部分进行取值

其他混搭使用

代  码

fh = ['  @  ','。','!']
keycs = {'id': 'No008','name': '逆境清醒'}
print('ID:{id} {}Name:{name}{}{}'.format(*fh, **keycs))

运行结果

ID:No008   @  Name:逆境清醒。!

代  码

#命名参数必须写在最后。否则会编译报错!
s = "{},{},说得对吗:{说得对吗}".format('努力不一定成功', '但放弃一定会失败',说得对吗="Y")
print(s)

运行结果

努力不一定成功,但放弃一定会失败,说得对吗:Y

代  码

#命名参数必须写在最后。否则会编译报错!

s1 = "{},{},说得对吗:{说得对吗}".format('努力不一定成功',说得对吗="Y", '但放弃一定会失败')
print(s)

运行结果

SyntaxError: positional argument follows keyword argument

Exited with error status 1

语法错误:位置参数跟在关键字参数后面

已退出,错误状态为 1

代  码

#不可以索引和默认格式化混合使用
s = "{} and {0}".format('Cat', 'Dog', )

print(s)

运行结果

ValueError: cannot switch from automatic field numbering to manual field specification

Exited with error status 1

值错误:无法从自动字段编号切换到手动字段规范

已退出,错误状态为 1

代  码

#不可以索引和默认格式化混合使用
s = "{} and {1}".format('Cat', 'Dog', )

print(s)

运行结果

ValueError: cannot switch from automatic field numbering to manual field specification

Exited with error status 1

值错误:无法从自动字段编号切换到手动字段规范

已退出,错误状态为 1

代  码#可以通过索引对参数的部分进行取值
s = "这是一个{s}, {s[0]} 是颜色".format(s="红苹果")
print(s)
运行结果这是一个红苹果, 红 是颜色

📘  三、用对齐及填充的方式格式化

📖1)左对齐及填充格式化字符串

  • :<    左对齐填充
  • <是左对齐,后面带宽度,

    : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

    -表示左对齐

    %-30s: 左对齐,占位符30

左对齐及填充格式化字符串

代  码

# 15表示占15个字符,-表示左对齐

print('%-15s'%'逆境清醒',end='@')

运行结果

逆境清醒           @

代  码

print('{:<10}'.format('逆境清醒'),end='@')

运行结果

逆境清醒      @

代  码

# <表示左对齐, ☆表示用☆号进行填充, 10表示共占10个字符

print('{:☆<10}'.format('逆境清醒'))

运行结果

逆境清醒☆☆☆☆☆☆

代  码

#左对齐,取30位,不够的话以空格补位

print("%-30s" % "Adversity Awake",end='@')

运行结果

Adversity Awake               @

代  码

#不设置,默认左对齐

print("{:20s} & {:20s}".format("珍惜每一次相识", "珍惜每一分温暖"))

运行结果

珍惜每一次相识              & 珍惜每一分温暖

代  码

# <表示左对齐,10表示共占10个字符

products=[["iphone",6888],["MacPro",14800],["coffee",32],["abc",2499],["Book",60],["Nike",699],["MacPro",45600],["coffee",432],["abc",244499],["Book",6230],["Nike",61299],["MacPro",14800],["coffee",32],["abc",2499],["Book",60],["Nike",699]]

print("-"*10+"商品列表"+"-"*10)

i=0

for product in products:

    print('{:<6}\t{:<10}\t{:<10}'.format(str(i), product[0], str(product[1])))

    i = i+1

运行结果

  

编外话:有时需要对齐输出,还可以使用print()+\t 来实现:

代  码print("学生号\t\t姓名\t\t\t\t\t科目\t\t分数")
print("100000101\t阿凡达\t\t\t\t\t语文\t\t80")
print("100000102\t卡梅隆卡梅隆\t\t\t语文\t\t85")
print("100000103\t莫妮卡·贝鲁卡梅隆\t\t语文\t\t85")
运行结果

#用多个制表符,对齐完好

代  码print("%-10s\t %-30s\t %-10s\t %-10s"%("学生号","姓名","科目","分数"))
print("%-10s\t %-32s\t %-10s\t %-12s"%("100000101","阿凡达","语文","80"))
print("%-10s\t %-30s\t %-10s\t %-12s"%("100000102","卡梅隆卡梅隆","语文","82"))
print("%-10s\t %-26s\t %-10s\t %-12s"%("100000103","莫妮卡·贝鲁卡梅隆","语文","85"))
运行结果

#对齐完好

更多print()函数资料详见:

Python中Print()函数的用法___实例详解(全,例多)icon-default.png?t=N7T8https://blog.csdn.net/weixin_69553582/article/details/125403845

📖(2)右对齐及填充格式化字符串

:>右对齐

  • >是右对齐,后面带宽度,
  • : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
  • %30s: 右对齐,占位符30

右对齐及填充格式化字符串

代  码

print('@''%15s'%'逆境清醒')

运行结果

@           逆境清醒

代  码

print('@''{:>10}'.format('逆境清醒'))

运行结果

@      逆境清醒

代  码

print('@','{:☆>10}'.format('逆境清醒'))

运行结果

@ ☆☆☆☆☆☆逆境清醒

代  码

# 右对齐,取30位,不够的话以空格补位

print("@""%30s" % "Adversity Awake")

运行结果

@               Adversity Awake

代  码

print("{:<20s} & {:>20s}".format("珍惜每一次相识", "珍惜每一分温暖"))

运行结果

珍惜每一次相识              &              珍惜每一分温暖

代  码

print("{:>20s} & {:<20s}".format("珍惜每一次相识", "珍惜每一分温暖"))

运行结果

             珍惜每一次相识 & 珍惜每一分温暖

代  码

print("{} is {:>10.2f}".format(1.8321, 1.8321))

运行结果

1.8321 is       1.83

📖3)居中对齐及填充格式化字符串

:^    居中对齐

  • ^是居中对齐,后面带宽度,
  • : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

居中对齐及填充格式化字符串

代  码

print('@''{:^10}'.format('逆境清醒'),end='@')

运行结果

@   逆境清醒   @

代  码

print('@''{:☆^10}'.format('逆境清醒'),end='@')

运行结果

@☆☆☆逆境清醒☆☆☆@

代  码

print("{:^20s} & {:^20s}".format("珍惜每一次相识", "珍惜每一分温暖"))

运行结果

      珍惜每一次相识        &       珍惜每一分温暖

代  码

print("{:☆^30s}".format(" 逆境清醒 ") ) # 居中对齐

运行结果

☆☆☆☆☆☆☆☆☆☆☆☆ 逆境清醒 ☆☆☆☆☆☆☆☆☆☆☆☆

📖(4)调用函数对齐及填充格式化字符串

  • ljust()函数:左侧对齐
  • rjust()函数:右侧对齐
  • center()函数:字符串居中对齐
  • zfill()函数:右侧对齐, 左侧补0
  • 当len(str1)>width时,输全部字符串

调用函数对齐及填充格式化字符串

代  码

# 字符串左侧对齐, 右侧补❄:

str1 = "逆境清醒"
width = 20

print(str1.ljust(width, '❄'))

运行结果

逆境清醒❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄

代  码

# 字符串左侧对齐, 右侧补❄:
str1 = "逆境清醒"
width = 20

print("{}".format(str1.ljust(width, '❄')) )

运行结果

逆境清醒❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄

代  码

# 字符串右侧对齐, 左侧补❄:

str1 = "逆境清醒"
width = 20

print(str1.rjust(width, '❄'))

print("{}".format(str1.rjust(width, '❄')) )

运行结果

❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄逆境清醒
❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄逆境清醒

代  码

# center字符串居中对齐, 两侧侧补❄

str1 = "逆境清醒"
width = 20

print(str1.center(width, '❄'))

print("{}".format(str1.center(width, '❄')) )

运行结果

❄❄❄❄❄❄❄❄逆境清醒❄❄❄❄❄❄❄❄
❄❄❄❄❄❄❄❄逆境清醒❄❄❄❄❄❄❄❄

代  码

# 字符串右侧对齐, 左侧补0

str1 = "逆境清醒"
width = 20
print(str1.zfill(width))
print("{}".format(str1.zfill(width)) )

运行结果

0000000000000000逆境清醒
0000000000000000逆境清醒

📘  四、用format函数实现对齐打印

📖(1)打印左对齐图案

代码:

def show(n):
    numlast = "🌸"*(2*n-1)
    width = len(numlast)
    for i in range(1,2*n,2):
        print("{:<{}}".format("🌸"*i,width))

show(8)

 输出结果: 

📖(2)打印右对齐图案

代码:

def show(n):
    numlast = "0"*(2*n-1)
    width = len(numlast)
    width=20
    for i in range(1,2*n,2):
        print("{:>{}}".format("0"*i,width))
show(8)

输出结果: 

📖(3)打印居中对齐图案

代码:

def show2(n):
    numlast = "❄"*(2*n-1)  
    width = len(numlast)   
    for i in range(1,2*n,2):
        print("{:^{}}".format("❄"*i,width))
show2(8)

输出结果: 

📘  五、其他内容待本系列篇(二)更新 

  ​稍后更新

《 python Format()函数的用法___实例详解(二)(全,例多)》

           推荐阅读:

Python注释

自言自语的独角戏小丑“讲”的“演讲”,看吗?icon-default.png?t=N7T8https://blog.csdn.net/weixin_69553582/article/details/141300893

33python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印
32Background 全属性实例图解(10种全)(一)
31Element Plus 实例详解(一)___安装设置
30

​​​​​

Vue3安装配置、开发环境搭建(组件安装卸载)(图文详细)
29

SVG实例详解系列(一)(svg概述、位图和矢量图区别(图解)、SVG应用实例)

28

查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决

27bba02a1c4617422c9fbccbf5325850d9.png

别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(1)

26fea225cb9ec14b60b2d1b797dd8278a2.png

2023年春节祝福第二弹——送你一只守护兔,让它温暖每一个你【html5 css3】画会动的小兔子,炫酷充电,字体特

251f53fb9c6e8b4482813326affe6a82ff.png

2023春节祝福系列第一弹(上)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载)

246176c4061c72430eb100750af6fc4d0e.png

HTML+CSS+svg绘制精美彩色闪灯圣诞树,HTML+CSS+Js实时新年时间倒数倒计时(附源代码)

2317b403c4307c4141b8544d02f95ea06c.png

​草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码

225d409c8f397a45c986ca2af7b7e725c9.png

【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)

210a4256d5e96d4624bdca36433237080b.png

python爱心源代码集锦(18款)

204d9032c9cdf54f5f9193e45e4532898c.png

巴斯光年python turtle绘图__附源代码

19074cd3c255224c5aa21ff18fdc25053c.png

Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一)

18daecd7067e7c45abb875fc7a1a469f23.png

​草莓熊python turtle绘图代码(玫瑰花版)附源代码

17fe88b78e78694570bf2d850ce83b1f69.png

立体多层玫瑰绘图源码__玫瑰花python 绘图源码集锦

16c5feeb25880d49c085b808bf4e041c86.png

皮卡丘python turtle海龟绘图(电力球版)附源代码

1538266b5036414624875447abd5311e4d.png

【CSDN云IDE】个人使用体验和建议(含超详细操作教程)(python、webGL方向)

1403ed644f9b1d411ba41c59e0a5bdcc61.png​​​​​​​​

草莓熊python turtle绘图(风车版)附源代码

1309e08f86f127431cbfdfe395aa2f8bc9.png​​​​​​​​

用代码过中秋,python海龟月饼你要不要尝一口?

1240e8b4631e2b486bab2a4ebb5bc9f410.png​​​​​​​​

《 Python List 列表全实例详解系列(一)》__系列总目录、列表概念

11938bc5a8bb454a41bfe0d4185da845dc.jpeg​​​​​​​​

用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心)

100f09e73712d149ff90f0048a096596c6.png​​​​​​​​

Python函数方法实例详解全集(更新中...)

993d65dbd09604c4a8ed2c01df0eebc38.png​​​​​​​​

matplotlib 自带绘图样式效果展示速查(28种,全)

8aa17177aec9b4e5eb19b5d9675302de8.png​​​​​​​​

手机屏幕坏了____怎么把里面的资料导出(18种方法)

71750390dd9da4b39938a23ab447c6fb6.jpeg​​​​​​​​

2023年3月TIOBE 指数头条:编程语言 Go 进入 TIOBE 指数前 10 名,多家权威机构____编程语言排行榜__薪酬状

6dc8796ddccbf4aec98ac5d3e09001348.jpeg​​​​​​​​

Python中Print()函数的用法___实例详解(全,例多)

51ab685d264ed4ae5b510dc7fbd0d1e55.jpeg​​​​​​​​

色彩颜色对照表(一)(16进制、RGB、CMYK、HSV、中英文名)

480007dbf51944725bf9cf4cfc75c5a13.png​​​​​​​​

Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细)

3c6374d75c29942f2aa577ce9c5c2e12b.png​​​​​​​​

Tomcat 启动闪退问题解决集(八大类详细)

25218ac5338014f389c21bdf1bfa1c599.png​​​​​​​​

Tomcat端口配置(详细)

1fffa2098008b4dc68c00a172f67c538d.png​​​​​​​​

tomcat11、tomcat10 安装配置(Windows环境)(详细图文)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐