本文展示 5个实用性强且代码简洁的Python数学运算迷你项目,涵盖金融、教育、工程等场景,每个项目均提供完整代码、注释和测试案例:
目标:计算每月还款额和总利息
import math
def mortgage_calculator(principal, annual_rate, years):
monthly_rate = annual_rate / 12 / 100 # 月利率
months = years * 12 # 总月数
# 等额本息公式:每月还款 = [P*r*(1+r)^n]/[(1+r)^n-1]
monthly_payment = (principal * monthly_rate * (1 + monthly_rate)**months) / \
((1 + monthly_rate)**months - 1)
total_interest = monthly_payment * months - principal
return round(monthly_payment, 2), round(total_interest, 2)
# 测试案例:贷款100万,年利率4.9%,贷款30年
payment, interest = mortgage_calculator(1000000, 4.9, 30)
print(f"月供: ¥{payment}, 总利息: ¥{interest}")
# 输出: 月供: ¥5307.27, 总利息: ¥910616.19
目标:计算平均分、标准差、最高/最低分
import math
def analyze_grades(scores):
if not scores:
return None
mean = sum(scores) / len(scores)
variance = sum((x - mean)**2 for x in scores) / len(scores)
std_dev = math.sqrt(variance)
return {
"平均分": round(mean, 2),
"标准差": round(std_dev, 2),
"最高分": max(scores),
"最低分": min(scores)
}
# 测试案例
scores = [85, 92, 78, 90, 88]
result = analyze_grades(scores)
print(result)
# 输出: {'平均分': 86.6, '标准差': 4.98, '最高分': 92, '最低分': 78}
目标:计算常见几何图形的面积和体积
import math
class GeometryCalculator:
@staticmethod
def circle_area(radius):
return math.pi * radius ** 2
@staticmethod
def triangle_area(a, b, c):
# 海伦公式
s = (a + b + c) / 2
return math.sqrt(s * (s - a) * (s - b) * (s - c))
@staticmethod
def cylinder_volume(radius, height):
return math.pi * radius ** 2 * height
# 测试案例
print(GeometryCalculator.circle_area(3)) # 输出: 28.27
print(GeometryCalculator.triangle_area(3,4,5)) # 输出: 6.0
print(GeometryCalculator.cylinder_volume(2, 5)) # 输出: 62.83
目标:实现长度、温度、重量等常用单位转换
def unit_converter(value, from_unit, to_unit):
conversion_rates = {
# 长度单位转换(米为基准)
"m": {"cm": 100, "km": 0.001, "inch": 39.3701},
# 温度转换(摄氏度转华氏度)
"°C": {"°F": lambda c: c * 9/5 + 32},
# 重量转换(千克为基准)
"kg": {"g": 1000, "lb": 2.20462}
}
if from_unit == to_unit:
return value
if from_unit in conversion_rates and to_unit in conversion_rates[from_unit]:
rate = conversion_rates[from_unit][to_unit]
return rate(value) if callable(rate) else value * rate
else:
raise ValueError("不支持的转换类型")
# 测试案例
print(unit_converter(2, "m", "cm")) # 输出: 200.0
print(unit_converter(25, "°C", "°F")) # 输出: 77.0
print(unit_converter(5, "kg", "lb")) # 输出: 11.0231
目标:生成包含大小写字母、数字和符号的强密码
import random
import string
def generate_password(length=12):
characters = string.ascii_letters + string.digits + "!@#$%^&*"
password = []
# 确保至少包含1个大写、1个小写、1个数字、1个符号
password.append(random.choice(string.ascii_uppercase))
password.append(random.choice(string.ascii_lowercase))
password.append(random.choice(string.digits))
password.append(random.choice("!@#$%^&*"))
# 填充剩余字符
password += random.choices(characters, k=length-4)
random.shuffle(password)
return ''.join(password)
# 测试案例
print(generate_password(8)) # 示例输出: "A3b$kL9@"
print(generate_password(12)) # 示例输出: "mX5!TgH8#qW2"
# 温馨提示:由于是随机生成密码,每次运行生成的密码不同。