吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 483|回复: 16
收起左侧

[求助] 关于格式化字符串字面值的一点疑惑

[复制链接]
甜萝 发表于 2024-5-8 23:21
本帖最后由 paypojie 于 2024-5-8 23:21 编辑

为什么用%符号来格式化内容时 下面这样写不会报错

a = 0
print('%d' % a)
print('%s' % a)

1715181270429.png


而这样则写会报错 这是什么原因导致的?

b = 'b'
print('%s' % b)
print('%d' % b)

1715181429469.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Arcticlyc 发表于 2024-5-8 23:40
看报错,%d 只支持 数字
 楼主| 甜萝 发表于 2024-5-8 23:50
Arcticlyc 发表于 2024-5-8 23:40
看报错,%d 只支持 数字

报错看的懂 就是%s为啥既支持字符串 又支持数字呢
kittylang 发表于 2024-5-8 23:54
本帖最后由 kittylang 于 2024-5-8 23:56 编辑

可以看文档,文档是学习python最好的教材,https://docs.python.org/zh-cn/3/ ... e-string-formatting d是十进制整数,s是可以被str的任意值

值得注意的是%是不被官方推荐的过时方式
 楼主| 甜萝 发表于 2024-5-9 00:06
kittylang 发表于 2024-5-8 23:54
可以看文档,文档是学习python最好的教材,https://docs.python.org/zh-cn/3/ ... e-string-formatting d是 ...

讲解的不错
bester 发表于 2024-5-9 08:21
隐式类型转换,数字0可以转字符串0,但是你别的字符串不能转数字啊,说不定你填字符串0,可以转
无闻无问 发表于 2024-5-9 08:34
本帖最后由 无闻无问 于 2024-5-9 08:37 编辑
paypojie 发表于 2024-5-8 23:50
报错看的懂 就是%s为啥既支持字符串 又支持数字呢

python这玩意就是大杂烩,估计吸纳了c的语法,c中整型和字符型就是近亲,几乎可以通用,还有就是类型转换,范围小或精度低可自动转大,反之就不行……
海是倒过来的天 发表于 2024-5-9 09:06
不用纠结这个,其实就是python语法的问题。记住就可以了
QvQsuipian 发表于 2024-5-9 09:54
本帖最后由 QvQsuipian 于 2024-5-9 09:55 编辑

使用 % 格式化字符串时,你需要确保你提供的格式化类型(如 %d%s%f 等)与你要插入到字符串中的变量的类型相匹配。

在你的第一个例子中:

a = 0
print('%d' % a)  # 正确,因为a是整数,%d用于整数
print('%s' % a)  # 正确,但这不是最佳实践,因为%s是通用格式符,它可以用于任何类型,包括整数

%d 是用于整数的格式化类型,而 %s 是一个通用的格式化类型,它可以用于任何数据类型(如字符串、整数、浮点数等)。因此,即使 a 是一个整数,使用 %s 来格式化它也不会报错,但这不是最佳实践,因为它不会执行任何类型检查或转换。

然而,在你的第二个例子中:

b = 'b'
print('%s' % b)  # 正确,因为b是字符串,%s用于字符串
print('%d' % b)  # 错误,因为b是字符串,但%d期望一个整数

当你尝试使用 %d 来格式化一个字符串 b 时,Python会抛出一个 TypeError,因为它期望一个整数,但得到了一个字符串。这种类型不匹配会导致运行时错误。

在现代Python代码中,更推荐使用新的字符串格式化方法,如 str.format() 方法或 f-string(在Python 3.6及以上版本中可用),它们提供了更强大、更灵活和更易读的字符串格式化功能。

免费评分

参与人数 1吾爱币 +1 收起 理由
甜萝 + 1 热心回复!

查看全部评分

GuoTingRui 发表于 2024-5-9 10:50
我也是 这个确实很迷惑,也是希望大佬讲解一下~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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