Python技术迷

面试被打成骨折!因不满面试官的无礼态度,与其争辩了几句,便遭其殴打致腰椎骨折。。

刚看到个贴子,说深圳一女生面试被面试官打到腰椎骨折,原因是对方无礼她回了几句,还要求删掉简历信息,结果反被围堵殴打。

Image

这事作为程序员看真是🤯,职场再内卷也不至于打人吧?面试本该是平等沟通,不是权力压制,更不是人身攻击。网友有的说要勇敢维权,我完全赞同,技术圈也要有底线意识。

从开发的思路讲,Bug要改,制度的漏洞更要修,企业如果纵容这种暴力,就是系统性缺陷。求职是双向选择,不尊重人的公司,再高薪也别去。毕竟代码能重构,腰椎可不能热修复。希望大家求职路上多留心,保护好自己。【备注:文末可领最新资料】

面试题:完全平方数

前几天晚上在咖啡店,我等咖啡的时候刷手机,刷到有人问“怎么快速判断一个数是不是完全平方数”,结果底下的评论有的给了特别复杂的公式,看得我一愣一愣的。其实啊,这事没那么玄乎。

完全平方数,说白了,就是一个整数能被开平方,而且开出来还是整数,比如 1、4、9、16 这种。 9 = 3×3,16 = 4×4,对吧,就是这种一眼就看出来“方方正正”的数。

日常生活里的例子

完全平方数其实挺常见的,比如:

  • 正方形地砖的总数(每边 5 块砖,就是 25 块,总数刚好是完全平方数)
  • 正方形像素点的数量,比如 1920×1920 这种就是平方数

所以啊,它本质就是:某个整数自己乘自己。

Python怎么判断?

其实最直观的方法,就是开平方看看是不是整数。 比如下面这段:

import math

defis_perfect_square(n):
if n < 0:
returnFalse
    root = int(math.sqrt(n))
return root * root == n

# 测试
for x in [4, 9, 15, 16, 25, 26]:
    print(f"{x} -> {is_perfect_square(x)}")

输出就是:

4 -> True
9 -> True
15 -> False
16 -> True
25 -> True
26 -> False

这个判断逻辑很简单:

  1. 先开平方取整数部分
  2. 再平方回去,看跟原数一样不

有些时候,我们会遇到不能用浮点数的情况(比如特别大的整数,精度可能丢),那可以用整数的方法,比如 二分查找 来找平方根:

defis_perfect_square_binary(n):
if n < 0:
returnFalse
    left, right = 0, n
while left <= right:
        mid = (left + right) // 2
        sq = mid * mid
if sq == n:
returnTrue
elif sq < n:
            left = mid + 1
else:
            right = mid - 1
returnFalse

这个方法的好处是:即使是超大的数(比如 64 位整数)也不会出错。

顺便说说完全平方数的生成

你要是想生成前几个完全平方数,那就太简单了:

defgenerate_perfect_squares(limit):
return [i*i for i in range(1, limit+1)]

print(generate_perfect_squares(10))

输出:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

是不是很直观?

完全平方数的本质,就是“一个整数的平方”。 判断方法可以用:

  • 简单的 开平方再平方回去
  • 更稳妥的 二分查找

日常工作里,像数据分析、图像处理、甚至某些算法优化,都可能用到它。 以后再看到这个词,就不用被吓住了,心里默念:哦,就是正方形的那个数嘛。

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

🔥虎哥私藏精品🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领