鱼C论坛

 找回密码
 立即注册
查看: 252|回复: 6

[已解决]为什么这里用None会报错

[复制链接]
发表于 2024-7-27 16:54:09 | 显示全部楼层 |阅读模式

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

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

x
代码如下:

"{:None}".format(80)
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    "{:None}".format(80)
ValueError: Invalid format specifier 'None' for object of type 'int'
最佳答案
2024-7-27 19:17:52
”{:}“里应是整型的对象,None不行的,语法错误。
多尝试几次,你可以试着改变format()里的参数(应该也是错误,我试了)
"{:x}".format(80)
'50'
"{:None}".format(80)
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    "{:None}".format(80)
ValueError: Invalid format specifier 'None' for object of type 'int'
"{:None}".format(80.0)
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    "{:None}".format(80.0)
ValueError: Invalid format specifier 'None' for object of type 'float'
"{:None}".format()
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    "{:None}".format()
IndexError: Replacement index 0 out of range for positional args tuple
"{:None}".format( )
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    "{:None}".format( )
IndexError: Replacement index 0 out of range for positional args tuple

失败是成功他妈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-7-27 17:45:45 | 显示全部楼层
       你想验证什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-27 17:46:58 | 显示全部楼层
在Python的str.format()方法中,你遇到的错误是因为你尝试使用了None作为格式说明符,这是不允许的。格式说明符应该是一个描述如何格式化值的字符串,比如{:d}用于整数,{:f}用于浮点数,等等。

None在Python中是一个特殊的值,用于表示空值或“无”的概念,它不是有效的格式说明符。

如果你的目的是让数字(在这个例子中是80)以某种特定的方式显示,但又不希望进行任何格式化(即,保持为字符串形式的数字),你可以简单地使用{}作为占位符,而不加任何格式说明符。但是,由于int到str的转换是自动的,你甚至不需要使用str.format(),直接使用字符串拼接或str()函数即可。

这里是几种不同的方式来实现你的目的:

使用str.format()但不加格式说明符:
python
"{}".format(80)  # 结果是 '80'
直接使用字符串拼接(对于简单的情况):
python
str(80)  # 结果是 '80'
如果你确实需要str.format()来格式化其他部分,但对于某些值不需要特定格式:
python
"The number is {}".format(80)  # 结果是 'The number is 80'
在这些例子中,80都被正确地转换成了字符串'80',并且没有使用到无效的格式说明符None。

如果你的目标是让数字以某种特殊的方式显示(比如,以十六进制、八进制或带有千分位分隔符的形式),你应该使用相应的格式说明符,如{:x}, {:o}, 或 {:,}等。例如:

python
"{:x}".format(80)  # 结果是 '50',因为80的十六进制是50  
"{:,}".format(1234567)  # 结果是 '1,234,567',带有千分位分隔符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-27 18:36:49 | 显示全部楼层

谢谢,您的回复让我意识到我的问题可能不够详细
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-27 18:50:54 | 显示全部楼层
某一个“天” 发表于 2024-7-27 17:46
在Python的str.format()方法中,你遇到的错误是因为你尝试使用了None作为格式说明符,这是不允许的。格式说 ...

谢谢您的耐心回复。我在B站学习小甲鱼的Python课程第33节,关于字符串的最后一讲,也就是您说的str.format()方法。因为在论坛其他帖子里看到None的用法说明,原文如下:“None&#160; &#160; &#160; &#160; 类似于 'g',不同之处在于当使用定点表示法时,小数点后将至少显示一位;默认精度与给定值所需的精度一致”。我就自己去尝试了一下,看是否能得到和g一样的结果。结果就遇到了报错。所以就来这里请教一下大家。
但是,您的解释好像和论坛的说法不一致,不知道是不是我理解的有问题,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-27 19:17:52 | 显示全部楼层    本楼为最佳答案   
”{:}“里应是整型的对象,None不行的,语法错误。
多尝试几次,你可以试着改变format()里的参数(应该也是错误,我试了)
"{:x}".format(80)
'50'
"{:None}".format(80)
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    "{:None}".format(80)
ValueError: Invalid format specifier 'None' for object of type 'int'
"{:None}".format(80.0)
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    "{:None}".format(80.0)
ValueError: Invalid format specifier 'None' for object of type 'float'
"{:None}".format()
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    "{:None}".format()
IndexError: Replacement index 0 out of range for positional args tuple
"{:None}".format( )
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    "{:None}".format( )
IndexError: Replacement index 0 out of range for positional args tuple

失败是成功他妈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-27 22:45:33 | 显示全部楼层
三体人的智子 发表于 2024-7-27 19:17
”{:}“里应是整型的对象,None不行的,语法错误。
多尝试几次,你可以试着改变format()里的参数(应该 ...

搞不懂,先跳过了。
谢谢您!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 17:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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