加班多?交友范围窄?单身互联网人点进来!

黑马程序员视频库

播妞QQ号:3077485083

传智播客旗下互联网资讯、学习资源免费分享平台

根据民政部数据显示,2021年我国独居成年人将近1亿。在2018年时我国单身成年人口已高达2.4亿人,约占中国总人口的17.1%。互联网/IT软件行业的年轻人单身比例高达44%!你是不是就是其中之一?

为什么互联网人更容易单身?大家总结下来原因有这几点,看看是不是说出了你的心声!

第一,工作忙,加班多,回家都已经很晚了根本没时间谈恋爱;第二:交友范围窄,大部分互联网人的工作都是面向电脑。在办公室朝九晚九;第三:不注重外在形象,比如大部分程序员朋友们穿着一向比较随意,除了格子衫就是冲锋衣。第四:各种职业病。

程序员:把加班视为职业尊严,代码写的好,单身单到老。

运营:尝试用数据分析每一件事,对节日敏感,不是为了给女友选礼物而是为了提前策划活动。(是小编本人没错了)

产品经理:沟通确认强迫症、死磕细节,随时随地思考产品体验。

...

你单身的原因是什么?

欢迎大家留言讨论啊~

针对现在广大的单身、想要快速脱单、进入互联网行业、从事产品经理工作的各位男性女性同学,《如何用产品思维,帮你“快速脱单”》直播课来了!

2小时深入理解产品经理思维方式

并且掌握脱单秘诀

还犹豫什么?赶快行动吧!

????????????

主讲内容

1.定位问题分析:为什么你会单身?

2.形成解决方案:如何脱单找到适合自己的另一半?

3.迭代思维:脱单后续,如何深度维护关系?

直播时间

9月24日 晚19:00

主讲教师

金牌讲师:王老师

中国科学院大学硕士,有国外留学经历。拥有多年的产品从业经验,从事行业包括"互联网金融"、"互联网教育"、"电商"等领域。有产品运营、数据分析、销售管理等工作经验,对于产品设计、体验、交互、项目管理等有很强的理解。善于引导学生思考,激发学习兴趣,培养学生解决问题的能力。

直播平台

哔哩哔哩平台:黑马程序员

立即扫码

19:00直播见


如有任何疑问

可添加播妞微信咨询

END

摆脱CRUD boy !我这儿有本「数据结构与算法」秘籍...

2020-09-23

爬虫厉害?反爬虫技术才是真的牛!

2020-09-22

Java15发布之后,网友:你发任你发,我用Java8 !

2020-09-21

点赞!盲人程序员独立开发吃鸡游戏,眼睛看不到,心却明亮

2020-09-17


我就知道你“在看”

