# 自制律师费计算器，兼再谈 Shortcuts 中的字典

> 本文公开全文。

原文：https://utgd.net/article/20444

我目前从事法律工作，经常需要计算诉讼费和律师费。解决此事基本上有两派，年轻一点的喜欢直接翻小程序，年长一辈的更习惯找年轻人：“小李，帮我算一下”。不过，联网的工具总会掉链子，如果在客户面前刷了几次都打不开网页，场面就太尴尬了。

事实上，诉讼费和律师费其实都有固定计算方式，早就有人写过 Excel 函数；而在手机（iOS）上，也可以用 Shortcuts 自制计算工具，离线、快速、可靠地估算费用。这篇文章脱胎于法律工作，不过设计思路也适用于其他涉及分段计算的场合，如奖金和津贴、利息、运输费用、物业费等等。

- Shortcuts 动作下载

- GitHub 页面

## 理解诉讼费或律师费的计算方式

在使用 Shortcuts 解决问题之间，需要先理解问题本身，即诉讼费用是怎么算出来的。

根据《诉讼费用交纳办法》（国务院令第481号）相关规定，财产案件根据诉讼标的额大小有明确的计费公式，乍看上去有些复杂，本质上无非是分段收费，和计程车分段的原理一样，请原谅我用代码框展示法律条文，不过，反正法律本身也是一种代码（code）嘛。

```
1.不超过1万元的，每件交纳50元；
2.超过1万元至10万元的部分，按照2.5％交纳；
3.超过10万元至20万元的部分，按照2％交纳；
4.超过20万元至50万元的部分，按照1.5％交纳；
5.超过50万元至100万元的部分，按照1％交纳；
6.超过100万元至200万元的部分，按照0.9％交纳；
7.超过200万元至500万元的部分，按照0.8％交纳；
8.超过500万元至1000万元的部分，按照0.7％交纳；
9.超过1000万元至2000万元的部分，按照0.6％交纳；
10.超过2000万元的部分，按照0.5％交纳。
```

《诉讼费用交纳办法》并未贴心地提供速算扣除数或速算增加数，也未提供通用公式，故我根据法规原文列出了完整的受理费用计算表达式（其中的 x 表示输入的数字，尽管冗长，起码可以看出各个数字如何得来，不至于弄巧成拙、算错金额。惟需注意，《诉讼费用交纳办法》在各地具体实施时有一定弹性，自己计算的数字仅作参考之用，心中有底。最终需以法院提供的数额为准。至于律师费，则各地差异甚大，如读者有兴趣或有需求，请咨询您所在地区的律师协会或司法机构。

```
50
0.025*(x-10000)+50
0.020*(x-100000)+50+2250
0.015*(x-200000)+50+2250+2000
0.010*(x-500000)+50+2250+2000+4500
0.009*(x-1000000)+50+2250+2000+4500+5000
0.008*(x-2000000)+50+2250+2000+4500+5000+9000
0.007*(x-5000000)+50+2250+2000+4500+5000+9000+24000
0.006*(x-10000000)+50+2250+2000+4500+5000+9000+24000+35000
0.005*(x-20000000)+50+2250+2000+4500+5000+9000+24000+35000+60000
```

## 用 Shortcuts 实现自动分段计算

确定各个区间之款额的计算方式后，就要将其翻译为 Shortcuts 的语言。很不幸，Shortcuts 没有直接提供类似C语言的的 Switch 或 Case 模块，面对分支情况如此众多的诉讼费计算，似乎只能写上一场串的 If——显然，苟真如此丑陋，我就不会写这篇文章了。

解决方案仍然是词典（Dictionary），即将各种情况写入词典，然后匹配对应的计算表达式（上一节已经全部列出）。词典的另一妙处在于，含有变量的表达式也可以藏身其中，可大大减少动作之冗余。关于词典和计算表达式，本文未尽之处可参阅《给照片添加“徕卡风格水印”，兼谈 Shortcuts 中的字典》和《如何在手机上制作九宫格切图，兼谈 Shortcuts 中的数学》。

然而，问题至此只解决了一半，仍需判断输入数额处于哪一个区间，而这，似乎又要落入 If 的荆棘丛中。所幸数额构成一个从小到大的有序序列，我们可以结合循环（Repeat with）和判断两个模块，组合出判别款额落在哪个区间：

- 以各区间起步数额为键（key）、对应计算表达式为值（value）制作词典，顺序从上到下，由从大到小；

- 获取所有的键，逐项循环，由于词典键是从大到小排列的，循环时也会从最大的起步数字开始；

- 如果输入的数字大于当前键，则说明落在当前区间，可套用对应的计算表达式，并结束循环；

- 上一步中，输入数字若小于当前键，则继续循环，直到区间匹配为止。

如此一来，Shortcuts 就能在尽可能短的时间内确定表达式，并据此计算出费用，实际使用中快如加减乘除，毫无延迟；而传统的 If 式思路，其产物往往磕磕绊绊，明显感觉到进度条要转上一圈儿。

## 小结及其他

计算类动作是 Shortcuts 动作设计中别有魅力的一个分支。在 Shortcuts 的各种进阶模块——主要是 URL Scheme、正则表达式和 Get Contents of URL 中，惟计算类模块完全自给自足，即不依赖网络，也不仰赖第三方软件或 API，却依然潜力难测。而与循环、判断和字典等模块结合之后，数学思维和计算机思维一碰撞，结果往往非常有趣——且不失实用价值。

无论您是收钱的一方，常常需要计算相关费用，还是付钱的一方，想另行核对一遍、避免被宰客，或者仅仅是想用 Shortcuts 锻炼脑力，都不妨尝试自行设计计算工具。

---

[前往标准阅读页](https://utgd.net/article/20444?audience=web)
