- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个在纸面上很简单的问题,但我很难用代码解决。在我继续之前,这不是字符串拆分问题。
我有一个本质上是带状时间表应用程序。比例因客户而异,但一个例子是一个月的前三个小时为 80,接下来的三个小时为 70,其余为 50。我目前在代码中表示为:
scale = [80, 80, 80, 70, 70, 70, 50]
...但我也愿意接受那里的建议。
步骤的规模和数量是——而且必须是——可变的。对于某些客户,我的一些计费要简单得多,但我希望能够提供这种高使用率计划。
但是我如何计算工作小时数(例如 15.2)并计算他们应该支付多少?我如何将这个大数字分成乐队?正如我所说,纸上谈兵很容易,但随着我的客户越来越多,计划越来越复杂,这就变得很无聊了。以下是我将如何计算 15.2 小时:
3 hours at 80 = 240
3 hours at 70 = 210
9.2 hours at 50 = 460
total = 910
当我在做这件事的时候,我很感激对我试图描述的内容的专有名称的评论。还有 Oli,如果你在 2023 年回到这里,下次选择一个更简单的计费方案,伙计。
最佳答案
首先,我会把这个:
scale = [80, 80, 80, 70, 70, 70, 50]
进入这个:
import math
scale = {(0, 3): 80, (3, 6): 70, (6, math.inf): 50}
然后我的算法的其余部分如下:
# Total hours worked
hours_worked = 15.2
# Handle the decimal (if any) to begin with... First find the "max" rate
decimal_rate = next(rate for (lower, upper), rate in scale.items()
if lower <= hours_worked and upper >= hours_worked)
# Then calculate the last "sliver" of pay
decimal_end = hours_worked - int(hours_worked)
end_pay = decimal_end * decimal_rate
# Use an integer for ease of calculation
hours_worked = int(hours_worked)
hours_paid_for = 0
# Beginning total pay is just the decimal "ending"
total_pay = end_pay
while hours_paid_for < hours_worked:
# Find the rate for the current bucket of hours
rate_filter = (rate for (lower, upper), rate in scale.items() if lower <= hours_paid_for and hours_paid_for < upper)
current_level = next(rate_filter)
print('Hour: {}'.format(hours_paid_for))
print('Pay rate: ${}'.format(current_level))
total_pay += current_level
hours_paid_for += 1
print('Total earned: ${}'.format(total_pay))
输出如下:
Hour: 0
Pay rate: $80
Hour: 1
Pay rate: $80
Hour: 2
Pay rate: $80
Hour: 3
Pay rate: $70
Hour: 4
Pay rate: $70
Hour: 5
Pay rate: $70
Hour: 6
Pay rate: $50
Hour: 7
Pay rate: $50
Hour: 8
Pay rate: $50
Hour: 9
Pay rate: $50
Hour: 10
Pay rate: $50
Hour: 11
Pay rate: $50
Hour: 12
Pay rate: $50
Hour: 13
Pay rate: $50
Hour: 14
Pay rate: $50
Total earned: $910.0
这里还有一个简洁的函数:
def calculate_pay(scale, hours_worked):
# Handle the decimal (if any) to begin with... First find the "max" rate
decimal_rate = next(rate for (lower, upper), rate in scale.items()
if lower <= hours_worked and upper >= hours_worked)
# Then calculate the last "sliver" of pay
decimal_end = hours_worked - int(hours_worked)
end_pay = decimal_end * decimal_rate
# Use an integer for ease of calculation
hours_worked = int(hours_worked)
# Hours already paid for (int)
hours_paid_for = 0
# Beginning 'total pay' can be the decimal end, if any
total_pay = end_pay
while hours_paid_for < hours_worked:
# Find the rate for the current bucket of hours
rate_filter = (rate for (lower, upper), rate in scale.items()
if lower <= hours_paid_for and hours_paid_for < upper)
current_level = next(rate_filter)
total_pay += current_level
hours_paid_for += 1
return total_pay
关于python - 将号码拆分为可变费率计费的频段,即 "tiered pricing",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46427634/
Java EE 中的这些是什么.表示层.业务层.集成层 我想通过示例了解这些模式是什么 最佳答案 表示层:用户看到的内容,通常是网络应用程序。 业务层:执行应用程序的所有逻辑的地方。 集成层:将系统连
通过转到工具->选项并设置哪些程序集将成为分析的一部分(并忽略其余程序集),我能够在早期版本的 nDepend 中执行此操作。 nDepend 试用版的最新版本让我可以设置它,但它似乎忽略了设置并始终
上周我和我的前辈讨论了 3 层架构。我是说它有一个 UI 层、业务逻辑层和数据访问层。我讲完之后他就跟我说,我说的是三层架构,不是三层架构。然后我问他有什么区别,他分配给我的任务是制作有关差异的文档。
我使用分级价格,并对 1 到 4 之间的数量设定了固定价格,对超过 4 的数量设定了每件商品的价格。 我想修改我的购物车,为数量 >= 1 && 数量 <=4 的商品设置固定价格 我该怎么做? 这是我
十多年来,我们一直在构建三层架构。划分表示层、逻辑层和数据层应该允许我们在需要时单独交换每一层,无论是通过更改的需求还是新技术。 我从未见过它在实践中起作用...... 主要是因为(至少)以下原因之一
我意识到已经有很多关于 n 层设计的帖子,这可能是我在思考问题和兜圈子,但我现在自己都很困惑,希望从社区中得到一些澄清请。 我正在尝试将我创建的一个项目(一开始在架构上设计得不是很好)分成不同的层(每
Closed. This question is opinion-based。它当前不接受答案。 想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。 3年前关闭。
我一直在尝试镜像一些功能在另一个网站上看到的 Magento (v1.6) 中。在示例中,店主已设置将销售价格应用于层级的能力。(很可能是 tierprices.phtml 作为包装)通过应用销售价格
“层”和“层”有什么区别? 最佳答案 Logical layers are merely a way oforganizing your code. Typical layersinclude Pre
我想听听你的一些想法 资源名称/分类 资源地点 让我告诉你应用范围: 3 种或更多支持的语言 3个MVC网站[有很多共享资源,也有一些独特的资源] 1 个共享 MVC 扩展库 1 个核心业务库,具有共
最近,我一直在讨论在 n 层架构中处理链上通信的最佳方式。 目前我正在做的方法是在层之间抛出和处理异常以查找错误,并使用事件/委托(delegate)进行其他通信(更新进度条等)。这些是最好的方法,还
我有一个在纸面上很简单的问题,但我很难用代码解决。在我继续之前,这不是字符串拆分问题。 我有一个本质上是带状时间表应用程序。比例因客户而异,但一个例子是一个月的前三个小时为 80,接下来的三个小时为
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
工具:Mvc4、Sql server、Nhibernate 我正在学习 Ntier 架构,并计划通过一个小示例来学习它。这将是一个学生注册申请,其中包含一个表格一种。名b.姓C。地址d.学生卡该应用程
我正在开发一个将使用 LINQ to SQL 的个人项目 (C#/ASP.NET)。解决方案将有(到目前为止)一个 Webform 项目、一个命名空间项目(业务逻辑)和一个测试项目。到目前为止,我处于
根据pricing page ,将于 2016 年 1 月 1 日为 BigQuery 引入新的分层定价模型。 我们希望能够预测这可能对我们的应用程序产生的任何成本影响。因此,我们查看了一些更复杂查询
如何解决:使用 MongoDB Atlas 时出现“MongoError: $where is not allowed in this atlas tier”的问题? 这是我的代码: async fu
Out 团队正在构建一个 N-Tier 应用程序,它将处理大量的数据库和网络方法。 基本上我们设计了以下层(从下到上): 数据层:可以是 Oracle 或 SQL(基本上是使用 Database Fi
Get-azdisk -disk diskname -resourcegroup RG 提供高级硬盘层,但不显示标准 HDD 驱动器层,知道为什么吗? 谢谢 最佳答案 是的,你是对的@ArunCO。我
我有一个 azure 函数,旨在自动与 API 管理进行交互。 因此,在 Http Trigger 上,它会创建一个 api 管理用户。 这是开发人员层,一切正常 - 我已经测试了它和一切。 自从从开
我是一名优秀的程序员,十分优秀!