Python技术迷

懵!把测试全裁了,让开发自己测。。

最近看到一个话题,简直让我差点笑出声。网友们在吐槽:公司竟然把测试岗位给裁了,让开发自己去测,真的是懵了!😱
说实话,作为开发人员,我们已经在做业务功能的设计、编码,甚至处理各种线上故障,能有一点点空闲时间,我就已经感谢天谢地了。
结果,现在还得抽空自己测试自己写的代码?这...简直是让人怀疑人生。
你说做开发和做测试是两码事吧。开发的目标是尽量写出优雅、高效、可维护的代码,而测试的目的是找到bug、发现潜在的风险,确保系统能够稳定运行。
开发和测试在思维模式上就有差异,测试人员天生就是“挑毛病”的,而我们这些开发呢,大部分时间都想着怎么做得更快、功能能实现就行了,哪还有闲心去细致地考虑所有可能的bug?🤷‍♂️
我个人觉得,如果真让开发自己做测试,可能会导致很多问题被忽视,等到上线后才发现漏洞,那可就麻烦了。希望这种决定只是短期内的“懒政”,不要成为常态!
你们怎么看?快来留言告诉我吧!

算法题:拼接最大数

今天我们来聊个有点烧脑的题目: 拼接最大数 。 这个问题的目标是,给定一个非负整数数组,我们需要将这些数字拼接成一个最大的数。比如说,输入一个数组 [3, 30, 34, 5, 9] ,它的正确答案应该是 9534330 ,而不是 9534303 。你有没有想过,排序怎么排才能得到最大值呢? 咱们一开始可能会按普通的数值大小来排序,比如把 9 排到最前面,再排其他的。问题来了,这种排序方式可不一定能得到最大数。想想看, 30 和 3 ,它们的组合是 303 和 330 ,显然 330 更大。所以,仅仅用数字大小来排序是不行的,我们得找个新的排序规则。 接下来,我们就要自定义一个比较规则了。我们不是单纯地比较两个数的大小,而是看拼接之后哪个更大。比如,给定两个数字 x 和 y ,我们就要比较拼接后的字符串 x + y 和 y + x ,谁大谁就排在前面。这样就能确保每次拼接得到的都是最大的数字。 这其实就变成了一个关于字符串排序的问题,只不过我们需要自定义比较函数。Python 中可以通过 functools.cmp_to_key 来将普通的比较函数转换成可以用于 sort 或 sorted 的关键字函数。
接下来,我给大家一个示例代码:
from functools import cmp_to_key

def compare(x, y):
    # 比较拼接后的结果,x和y是字符串
    if x + y > y + x:
        return -1  # 如果x + y比y + x大,x应该排在前面
    elif x + y < y + x:
        return 1  # 如果y + x比x + y大,y应该排在前面
    else:
        return 0  # 相等的话,顺序可以随便

def largestNumber(nums):
    # 将数字转换为字符串
    nums = list(map(str, nums))
    # 用自定义的比较函数排序
    nums.sort(key=cmp_to_key(compare))
    # 拼接成字符串
    result = ''.join(nums)
    # 如果拼接结果的第一个字符是'0',说明所有数字都是0
    return '0' if result[0] == '0' else result

# 测试
nums = [3, 30, 34, 5, 9]
print(largestNumber(nums))  # 输出: 9534330
这里我用了 compare 函数来对每对数字进行比较。 cmp_to_key 让我们能将这个普通的比较函数转成 sort 需要的关键字函数。排序之后,我们把数字拼接起来,最后检查一下,是否拼接出来的结果是零。比如,给你 [0, 0] ,结果应该是 "0" ,而不是 "00" 。 对了,大家可能会想,这个算法是不是很慢呢?其实,排序的时间复杂度是 O(n log n) ,拼接字符串是 O(n) ,所以总体的时间复杂度是 O(n log n) 。这个算法已经相对高效了,如果你再去优化,可能会很复杂,毕竟排序是瓶颈。
总的来说,这类问题虽然是看似简单,但真正做起来就会发现,细节很重要。尤其是排序问题,很多时候你以为自己做对了,结果一不小心就把最大数拼成了最小数。
所以,掌握一些常见的排序技巧,尤其是自定义比较的技巧,对我们作为程序员来说真的特别有用。
对编程、职场感兴趣的同学,大家可以联系我微信: golang404 ,拉你进入“程序员交流群”。
🔥 虎哥私藏精品 热门推荐 🔥 虎哥作为一名老码农,整理了全网最全 《python高级架构师资料合集》 。 资料包含了 《IDEA视频教程》 、 《最全python面试题库》 、 《最全项目实战源码及视频》 及 《毕业设计系统源码》 ,总量高达 650GB , 全部 免费领取 。