HyperionDev变量与控制结构Capstone 1项目:金融计算器选项功能实现求助
HyperionDev变量与控制结构Capstone 1项目:金融计算器选项功能实现求助
Hey sunil-rohra,我之前帮同学搞定过这个HyperionDev的金融计算器项目,你的问题刚好是很多新手会卡的点——选项分支的逻辑处理对吧?别担心,咱们一步步来把它捋顺!
一、先搞定主菜单:投资(Investment)/ 贷款(Bond)选项切换
首先要处理用户的主选择,这里要注意一个细节:用户可能输入大小写混合的内容(比如"Investment"或者"BOND"),所以最好把输入统一转成小写/大写,避免匹配失败。
示例代码片段:
# 显示主菜单 print("欢迎使用金融计算器!") print("请选择要进行的计算:") print("investment - 投资收益计算") print("bond - 房屋贷款还款计算") # 获取用户选择并统一格式 user_choice = input("请输入你的选择:").strip().lower() # 根据选择进入对应模块 if user_choice == "investment": print("进入投资收益计算模块") # 这里后续会补投资模块的逻辑 elif user_choice == "bond": print("进入房屋贷款还款计算模块") # 这里后续会补贷款模块的逻辑 else: print("无效的选择,请重新输入!")
解释:用strip()去掉输入前后的空格,lower()把所有输入转成小写,这样不管用户怎么输入大小写组合,都能正确匹配。如果输入错误,也会给出提示,增强容错性。
二、投资模块里的单利(Simple)/复利(Compound)选项实现
当用户进入投资模块后,接下来要处理利息类型的选择,逻辑和主菜单类似,同样要处理大小写问题,然后用对应的公式计算收益。
先回忆下公式:
- 单利:
总金额 = 本金 × (1 + 年利率 × 投资年限) - 复利:
总金额 = 本金 × (1 + 年利率)^投资年限(需要用到math模块的幂函数)
示例代码(接上面的investment分支):
import math # 获取投资相关参数 deposit = float(input("请输入存入的本金金额:")) annual_rate = float(input("请输入年利率(仅输入数字):")) / 100 # 转成小数格式 years = int(input("请输入投资年限:")) # 获取利息类型选择 interest_choice = input("请选择利息类型(simple/compound):").strip().lower() # 根据选择计算并输出结果 if interest_choice == "simple": total_amount = deposit * (1 + annual_rate * years) print(f"投资{years}年后的总金额为:{round(total_amount, 2)}") elif interest_choice == "compound": total_amount = deposit * math.pow((1 + annual_rate), years) print(f"投资{years}年后的总金额为:{round(total_amount, 2)}") else: print("无效的利息类型选择,请重新操作!")
三、贷款(Bond)模块的逻辑补全
当用户选择bond时,需要计算每月还款额,公式是:每月还款额 = (月利率 × 房屋现值) / (1 - (1 + 月利率)^(-还款月数)),这里要注意把年利率转成月利率。
示例代码(接上面的bond分支):
# 获取贷款相关参数 house_value = float(input("请输入房屋的现值:")) annual_rate = float(input("请输入年利率(仅输入数字):")) repay_months = int(input("请输入计划还款的月数:")) # 计算月利率 monthly_rate = (annual_rate / 100) / 12 # 计算每月还款额 monthly_repayment = (monthly_rate * house_value) / (1 - (1 + monthly_rate)**(-repay_months)) print(f"每月需还款金额为:{round(monthly_repayment, 2)}")
四、整合完整可运行的代码
你可以把这些部分整合起来,再加个循环让用户能重复计算(可选),比如:
import math while True: # 主菜单 print("\n=== 金融计算器 ===") print("可选计算类型:") print("investment - 投资收益计算") print("bond - 房屋贷款还款计算") print("quit - 退出计算器") user_choice = input("请输入你的选择:").strip().lower() if user_choice == "quit": print("感谢使用,再见!") break elif user_choice == "investment": print("\n=== 投资收益计算 ===") deposit = float(input("存入本金:")) annual_rate = float(input("年利率(数字):")) / 100 years = int(input("投资年限:")) interest_choice = input("利息类型(simple/compound):").strip().lower() if interest_choice == "simple": total = deposit * (1 + annual_rate * years) elif interest_choice == "compound": total = deposit * math.pow(1 + annual_rate, years) else: print("无效的利息类型,请重新选择!") continue print(f"投资{years}年后总金额:{round(total, 2)}") elif user_choice == "bond": print("\n=== 房屋贷款还款计算 ===") house_value = float(input("房屋现值:")) annual_rate = float(input("年利率(数字):")) repay_months = int(input("还款月数:")) monthly_rate = (annual_rate / 100) / 12 monthly_repayment = (monthly_rate * house_value) / (1 - (1 + monthly_rate)**(-repay_months)) print(f"每月还款金额:{round(monthly_repayment, 2)}") else: print("无效的选择,请重新输入!")
备注:内容来源于stack exchange,提问作者sunil-rohra




