Python技术迷

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") ✅ OK
  • int("1.4") ❌ 抛异常
  • int(1.4) ✅ 去小数点,向零截断
  • int(float("1.4")) ✅ 安全组合

你说这道题难不难?一点也不难,但面试时一问你就能看出谁是真写Python,谁是用Python写Java风格的代码 🤔

反正我是见过不少一脸懵的候选人...你呢?有被这个问题坑过吗?😏

最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek

也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。

对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
🔥虎哥私藏精品 热门推荐🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。

资料包含了《IDEA视频教程》、《最全python面试题库》、《最全项目实战源码及视频》及《毕业设计系统源码》,总量高达650GB,全部免费领取