鱼C论坛

 找回密码
 立即注册
查看: 1485|回复: 10

[已解决]九九乘法表中format函数格式化输出的问题

[复制链接]
发表于 2022-1-8 23:04:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
for i in range(1,10):
    for j in range(1,i+1):
        print("{0:1}*{1:1}={2:2}  ".format(j,i,j*i),end="") 
    print()
在第3行中的“{0:1}”、“{1:1}”、“{2:2}”是什么鬼?
“{2:2}”后面的2个空格有什么用?
format函数怎么用?
最佳答案
2022-1-9 10:08:08
CtrlCV工程師 发表于 2022-1-9 08:59
为什么有的代码不是这样的

都可以,因为 Python 有三种字符串格式化:

1.)%占位符格式化
2.).format() 格式化
3.)f-string 格式化

a = "小甲鱼"
b = 99
c = 87.13
d = True

print("%s 今年 %d 岁,体重是 %.2f,真表示 %r"%(a, b, c, d))     # %占位符格式化
print("{} 今年 {} 岁,体重是 {},真表示 {}".format(a, b, c, d)) # .format() 格式化
print(f"{a} 今年 {b} 岁,体重是 {c},真表示 {d}")               # f-string 格式化
小甲鱼 今年 99 岁,体重是 87.13,真表示 True
小甲鱼 今年 99 岁,体重是 87.13,真表示 True
小甲鱼 今年 99 岁,体重是 87.13,真表示 True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-8 23:45:29 | 显示全部楼层
{位置: 长度} 对应后面的 .format(位置 0,位置 1, 位置 2,...)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-9 08:59:06 | 显示全部楼层
傻眼貓咪 发表于 2022-1-8 23:45
{位置: 长度} 对应后面的 .format(位置 0,位置 1, 位置 2,...)


为什么有的代码不是这样的
print("{0}×{1}={2:2d}".format(j,i,j*i), end = ' ')
 print(f"{j}×{i}={j*i:2d}", end = ' ')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-9 10:08:08 | 显示全部楼层    本楼为最佳答案   
CtrlCV工程師 发表于 2022-1-9 08:59
为什么有的代码不是这样的

都可以,因为 Python 有三种字符串格式化:

1.)%占位符格式化
2.).format() 格式化
3.)f-string 格式化

a = "小甲鱼"
b = 99
c = 87.13
d = True

print("%s 今年 %d 岁,体重是 %.2f,真表示 %r"%(a, b, c, d))     # %占位符格式化
print("{} 今年 {} 岁,体重是 {},真表示 {}".format(a, b, c, d)) # .format() 格式化
print(f"{a} 今年 {b} 岁,体重是 {c},真表示 {d}")               # f-string 格式化
小甲鱼 今年 99 岁,体重是 87.13,真表示 True
小甲鱼 今年 99 岁,体重是 87.13,真表示 True
小甲鱼 今年 99 岁,体重是 87.13,真表示 True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-1-9 10:14:31 From FishC Mobile | 显示全部楼层
傻眼貓咪 发表于 2022-1-8 23:45
{位置: 长度} 对应后面的 .format(位置 0,位置 1, 位置 2,...)

那長度為1和為2有什麼區別
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-9 10:19:31 | 显示全部楼层
CtrlCV工程師 发表于 2022-1-9 10:14
那長度為1和為2有什麼區別

因为好看
arr = [12345, 36, 196, 7]

print("这是没有对齐输出结果:")
for i in arr:
    print(i, i*i)

# ----------------------------

print()
print("这是有对齐输出结果:")
for i in arr:
    print("{:5} {:10}".format(i, i*i))
这是没有对齐输出结果:
12345 152399025
36 1296
196 38416
7 49

这是有对齐输出结果:
12345  152399025
   36       1296
  196      38416
    7         49
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-9 10:27:23 | 显示全部楼层
这是两种不同的格式化字符串方法:
加 f ,print(f’{i}*{j}={i*j:2d}',end='')  ,可以直接将字符串里面花括号括起来的变量和表达式打印出来, 输出j*i = i*j
  print('{0}*{1}={2:2d}' .format(i,j,i*j),end=''),format方法,是将接收到的位置参数和关键字系数传送到一个字段里,而这个字段在字符串中由花括号表示。在这里,{0}{1}{2}代表的是位置参数,(i,j,i*j)是关键字参数。
不知道我这样解释可曾说清楚了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-9 10:28:32 | 显示全部楼层
print("{0}×{1}={2:2d}".format(j,i,j*i), end = ' ')
2d中的d意思是以十进制显示,你可以把d换成x试试就明白了。

print(f"{j}×{i}={j*i:2d}", end = ' ')
是利用了print(f"{表达式}") 的用法,引用了变量j,i ,及结果。这个答案比上面那个更简洁。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-9 10:40:05 | 显示全部楼层
傻眼貓咪 发表于 2022-1-9 10:08
都可以,因为 Python 有三种字符串格式化:

1.)%占位符格式化

為什麼您的format格式化{}裡面什麼都沒有,長度和位置都是可以省略的嗎?
還有就是%占位符的 %s  %d  %.2f  %r是什麼意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-9 10:47:33 | 显示全部楼层
CtrlCV工程師 发表于 2022-1-9 10:40
為什麼您的format格式化{}裡面什麼都沒有,長度和位置都是可以省略的嗎?
還有就是%占位符的 %s  %d  %. ...

这个你可以查找小甲鱼的字符串格式化教学,或百度很多教学很详细的用法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-9 10:51:58 | 显示全部楼层
CtrlCV工程師 发表于 2022-1-9 10:40
為什麼您的format格式化{}裡面什麼都沒有,長度和位置都是可以省略的嗎?
還有就是%占位符的 %s  %d  %. ...

長度和位置可以省略,除了长度和位置,其实还有很多很多其它参数,只是这里也被省略了。
%s  %d  %.2f  %r 就是占位符(如上,百度搜索有很多教学)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 13:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表