Python技术迷

麻了,随手投简历到情趣玩具了

刚刷到一个网友吐槽,说自己随手投了情趣玩具公司的简历,然后觉得自己心理接受不了,有点“麻了”。作为程序员我真心能理解这种纠结。

Image

我觉得这事吧,说到底是“面子”和“实际”的冲突。很多程序员(包括我身边的同事)平时投简历也会遇到类似的心理障碍,总觉得技术岗位得找点“高大上”的公司,万一投到冷门或者有争议的行业,心里总会嘀咕。但工作嘛,归根结底还是谋生,没必要太在意外界的看法。网友回帖有的说这是“封建思想”,有的直接劝放下偏见,其实都说得有道理,但人就是很难完全理性。

我反而觉得,技术人如果只盯着所谓的“行业体面”,那格局真的小了点。换个角度,哪怕是情趣玩具公司,也需要好程序员啊。最终还是要看自己想要什么,别为了面子让自己饿肚子。【备注:文末可领最新资料】

面试题:银行账户概要

其实吧,这种银行账户概要题,刚看还以为挺复杂,其实拆开了,逻辑就那几个。就比如说:你有一堆银行流水,里头有存钱的、取钱的、还有转账,产品又想让你给个“账户概要”——余额、总存入、总取出这种,不就是遍历一遍的事吗?不过你还别说,要是让新手直接一堆if else写,后头维护真出鬼了。

那天我就直接给他写了个python的demo,也没啥技术难度,就是习惯好点。大致代码给你看下,思路很清楚,假设有个列表transactions,每个元素就是一条流水,有类型和金额:

transactions = [
    {'type': 'deposit', 'amount': 1000},
    {'type': 'withdraw', 'amount': 200},
    {'type': 'deposit', 'amount': 500},
    {'type': 'withdraw', 'amount': 100}
]

就这种结构很常见,然后我跟他说你别每次都去if else里头绕。直接for一遍搞三个变量存余额、总存入、总取出就行:

balance = 0
total_deposit = 0
total_withdraw = 0

for t in transactions:
if t['type'] == 'deposit':
        balance += t['amount']
        total_deposit += t['amount']
elif t['type'] == 'withdraw':
        balance -= t['amount']
        total_withdraw += t['amount']
else:
pass# 以后有其他类型再补

print("余额:", balance)
print("总存入:", total_deposit)
print("总取出:", total_withdraw)

我跟你说,结果出来他立马笑了,这就清清楚楚了。而且像转账啥的,或者有些银行流水有服务费,你只要在else那块再细分类型就行。

说真的,这玩意要说难还真不难,但是容易出错的地方,比如说存取金额类型错了,遇到负数啥的,这都得加校验,要不后端一跑账目对不上,运维分分钟追杀你。还有就是有些时候数据量大了,你要考虑一下性能,别一万多条流水每次都for一遍,你得考虑下分批统计。

对了,那天小李还问我可不可以用类来写,其实更优雅一点:

classBankAccountSummary:
def__init__(self):
        self.balance = 0
        self.total_deposit = 0
        self.total_withdraw = 0

defadd_transaction(self, t):
if t['type'] == 'deposit':
            self.balance += t['amount']
            self.total_deposit += t['amount']
elif t['type'] == 'withdraw':
            self.balance -= t['amount']
            self.total_withdraw += t['amount']

summary = BankAccountSummary()
for t in transactions:
    summary.add_transaction(t)

print("余额:", summary.balance)
print("总存入:", summary.total_deposit)
print("总取出:", summary.total_withdraw)

其实也没多大区别,就是封装一下,后面加功能更方便,比如你要统计各个银行卡的概要,就再搞个字典,key是卡号,value是这个Summary类,直接循环就好了。

哎你别说,这种题面试也爱考。上次小王面试被问到,他紧张得差点把balance写成全局变量了。后来我还特意给他发微信说你要养成好习惯,别一堆if else糊成大饼,那维护起来费劲。

最后扯一句,银行这玩意别忘了金额精度,一定得用Decimal库,float你早晚被坑,不信你试试小数点后一堆零对不上的时候产品得拿你祭天。对吧?

-END-

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

🔥虎哥私藏精品🔥

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