Python中的ValueError,是否只能识别值不是int或float,而无法区分值是否在[1,100]内,请问如何解决?

新手上路,请多包涵


请问我的代码如何要解决这个问题,谢谢大佬!

阅读 1.8k
1 个回答

您没有要求过 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__ 这个方法, 有的话就调用它;
  • 没有的话, astr 或者 bytes 吗?
  • 是的话, 看看能不能转换它为整数,能就返回
  • 不能的话就引发 ValueError
  • 以上情况都不是, 那就引发 TypeError
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题