python中“format后的参数排列顺序必须按照格式字符串中槽{}的排列顺序依次一一对应”为什么错误?谢谢

python中“format后的参数排列顺序必须按照格式字符串中槽{}的排列顺序依次一一对应”为什么错误?谢谢,第1张

format函数实现字符串格式化的功能

基本语法为:

通过 : 和 {} 来控制字符串的 *** 作

一、对字符串进行 *** 作

1 不设置指定位置,按默认顺序插入

①当参数个数等于{}个数的时候

str_1 = "小明{}小美,可是小美{}小明"format("喜欢", "不喜欢")

print(str_1)

运行结果

②当参数个数大于{}个数的时候

str_1 = "小明{}小美,可是小美{}小明"format("喜欢", "不喜欢", "也不喜欢", "更不喜欢")

print(str_1)

运行结果:

③当参数个数习小于{}个数的时候

str_1 = "小明{}小美,可是小美{}小明"format("喜欢")

print(str_1)

运行结果:

程序会报错:越界

由此可以得出,当我们不指定参数位置的时候,format函数会帮我们按顺序将其接收到的参数,填入到{}中。

2 设置指定位置

当format接收到的参数个数大于{}或者我们想将不同{}替换为相同字符串的时候,我们可以在{}内指定接收第几个参数。format接收的参数,从0开始。

str_1 = "小明{1}小美,可是小美{3}小明,小美{0}小明,小美{2}小华"format("不喜欢", "喜欢", "更喜欢", "很讨厌")

print(str_1)

在这一句代码中,分别为不同的{}指定了接收的参数位置。

运行结果:

很显然,如果我们的{}的个数小于format的参数也是OK的。

str_1 = "小明{1}小美,可是小美{3}小明,小美{2}小华"format("不喜欢", "喜欢", "更喜欢", "很讨厌")

print(str_1)

运行结果:

由此我们得出结论:

在使用format()函数的时候,我们给format()的个数是不限的,如果我们并没有在{}中指定位置,那么format()会自动按顺序将参数填入{},而如果我们为{}指定了位置,那么format()就会把指定位置的参数填入对应的{}中。

3设置format()参数的值①直接在format()中进行赋值

str_1 = "博主:{name}, 博客地址:{url}"format(name="KaiSarH", url="https://blogcsdnnet/KaiSarH")

运行结果:

②通过传递多值参数向format传递参数进而对{}进行赋值

- 使用传递字典。

在Python中,使用可以传递一个字典参数,我们可以使用键名进行匹配,进而进行赋值

dict_1 = {"name": "KaiSarH",

"url": "https://blogcsdnnet/KaiSarH"}

str_2 = "博主:{name}, 博客地址:{url}"format(dict_1)

运行结果:

我们向format()传递的字典参数,所包含的键值对,必须包含所有的{}名。只能多(正确),不能少(报错)。

dict_1 = {"name": "KaiSarH",

"url": "https://blogcsdnnet/KaiSarH",

"login": "login information"}

str_2 = "博主:{name}, 博客地址:{url}"format(dict_1)

print(str_2)

dict_1 = {"name": "KaiSarH",

"key": "https://blogcsdnnet/KaiSarH",

"login": "login information"}

str_4 = "博主:{name}, 博客地址:{url}"format(dict_1)

print(str_4)

运行结果:

注意:我们可以向format()中传递多个字典,但是不可以含有相同键。

dict_1 = {"name": "KaiSarH",

"url": "https://blogcsdnnet/KaiSarH",

"login": "login information"}

str_2 = "博主:{name}, 博客地址:{url}"format(dict_1)

dict_2 = {"name": "KaiSarH",

"key": "https://blogcsdnnet/KaiSarH",

"login": "login information"}

str_4 = "博主:{name}, 博客地址:{url}"format(dict_1, dict_2)

print(str_4)

运行结果:

- 传递列表

list_1 = ["KaiSarH","https://blogcsdnnet/KaiSarH"]

str_3 = "博主:{0[0]}, 博客地址:{0[1]}"format(list_1)

运行结果:

除了传递一个列表,我们也可以向format()中传递多个列表,只需保证取值的时候无误就可以。

list_1 = ["ZhangSan","https://blogcsdnnet/KaiSarH"]

list_2 = ["KaiSarH", "http:wwwbaiducom"]

str_3 = "博主:{1[0]}, 博客地址:{0[1]}"format(list_1, list_2)

运行结果:

