You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python类方法中type(balance) != int这类判断无法生效?

问题分析与解决

问题根源:逻辑判断错误

你的前两段代码的问题完全出在逻辑判断上,和是否在类方法中执行没有关系。

1. 第一个版本的逻辑漏洞

原代码中的条件:

if type(balance) != int or type(balance) != float:
    return

这个条件永远为True:

  • 如果输入是int类型,type(balance) != float为True,or逻辑只要一个条件成立就返回True,直接触发return
  • 如果输入是float类型,type(balance) != int为True,同样触发return
    所以不管输入合法与否,都会直接退出方法,永远不会执行self._balance = balance,余额始终是默认的0。

2. 拆分后的两个if的逻辑问题

拆分后的代码:

if type(balance) != int:
    return

if type(balance) != float:
    return

同样逻辑错误:

  • 输入是float时,第一个if条件成立(float != int),直接return
  • 输入是int时,第一个if不触发,但第二个if条件成立(int != float),还是return
    最终还是永远到不了赋值步骤,余额保持默认值。

3. 第三个版本能正常工作的原因

if type(balance) not in [int, float]:
    return

这个条件只有当输入类型既不是int也不是float时才会触发return,完全符合你的需求:只要是int或float类型,就会跳过这个判断,继续执行后续的余额范围检查和赋值操作。

关于你之前的while type(num) != int:能正常工作的原因

那个逻辑是判断单一类型:只要num不是int就循环,逻辑本身是成立的。但这里你需要判断的是属于int或float其中一种,逻辑场景完全不同,不能直接套用单一类型的判断方式。

内容的提问来源于stack exchange,提问作者Kelli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 09:00:19