Python 计算思维训练——输入和错误处理 第4关:库函数 - 利率计算库#coding=utf-8 # 请在此处填写代码 #********** Begin **********# #********** End **********#
时间: 2024-10-08 19:23:04 浏览: 33
Python错误: SyntaxError: Non-ASCII character解决办法
在Python计算思维训练中,关于输入和错误处理的部分,你可以添加代码来确保用户输入的是有效数值,并处理可能出现的异常情况。这里是修改过的代码段:
```python
#********** Begin **********#
# 引入必要的内置模块
from typing import Union
def present_amount(A0: Union[int, float], p: float, n: int) -> Union[int, float]:
"""
计算最终数A
:param A0: 初始金额
:param p: 年利率
:param n: 总天数 (假设一年按365天计算)
:return: 终止后的金额
"""
try:
A0 = float(A0)
p = float(p)
n = int(n)
if n <= 0 or p < 0:
raise ValueError("天数和年利率需要是非负的.")
return A0 * ((1 + p / 365)**n)
except ValueError as e:
print(f"输入错误:{e}")
return None
def initial_amount(A: Union[int, float], p: float, n: int) -> Union[int, float]:
"""
计算初始数A0
:param A: 最终金额
:param p: 年利率
:param n: 总天数 (假设一年按365天计算)
:return: 初始的本金
"""
try:
A = float(A)
p = float(p)
n = int(n)
if n <= 0 or p < 0:
raise ValueError("天数和年利率需要是非负的.")
return A / ((1 + p / 365)**n)
except ValueError as e:
print(f"输入错误:{e}")
return None
def days(A0: Union[int, float], A: Union[int, float], p: float) -> int:
"""
计算总天数n
:param A0: 初始金额
:param A: 最终金额
:param p: 年利率
:return: 到达最终金额所需的天数 (假设一年按365天计算)
"""
try:
A0 = float(A0)
A = float(A)
p = float(p)
if A0 <= 0 or A <= 0 or p < 0:
raise ValueError("初始金额和最终金额以及年利率需要是非零的.")
return int((A / A0 - 1) * 365)
except ValueError as e:
print(f"输入错误:{e}")
return None
def annual_rate(A0: Union[int, float], A: Union[int, float], n: int) -> float:
"""
计算年利率p
:param A0: 初始金额
:param A: 最终金额
:param n: 总天数 (假设一年按365天计算)
:return: 年化收益率
"""
try:
A0 = float(A0)
A = float(A)
n = int(n)
if A0 <= 0 or A <= 0 or n <= 0:
raise ValueError("初始金额和最终金额以及天数需要是非零的.")
return ((A / A0)**(1/n) - 1) * 365
except ValueError as e:
print(f"输入错误:{e}")
return None
# 库测试模块,仅当单独运行时执行
if __name__ == '__main__':
while True:
try:
A0 = float(input("请输入初始金额:"))
p = float(input("请输入年利率:"))
n = int(input("请输入天数:"))
break
except ValueError:
print("无效输入,请输入数字.")
AA = present_amount(A0, p, n)
AA0 = initial_amount(A, p, n)
nn = days(A0, A, p)
pp = annual_rate(A0, A, n)
print('最终金额:', round(AA, 2))
print('初始金额:', round(AA0, 2))
print('天数:', nn)
print('年利率:', round(pp, 2))
#********** End **********#
```
这段代码包含了对用户输入的检查和错误处理,如果用户输入不符合要求(比如非数字),程序会提示输入错误并继续循环请求正确的输入。
阅读全文