Python中的ValueError,是否只能识别值不是int或float,而无法区分值是否在[1,100]内,请问如何解决?
请问我的代码如何要解决这个问题,谢谢大佬!
回答:
您没有要求过 python 检查数是不是在您想要的范围, python 当然不会检查了.
你所写的那行 0 <= number < 100
其实并不会引起错误, 只是这个表达式在不被满足的时候是 False
而已.
你需要写一个类似这样的东西:
if not (0 <= number < 100): raise ValueError
TypeError
其实是不会被引发的, 因为 input
的返回值肯定是一个 str
, 而 int
是可以接受 str
的, 只是有些 str
它转换不了, 比如 int("1.2")
, int("range(12)")
都会引发 ValueError
.
只有当 int
的参数类型它根本不会处理的时候, 才会有 TypeError
, 比如 int(range(10))
.
int(a)
会干这样的事:
- 首先看
a
有没有__int__
这个方法, 有的话就调用它; - 没有的话,
a
是str
或者bytes
吗? 是的话, 看看能不能转换它为整数,能就返回
不能的话就引发
ValueError
- 以上情况都不是, 那就引发
TypeError
以上是 Python中的ValueError,是否只能识别值不是int或float,而无法区分值是否在[1,100]内,请问如何解决? 的全部内容, 来源链接: utcz.com/p/938134.html