您没有要求过 python 检查数是不是在您想要的范围, python 当然不会检查了.你所写的那行 0 <= number < 100 其实并不会引起错误, 只是这个表达式在不被满足的时候是 False 而已.你需要写一个类似这样的东西:if not (0 <= number < 100): raise ValueErrorTypeError 其实是不会被引发的, 因为 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 检查数是不是在您想要的范围, python 当然不会检查了.
你所写的那行
0 <= number < 100
其实并不会引起错误, 只是这个表达式在不被满足的时候是False
而已.你需要写一个类似这样的东西:
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
吗?TypeError