<think>我们需要计算日期分段的加班费,每个分段可能有不同的加班类型(平日、周末、法定假日),并且每个分段有自己的加班小时数。思路:1.让用户输入加班时间段,每个时间段包括日期、加班小时数、加班类型。2.对于每个时间段,根据日期判断是平日、周末还是法定假日(这里法定假日需要预设或者从外部数据源获取,为简化,我们假设用户直接选择类型)3.根据加班类型应用不同的倍数计算每个时间段的加班费,然后累加。改进:我们允许用户输入日期,然后自动判断是工作日还是周末(法定假日需要额外配置,我们先不考虑自动判断法定假日,而是让用户选择类型,因为法定假日每年不同)步骤:1.输入基本时薪2.输入加班时间段(日期、小时数、类型)3.计算每个时间段的加班费并累加注意:日期格式处理,我们使用datetime模块。由于法定假日需要配置,我们可以先内置一个法定假日列表(例如2023年的中国法定假日),或者允许用户自定义。这里为了简化,我们让用户自己选择类型,而不根据日期自动判断类型(因为自动判断需要区分工作日和周末,还要考虑调休等,比较复杂)。因此,我们设计如下:用户输入每个加班记录时,输入日期(用于记录和显示)、加班小时数、加班类型(1-平日,2-周末,3-法定假日)。如果希望根据日期自动判断是平日还是周末(不判断法定假日),那么类型可以只让用户选择法定假日,其他由程序判断。但是这样就需要用户区分法定假日,所以我们还是采用用户指定类型的方式。代码结构:1.输入基本时薪2.循环输入加班记录,直到用户选择退出3.每条记录包括:日期字符串(转换为日期对象,但计算中不需要,仅用于显示和记录)、加班小时数、加班类型4.计算每条记录的加班费:时薪*小时数*倍数(平日1.5,周末2.0,法定假日3.0)5.累加总加班费6.显示详细计算过程和总结果另外,我们将记录保存到文件,包括每条记录的明细和总结果。代码实现:</think>### 日期分段加班费计算实现方案 要实现日期分段加班费计算,需要处理个日期区间内的不同加班类型和小时数。以下是一个完整的解决方案: ```python from datetime import datetime, timedelta import csv # 法定节假日配置(示例数据) HOLIDAYS = { '2023-01-01': "元旦", '2023-01-22': "春节", '2023-04-05': "清明节", '2023-05-01': "劳动节", '2023-06-22': "端午节", '2023-09-29': "中秋节", '2023-10-01': "国庆节" } def is_holiday(date): """检查日期是否为法定节假日""" return date.strftime('%Y-%m-%d') in HOLIDAYS def get_overtime_multiplier(date): """根据日期确定加班倍数""" if is_holiday(date): return 3.0 # 法定节假日3倍 elif date.weekday() >= 5: # 周六或周日 return 2.0 # 周末2倍 else: return 1.5 # 平日1.5倍 def calculate_segment_pay(hourly_wage, start_time, end_time): """计算单个时间段的加班费""" # 计算加班小时数 hours = (end_time - start_time).total_seconds() / 3600 # 获取加班倍数 multiplier = get_overtime_multiplier(start_time.date()) # 计算该段加班费 return hourly_wage * hours * multiplier, hours, multiplier def calculate_total_overtime_pay(): """计算日期分段加班费主函数""" print("===== 日期分段加班费计算器 =====") try: # 获取基本输入 hourly_wage = float(input("请输入每小时基本工资(元): ")) # 获取分段加班数据 segments = [] while True: print("\n=== 添加加班时间段 (输入空值结束) ===") start_str = input("开始时间(YYYY-MM-DD HH:MM): ") if not start_str: break end_str = input("结束时间(YYYY-MM-DD HH:MM): ") if not end_str: break try: start_time = datetime.strptime(start_str, '%Y-%m-%d %H:%M') end_time = datetime.strptime(end_str, '%Y-%m-%d %H:%M') # 验证时间顺序 if end_time <= start_time: print("错误:结束时间必须晚于开始时间") continue segments.append((start_time, end_time)) except ValueError: print("错误:时间格式不正确,请使用 YYYY-MM-DD HH:MM 格式") except ValueError: print("错误:请输入有效的数字") return # 计算各段加班费 total_pay = 0.0 results = [] for i, (start, end) in enumerate(segments, 1): segment_pay, hours, multiplier = calculate_segment_pay(hourly_wage, start, end) total_pay += segment_pay # 存储结果用于显示和导出 results.append({ 'segment': i, 'date': start.date(), 'start': start.time(), 'end': end.time(), 'hours': round(hours, 2), 'multiplier': multiplier, 'pay': round(segment_pay, 2) }) # 显示结果 print("\n===== 计算结果 =====") print(f"基本时薪: {hourly_wage:.2f}元/小时") print(f"总加班费: {total_pay:.2f}元") print(f"计算日期: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") print("\n===== 分段明细 =====") for result in results: print(f"时间段{result['segment']}: {result['date']} {result['start']}到{result['end']}") print(f" 时长: {result['hours']}小时, 倍数: {result['multiplier']}倍, 加班费: {result['pay']:.2f}元") # 导出到CSV export_csv(results, total_pay, hourly_wage) print("\n结果已导出到 overtime_report.csv") def export_csv(results, total_pay, hourly_wage): """导出结果到CSV文件""" with open('overtime_report.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(['日期分段加班费报告']) writer.writerow(['计算时间', datetime.now().strftime('%Y-%m-%d %H:%M:%S')]) writer.writerow(['基本时薪', f'{hourly_wage}元/小时']) writer.writerow(['总加班费', f'{total_pay:.2f}元']) writer.writerow([]) writer.writerow(['时间段', '日期', '开始时间', '结束时间', '时长(小时)', '倍数', '加班费(元)']) for result in results: writer.writerow([ result['segment'], result['date'], result['start'].strftime('%H:%M'), result['end'].strftime('%H:%M'), result['hours'], result['multiplier'], result['pay'] ]) if __name__ == "__main__": calculate_total_overtime_pay() ``` ### 代码详解 1. **日期处理与加班类型判断** - `is_holiday()`: 检查日期是否为法定节假日(使用预设的节假日字典) - `get_overtime_multiplier()`: 根据日期类型返回加班倍数 - 法定节假日: 3.0倍 - 周末: 2.0倍 - 平日: 1.5倍 2. **分段计算逻辑** - `calculate_segment_pay()`: 计算单个时间段的加班费 - 计算精确的小时数(支持分钟级计算) - 应用相应的加班倍数 - `calculate_total_overtime_pay()`: 主函数,处理时间段输入 - 支持添加个时间段直到用户输入空值 - 验证时间顺序(结束时间必须晚于开始时间) 3. **结果展示与导出** - 显示详细的分段计算结果 - `export_csv()`: 将结果导出为结构化的CSV文件 - 包含总加班费和详细的分段信息 - 使用UTF-8编码支持中文 ### 使用示例 ``` ===== 日期分段加班费计算器 ===== 请输入每小时基本工资(元): 50 === 添加加班时间段 (输入空值结束) === 开始时间(YYYY-MM-DD HH:MM): 2023-08-15 18:30 结束时间(YYYY-MM-DD HH:MM): 2023-08-15 21:00 === 添加加班时间段 (输入空值结束) === 开始时间(YYYY-MM-DD HH:MM): 2023-08-19 09:00 结束时间(YYYY-MM-DD HH:MM): 2023-08-19 18:00 === 添加加班时间段 (输入空值结束) === 开始时间(YYYY-MM-DD HH:MM): ===== 计算结果 ===== 基本时薪: 50.00元/小时 总加班费: 1375.00元 计算日期: 2023-08-15 15:45:22 ===== 分段明细 ===== 时间段1: 2023-08-15 18:30:00到21:00:00 时长: 2.5小时, 倍数: 1.5倍, 加班费: 187.50元 时间段2: 2023-08-19 09:00:00到18:00:00 时长: 9.0小时, 倍数: 2.0倍, 加班费: 900.00元 结果已导出到 overtime_report.csv ``` ### 优化建议 1. **节假日管理** - 从外部API或文件加载节假日数据 - 添加节假日管理功能(增删改查) 2. **时间重叠检查** - 添加逻辑防止用户输入重叠的时间段 - 自动合并相邻时间段 3. **图形界面** - 使用PyQt/Tkinter创建可视化界面 - 添加日历组件选择日期 4. **国际化支持** - 添加不同国家/地区的加班规则 - 支持语言界面
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值