int("1.4"),int(1.4)输出结果?
这个Python面试题,问的是 int("1.4") 和 int(1.4) 分别输出什么,看起来像是考基础,其实也暗藏不少坑点,尤其是对Python类型转换机制不熟的同学,很容易在这儿栽个跟头。
先说结论哈,int(1.4) 的输出是 1,没悬念,因为 int() 对浮点数的转换是向零截断,也就是去掉小数部分,不是四舍五入!
print(int(1.4)) # 输出:1
print(int(1.9)) # 还是输出:1
print(int(-1.4)) # 输出:-1
没错,int() 对负数也是向零截断,跟你平时心里那种“往下取整”的直觉可能不一样,很多同学第一次看到 int(-1.4) 结果是 -1 会觉得有点奇怪,但Python的设计就是这样。
然后我们说说 int("1.4"),这个更有意思,直接抛异常:
print(int("1.4"))
💥炸了,提示 ValueError: invalid literal for int() with base 10: '1.4'
这个错是初学者特别容易犯的,他们以为 Python 会帮你自动把字符串里的浮点数转换成整型,但现实是:Python 要求你 int() 的字符串必须是“纯整数格式”的,比如 "123" 是合法的,但 "1.4" 就不行了,因为小数点对它来说是非法字符。
那怎么搞?先转成 float 再转成 int 才行:
print(int(float("1.4"))) # 输出 1
这一套组合拳,也是面试里考察你对 Python 类型系统理解是否“深得真传”的点之一。
有次我面试一个同学,我问这个问题,他理直气壮地跟我说两个都输出1,说完我就知道他平时写代码靠的是 IDE 提示而不是自己搞明白每个函数背后到底做了什么。不是说 IDE 不好用,但你至少得知道 int() 干了啥吧…
还有一次项目里碰到个“祖传代码”,用的是:
price = int(request.GET.get("price", 0))
然后前端给我传了个 "99.9",直接挂了 😵。后来我改成了:
price = int(float(request.GET.get("price", 0)))
虽然救了现场,但我心里其实还是有点不爽的,这种处理浮点转整数的逻辑应该在数据校验阶段就处理,而不是在业务逻辑里搞这么“危险动作”。
题外话一句,我一直觉得 int() 和 float() 在 Python 里看起来“很简单”,但用错的场景还真不少。很多系统运行出问题,不是因为你写了个bug,而是因为你“以为”某个函数会帮你干某事,但它根本就不干 😅
所以再提醒一下:
int("123")✅ OKint("1.4")❌ 抛异常int(1.4)✅ 去小数点,向零截断int(float("1.4"))✅ 安全组合
你说这道题难不难?一点也不难,但面试时一问你就能看出谁是真写Python,谁是用Python写Java风格的代码 🤔
反正我是见过不少一脸懵的候选人...你呢?有被这个问题坑过吗?😏
最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek
也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。
对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。