③向format()中传入对象,进行赋值

与列表相同,我们同样可以向format()中传递多个对象,只要在赋值的之后做好对应就可以。

class Dog:

def __init__(self, name):

selfname = name

class Mouse:

def __init__(self, name):

selfname = name

tom = Dog("Tom")

jerry = Mouse("Jerry")

str_1 = "{0name} want to eat {1name}"format(tom, jerry)

print(str_1)

运行结果:

二、对数字进行格式化

对于数字的格式化,我们主要是在{}中进行设置格式化数字的多种方法

1保留小数点后n位

格式:{:nf}

print("{:1f}"format(31415926535))

print("{:3f}"format(31415926535))

print("{:4f}"format(31415926535))

print("{:6f}"format(31415926535))

运行结果:

2带符号保留小数点后n位

格式:{:+nf}

print("{:+1f}"format(31415926535))

print("{:+3f}"format(-31415926535))

print("{:+4f}"format(31415926535))

print("{:+6f}"format(-31415926535))

运行结果:

{:nf}和 {:+nf}的区别

负数无区别,整数有无符号。

print("{:1f}"format(31415926535))

print("{:+1f}"format(31415926535))

print("{:3f}"format(-31415926535))

print("{:+3f}"format(-31415926535))

print("{:4f}"format(31415926535))

print("{:+4f}"format(31415926535))

print("{:7f}"format(-31415926535))

print("{:+7f}"format(-31415926535))

运行结果:

3不带小数(只保留整数)

格式:{:0f}

print("{:0f}"format(31415926535))

print("{:0f}"format(-31415926535))

print("{:0f}"format(38415926535))

运行结果:

4如果整数的位数不足n位,在左边进行数字补零。如果已经够了n位,直接输出

格式:{:0>nd}

print("{:0>2d}"format(5))

print("{:0>3d}"format(5))

print("{:0>5d}"format(123456))

运行结果:

5如果整数的位数不足n位,在右边进行x补充。如果已经够了n位,直接输出

格式:{:x<4d}

print("{:x<2d}"format(5))

print("{:x<3d}"format(5))

print("{:x<4d}"format(123456))

运行结果:

很显然,在补充 *** 作中,我们既可以指定在哪一边补充,也可以指定补充的值为什么。

我们也可以利用print("{:x>2f}"format(31))或者{:x<2f>

6以逗号分隔数字格式,每三位加入一个,

格式:{:,}

print("{:,}"format(314156926))

运行结果:

7百分比格式(在我理解,就是把数字×100,保留两位数字,然后加一个百分号)

格式:{:2%}

print("{:2%}"format(027896))

运行结果:

8指数记法

格式:{:2e}

print("{:2e}"format(100))

运行结果:

9右对齐(默认宽度为10)

格式:{:>10d}

print("{:>10d}"format(100))

print("{:>10d}"format(2))

print("{:>10d}"format(12580))

运行结果:

10左对齐(默认宽度为10)

格式:{:<10d}

print("{:<10d}"format(100))

print("{:<10d}"format(2))

print("{:<10d}"format(12580))

运行结果:

11中间对齐(默认宽度为10)

格式:{:^10d}

print("{:^10d}"format(100))

print("{:^10d}"format(2))

print("{:^10d}"format(12580))

运行结果:

12进制——b、d、o、x 分别是二进制、十进制、八进制、十六进制。

格式:

‘{:b}'format(11)

‘{:d}'format(11)

‘{:\o}'format(11)

‘{:x}'format(11)

‘{:#x}'format(11)

‘{:#X}'format(11)

print("{:b}"format(125))

print("{:d}"format(125))

print("{:o}"format(125))

print("{:x}"format(125))

print("{:#x}"format(125))

print("{:#X}"format(125))

运行结果:

在{}里继续嵌2113套一次{},并在5261format的参数里增4102加一项即可。

b=10

print("{0:^{width}}"format("字符1653串专",

width=b))

b=30

print("{0:^{width}}"format("字符串",

width=b))

最后得到的属输出如下

字符串

字符串

python3的format函数中s表示格式化字符串类型数据

{:>15s}表示右对齐15个字符,左侧空白默认用空格填充

{:<82f}表示左对齐加小数点一共8位的浮点型小数,保留小数点后两位

{:>15s}:{:<82f}中间的冒号,就是分隔两个数据的分隔符

所以print("{:>15s}:{:<82f}"format("Length",2387501))这一句的运行结果是

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/13494723.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存