1 利息计算
这一部分先解决一个最核心的问题:题目到底该用“普通乘法”还是“幂运算”。
- 看到“单利”,就想到利息只按原始本金计算,通常直接乘时间。
- 看到“复利”,就想到利息会滚入本金继续生息,公式里通常会出现
**,这是幂运算。 - 看到“按日计息”“一年计息多次”,就先把年利率转换成对应周期利率,再代入公式。
案例1:单利计算3年后本息总和
前言
场景题目
张同学把 10000 元存入年利率 2.75% 的定期账户,按单利计算,存 3 年后想知道本息一共是多少。
先抓关键词
- “单利”说明利息不参加下一轮计息。
- “3年后”说明利息随时间线性增加,直接乘年数即可。
知识说明
单利是最基础的计息方式,只对原始本金计算利息,已产生的利息不会再计入下一期本金生息。
核心公式:
- 利息 = 本金 × 年利率 × 存款年限
- 本息总和 = 本金 + 利息
代入理解
先算 1 年利息:10000 × 0.0275 = 275 元;再算 3 年利息:275 × 3 = 825 元;最后本息总和:10000 + 825 = 10825 元。
例子
本金10000元,年利率2.75%,存期3年,求到期本息。
代码
principal = 10000 # 本金
rate = 0.0275 # 年利率
years = 3 # 存款年数
interest = principal * rate * years # 计算单利利息
total = principal + interest # 计算本息总和
print(total)结果
10825.0结果解读
程序先求出利息 interest,再把利息加回本金得到 total。输出中的 .0 只是浮点数形式,不影响金额含义。
易错提醒
2.75%在代码里必须写成0.0275,不能直接写2.75。- 单利是“乘年数”,不是“做幂运算”。
- 如果题目只问“利息”,输出
interest;如果问“本息总和”,输出total。
应用场景
- 张同学有 8000 元奖学金,存入年利率 2.1% 的定期账户,存 2 年,想知道到期后本息一共是多少。(结果:2 年后本息一共是 8336 元。)
- 李阿姨借给亲戚 12000 元,双方约定按年利率 3.15% 计算单利,4 年后一次归还,想知道对方应还多少钱。(结果:4 年后对方应还 13512 元。)
- 王先生买入 5000 元固定收益产品,产品按单利计算,年利率 2.4%,持有 5 年后,想知道总共能拿回多少钱。(结果:持有 5 年后本息合计 5600 元。)
- 赵女士准备把 20000 元作为孩子的学费储备,先按年利率 1.9% 存 3 年,想知道 3 年后账户余额是多少。(结果:3 年后账户余额是 21140 元。)
案例2:提前还款按日单利计算本息
前言
场景题目
刘同学用 10000 元消费贷买电脑,年利率 0.35%,用了 50 天后准备提前结清,想知道应还本息是多少。
先抓关键词
- “提前还款”说明不一定用完整的月或年计息。
- “按日单利”说明要先把年利率换成日利率,再乘实际天数。
知识说明
提前还款常用日利率计算,金融机构通常按一年 360 天折算日利率。
核心公式:
- 日利率 = 年利率 ÷ 360
- 利息 = 本金 × 日利率 × 实际天数
代入理解
先把年利率换成日利率:0.0035 ÷ 360 ≈ 0.00000972;再乘 50 天,可得到利息约 4.86 元;最后加回本金,就是应还总额。
例子
本金10000元,年利率0.35%,使用50天后提前还款,求应还总额。
代码
principal = 10000 # 本金
rate = 0.0035 # 年利率
days = 50 # 实际使用天数
interest = principal * (rate / 360) * days # 按日计息
total = principal + interest # 本息合计
print(total)结果
10004.861111111111结果解读
结果约为 10004.86 元,说明 50 天只产生了很少的利息。这类题最重要的是看清“按天”还是“按月”,单位一错,结果会差很多。
易错提醒
- 本案例按金融中常见的 360 天 换算,不是 365 天。
days是实际天数,不需要再除以 12。- 如果题目只问利息,应看
interest;如果问应还总额,应看total。
应用场景
- 刘同学用消费贷买电脑,贷款本金 6000 元,年利率 0.32%,用了 30 天后准备提前结清,想知道应还总额是多少。(结果:30 天后应还总额约为 6001.60 元。)
- 陈同学为报名培训班向朋友借了 15000 元,双方约定按年利率 0.45% 计息,80 天后归还,想知道利息是多少、本息合计是多少。(结果:80 天利息约为 15 元,本息合计约为 15015 元。)
- 周女士使用信用卡预借现金 8000 元,银行按年利率 0.36% 计息,45 天后一次性还清,想知道总共要还多少钱。(结果:45 天后总共约要还 8003.60 元。)
- 李先生购买了按日计息的短期资金产品,投入 20000 元,年利率 0.5%,持有 60 天后赎回,想知道到期收益是多少。(结果:60 天收益约为 16.67 元,赎回总额约为 20016.67 元。)
案例3:日复利计算30天后本息
前言
场景题目
张同学把 10000 元存入按日复利的理财产品,年利率 5%,持有 30 天后想知道本息一共是多少。
先抓关键词
- “日复利”说明每天结束后,利息会加入本金。
- “30天后”说明这个增长动作会重复 30 次。
知识说明
复利是“利滚利”,每期利息都会加入本金,下期一并计息。
日复利公式:
本息 = 本金 × (1 + 日利率) ^ 天数
也可以把它理解成:每天都乘一次 (1 + 日利率),连续乘 30 天,所以程序里会出现 ** days。
代入理解
每天的增长倍数是 1 + 0.05 / 360,虽然每天只涨一点点,但连续乘 30 次后,总额会比单利略高。
例子
本金10000元,年利率5%,按日复利计算30天后本息。
代码
principal = 10000 # 本金
rate = 0.05 # 年利率
days = 30 # 投资天数
total = principal * (1 + (rate / 360)) ** days # 日复利公式
print(total)结果
10041.750687580625结果解读
30 天后本息约为 10041.75 元。虽然时间不长,复利优势已经出现,只是因为周期短,所以差距还不算特别大。
易错提醒
- 复利常见写法是
** days,不是再乘一个days。 - 年利率要先除以
360,再参与每天的复利计算。 - 这个公式直接求的是本息总和,不是单独的利息。
应用场景
- 张同学有 12000 元,存到货币基金,年利率 4.8%,按日复利计算,30 天后想知道本息一共是多少。(结果:30 天后本息约为 12048.09 元。)
- 李女士把 8000 元放入活期理财账户,产品每天结算收益并滚入本金,年利率 3.6%,存 30 天后,想知道账户里有多少钱。(结果:30 天后账户里约有 8024.03 元。)
- 王先生把 20000 元闲钱放进现金管理产品,按日复利、年利率 4.2% 计算,持有 30 天后,想知道能多赚多少钱。(结果:30 天大约多赚 70.12 元。)
- 小陈开网店,月底前有 15000 元货款暂时不用,放入按日复利产品,年利率 2.8%,存 30 天后,想知道到月底资金会变成多少。(结果:到月底资金约变成 15035.04 元。)
案例4:一年多次计息复利
前言
场景题目
王女士有 10000 元闲钱,存入年利率 5%、一年结息 2 次的理财产品,存满 1 年后想知道本息一共是多少。
先抓关键词
- “一年多次计息”说明复利周期不是按年一次,而是分成若干段。
- “计息 2 次”表示 1 年被分成 2 个计息周期,每期利率是年利率的一半。
知识说明
一年内分 n 次计息,每期利率 = 年利率 ÷ n,总收益会随着计息次数增加而小幅提升。
核心公式:
- 本息 = 本金 × (1 + 年利率 ÷ 计息次数) ^ 计息次数
这个案例和“日复利”本质相同,只是把“每天复利”换成了“每半年复利一次”。
代入理解
本题一年计息 2 次,所以每次利率是 0.05 ÷ 2 = 0.025。第一次结息后本金变成 10250 元,第二次再按新本金计息,最终得到 10506.25 元。
例子
本金10000元,年利率5%,一年计息2次,求一年后本息。
代码
principal = 10000 # 本金
rate = 0.05 # 年利率
period = 2 # 一年内计息次数
total = principal * (1 + (rate / period)) ** period
print(total)结果
10506.25结果解读
一年内计息次数越多,利息越早加入本金,后续就能继续生息,所以最终收益会略高于一年只计息一次的情况。
易错提醒
period = 2表示“一年计息 2 次”,不是“存了 2 年”。- 幂指数写的是计息次数,不是月份数。
- 如果题目变成“季度复利”,只需要把
period改成4。
应用场景
- 王女士有 8000 元,存入年利率 4.8% 的理财产品,产品一年结息 2 次,存满 1 年后,想知道本息一共是多少。(结果:1 年后本息一共约是 8388.61 元。)
- 张先生买入 15000 元按季度结息的储蓄产品,年利率 3.6%,到期 1 年后,想知道账户余额是多少。(结果:到期后账户余额约是 15547.33 元。)
- 李阿姨看到一款年利率 5.2% 的产品,10000 元起存,按月结息并滚入本金,她准备存 20000 元满 1 年,想知道到期能有多少钱。(结果:按一年计息 12 次计算,1 年后约有 21065.15 元。)
- 赵先生准备把 12000 元装修备用金存 1 年,银行说明“每半年自动滚存一次利息”,年利率为 4.5%,他想知道一年后总共能拿回多少钱。(结果:1 年后总共可拿回 12546.08 元。)
2 按揭贷款计算
贷款题最容易混淆的,不是公式本身,而是还款方式的含义。
- 等额本息:每月还款额固定,适合预算要稳定的人。
- 等额本金:每月归还本金固定,前期月供高、后期月供低,总利息通常更少。
做这类题时,先把两个量换算好:
- 年利率要先除以
12,变成月利率。 - 贷款年数要乘以
12,变成总月数。
案例5:等额本息月供计算
前言
场景题目
李先生贷款 100 万元买房,贷款期限 10 年,年利率 4.9%,采用等额本息还款,想知道每个月固定要还多少钱。
先抓关键词
- “等额本息”表示每月还款额固定。
- “10年”必须换算成
120期,不能直接把10代入。 - “年利率 4.9%”要先变成“月利率”。
知识说明
等额本息:每月还款额固定,本金占比逐月上升,利息占比逐月下降。
月供公式:
月供 = 本金 × 月利率 × (1+月利率)^期数 ÷ [(1+月利率)^期数 − 1]
这个公式看起来长,但你可以把它理解成一句话:在固定期数内,每个月还同样多,应该还多少才刚好把贷款还清。
代入理解
先算月利率:0.049 ÷ 12;再算总期数:10 × 12 = 120。代入公式后,程序求出来的就是“每个月固定要还的钱”。
例子
贷款100万,10年(120期),年利率4.9%,求每月月供。
代码
loan = 1000000 # 贷款本金
rate = 0.049 # 年利率
months = 120 # 还款总月数
monthly_rate = rate / 12
total = (loan * monthly_rate * (1 + monthly_rate) ** months) / (((1 + monthly_rate) ** months) - 1)
print(total)结果
10557.739547184334结果解读
每月月供约为 10557.74 元。它的最大特点是“每个月数字一样”,便于家庭做长期预算,但总利息通常会比等额本金更高。
易错提醒
months是120,不是10。monthly_rate = rate / 12,不要把年利率直接带进月供公式。- 这里变量名
total存的是“每月月供”,不是“总还款额”。
应用场景
- 李先生贷款 80 万元买房,贷款期限 20 年,年利率 4.2%,采用等额本息还款,想知道每个月固定要还多少钱。(结果:每个月固定月供约为 4932.57 元。)
- 王女士准备贷款买车,贷款本金 30 万元,分 5 年还清,年利率 3.8%,银行告诉她“每月月供固定”,她想知道每个月具体要还多少。(结果:每个月约要还 5497.92 元。)
- 张先生比较房贷方案时,选定贷款 50 万元、15 年、年利率 4.5% 的等额本息方案,想知道每月月供是多少。(结果:每月月供约为 3824.97 元。)
- 刘同学想练习等额本息算法,设定贷款本金 10 万元、分 36 期、年利率 6%,想知道每个月固定支出多少。(结果:每个月固定支出约为 3042.19 元。)
案例6:等额本金第3期还款额
前言
场景题目
赵先生贷款 100 万元买房,贷款期限 10 年,年利率 4.9%,采用等额本金还款,想知道第 3 个月应还多少钱。
先抓关键词
- “等额本金”表示每个月还的本金相同。
- “第 3 个月”说明要先算前 2 个月已经还掉多少本金,再算当月利息。
知识说明
等额本金:每月偿还本金相同,利息按剩余本金计算,月供逐月递减。
公式:
月供 = 每月固定本金 + 剩余本金 × 月利率
这类题的关键不是背整套公式,而是先想清楚:到了第 i 个月时,还剩多少本金没有还。
代入理解
每月固定本金 = 1000000 ÷ 120 ≈ 8333.33 元。到第 3 个月开始前,前 2 个月已经还了两份本金,所以剩余本金是 1000000 - 8333.33 × 2。用剩余本金乘月利率得到第 3 个月的利息,再加上固定本金,就是当月还款额。
例子
贷款100万,10年,年利率4.9%,求第3个月还款额。
代码
loan = 1000000 # 贷款本金
rate = 0.049 # 年利率
months = 120 # 总月数
i = 3 # 第3个月
monthly_principal = loan / months
interest = (loan - monthly_principal * (i - 1)) * rate / 12
total = monthly_principal + interest
print(total)结果
12348.611111111111结果解读
第 3 个月要还约 12348.61 元。因为前期剩余本金还很多,所以利息部分较高;随着月份推进,剩余本金越来越少,月供会逐月下降。
易错提醒
- 计算剩余本金时要用
(i - 1),因为第i个月开始前,只还完了前i-1个月的本金。 - 等额本金不是每月还款额都一样,变化的是总月供,不变的是每月本金。
- 比较贷款方案时,不能只看某一个月,还要看总利息。
应用场景
- 赵先生贷款 80 万元买房,期限 20 年,年利率 4.2%,采用等额本金还款,想知道第 3 个月应还多少钱。(结果:第 3 个月约应还 6110 元。)
- 孙女士打算选择等额本金,贷款 60 万元,期限 15 年,年利率 3.9%,她想先算出第 1 个月、第 2 个月和第 3 个月分别要还多少。(结果:第 1 个月约还 5283.33 元,第 2 个月约还 5272.50 元,第 3 个月约还 5261.67 元。)
- 周先生收入较高,希望少付总利息,于是考虑贷款 50 万元、10 年、年利率 4.5% 的等额本金方案,他想先看第 6 个月的还款额,再判断自己能否承受前期压力。(结果:第 6 个月还款额约为 5963.54 元。)
- 李阿姨准备替孩子比较两种房贷方式,看到等额本金“前高后低”的特点后,设定贷款 30 万元、5 年、年利率 3.6%,想先算清楚第 12 个月的具体还款金额。(结果:第 12 个月还款额约为 5735 元。)
3 博彩量化分析
这一部分的重点不是“怎么下注”,而是用 Python 看清两个概念:
- 概率:长期来看,一件事大约会发生多少次。
- 期望:平均每做一次,是赚钱还是亏钱。
要把“偶尔赢一次”和“长期值得做”区分开,这正是量化分析的入门思维。
案例7:固定数字猜骰子1000万次概率
前言
场景题目
张同学设计了一个猜骰子小游戏,玩家每次固定猜 1 点,系统随机掷骰子 1000 万次,他想知道大约能猜中多少次。
先抓关键词
- “固定数字”表示每次都猜同一个数,本质上是在验证单次事件概率。
- “1000 万次”表示样本足够大,实验频率会更接近理论概率。
知识说明
骰子 1-6 均匀分布,理论猜中概率 1/6 ≈ 16.67%,长期试验频率会逐渐趋近这个概率。
代码阅读提示
count记录总共猜了多少次。win记录猜中多少次。random.randint(1, 6)表示随机生成 1 到 6 的一个点数。num = 1表示每次都固定猜数字 1。
代码
import random
count = 0 # 猜次数
win = 0 # 猜中次数
for i in range(10000000): # 模拟1000万次
rand = random.randint(1, 6)
num = 1
count += 1
if num == rand:
win += 1
print(f"{win}/{count}")结果
1669012/10000000结果解读
把结果换算成比例,大约是 16.69%,与理论值 16.67% 很接近。这说明随机模拟做得足够多时,实验结果会向理论概率靠拢。
易错提醒
- 概率是长期规律,不代表每 6 次一定中 1 次。
- 每次运行程序,结果会略有波动,这是随机模拟的正常现象。
- 1000 万次是为了让结果更稳定,不是为了“保证”完全等于理论值。
应用场景
- 张同学设计了一个猜骰子小游戏,规定玩家每次固定猜数字 2,他想模拟 600 万次后,看看大约能猜中多少次。(结果:理论上约猜中 100 万次。)
- 李老师上课时提出问题:如果一直猜 5 点,掷骰子 1200 万次,最终猜中的概率大约是多少,是否接近
1/6?(结果:理论概率约为 16.67%,理论上约猜中 200 万次。) - 王同学怀疑“连续几次没中,下一次更容易中”,于是设定固定猜 4 点并模拟 300 万次,想看看命中率大约是多少。(结果:理论命中率约为 16.67%,理论上约猜中 50 万次。)
- 某小游戏策划者想验证规则是否公平,于是设置固定猜 6 点、系统随机掷骰子 1800 万次,想知道最终中奖比例大约是多少。(结果:理论中奖比例约为 16.67%,理论上约猜中 300 万次。)
案例8:彩票购买必亏模拟
前言
场景题目
现在模拟 5 名彩民各自拿着 10000 元长期购买彩票,设定每次花 1 元、中奖概率 1%、每次中奖得 10 元,想看看最后本金会怎样变化。
先抓关键词
- “长期购彩”强调看长期平均结果,不看单次运气。
- “负期望”表示平均每次投入后,财富是在下降的。
知识说明
彩票胜率低、赔率设定不利于彩民,长期购买会不断消耗本金。
从这个案例的参数看:
- 每次中奖概率 =
0.01 - 每次中奖金额 =
10 - 每次购买彩票成本 =
1
所以每次购买的期望回报约为:0.01 × 10 = 0.1 元
而每次先付出 1 元,平均净收益约为:0.1 - 1 = -0.9 元
这就是“负期望”的直观含义:平均做一次,钱会变少。
代码阅读提示
player = 5表示模拟 5 个彩民。- 每个彩民初始本金是
10000元。 np.random.binomial(1, win_rate)可以理解为“按给定胜率做一次中或不中的抽奖”。- 一旦
money <= 0,说明本金耗尽,循环结束。
代码
import numpy as np
player = 5 # 彩民人数
win_rate = 0.01 # 胜率,相当于1/100
win_once = 10 # 每次中奖金额
price = 1 # 每次购买金额
for i in range(player):
money = 10000
count = 0
maxtime = 1000000
for j in range(maxtime):
count += 1
money -= price
if money <= 0:
break
w = np.random.binomial(1, win_rate)
if w:
money += win_once
print(f"彩民{i}:交易{count}次,余额{money}")结果
彩民0:交易11230次,余额0
彩民1:交易11080次,余额0
彩民2:交易10940次,余额0
彩民3:交易10970次,余额0
彩民4:交易11150次,余额0结果解读
虽然每个人中彩次数不完全一样,但在这组参数下,长期结果都指向同一个方向:本金最终被持续亏损消耗殆尽。个别时刻可能会中奖,但无法改变长期平均亏损的事实。
易错提醒
- “中奖过”不等于“赚钱了”,要看累计奖金是否覆盖累计投入。
- 随机模拟每次运行都可能略有不同,但长期趋势不会变。
- 学这个案例的重点是理解“期望值”和“长期结果”,不是关注短期运气。
应用场景
- 赵同学拿出 5000 元购买彩票,设定每次花 1 元、中奖概率 1%、每次中奖得 10 元,他想知道长期买下去最后还剩多少钱。(结果:按平均每次净亏 0.9 元估算,大约购买 5556 次后本金接近 0 元。)
- 王先生准备拿 8000 元参与抽奖,每次花 2 元、中奖概率 2%、每次中奖得 15 元,他想知道大约能坚持多少次、最后余额会怎样。(结果:按平均每次净亏 1.7 元估算,大约购买 4706 次后本金接近 0 元。)
- 李同学觉得“只要坚持买,总有机会回本”,于是拿 12000 元做模拟,设定每次花 5 元、中奖概率 5%、每次中奖得 60 元,想看看最后是赚钱还是亏钱。(结果:按平均每次净亏 2 元估算,大约购买 6000 次后本金接近 0 元,长期仍是亏损。)
- 陈女士做家庭财商教育时,设定本金 20000 元、每次花 10 元、中奖概率 8%、每次中奖得 100 元,想说明这类玩法长期结果会怎样。(结果:按平均每次净亏 2 元估算,大约购买 10000 次后本金接近 0 元。)
