Python中float类型变量与常量比较报错该如何修复?
报错原因说明
你遇到的TypeError本质是两个编码错误共同导致的:
- 第一次执行
while input < 0.01判断时,你还没有给input赋值,此时代码读取到的input是Python自带的内置输入函数对象,函数对象自然无法和浮点数0.01做大小比较 - 你直接用Python内置函数名
input作为自定义变量名,属于错误的命名习惯,就算第一次赋值成功,也会覆盖原本的内置input函数,引发后续其他代码异常 - 补充逻辑问题:你后续用
get_int获取的是整数类型值,整数最小值为0,和0.01做比较的逻辑本身也可以根据业务需求优化
修复方案
方案1:获取浮点数类型的找零金额(适配元为单位的场景)
# 先初始化判断用的变量,不要使用内置函数名作为变量名 change = -1 while change < 0.01: change = get_float("Change owed: ")
方案2:获取整数类型的找零金额(适配分为单位的场景)
如果你的业务逻辑是统一按整数分计算金额,可调整为如下写法:
change_cent = -1 while change_cent < 1: change_cent = get_int("Change owed (in cents): ")
注意事项
- 日常编码中禁止使用Python内置关键字、内置函数/类名作为自定义变量名,除
input外,str、int、list、dict这类命名都要避免 - 循环判断语句中用到的变量,必须在循环开始前完成初始化赋值
内容的提问来源于stack exchange,提问作者Brave.
相关产品推荐
相关产品推荐

