金融计算器,python实现
最近在备考CFA,有时候经常忘记带金融计算器,而网上又没找到在线的金融计算器,因此自己用python写了一个,并且用tkinter做了个界面,主要实现的就根据4个数字,计算第五个,废话少说,上代码:
#金融计算器import pandas as pd
import numpy as np
from math import pow
import numpy_financial as npf
import tkinter as tk
import tkinter.messagebox#iy = float(input('please input I/Y')) / 100
#n = int(input('please input n:'))
#pmt = float(input('please input pmt:'))
#pv = float(input('please input pv:'))
#fv = float(input('please input fv:'))#iy收益率
#n期限
#pmt每期现金流
#pv现值
#fv终值def IY(n, pmt = 0, fv = 0, pv = 0):values = []values.append(-pv)for i in range(n):values.append(pmt)values[-1] += fviy = npf.irr(values)return round(iy, 6) * 100def calc():null_num = 0 n = E1.get()if n == '':null_num += 1elif n == '520':tk.messagebox.showinfo('熠仔', '我也爱你!')iy = E2.get()if iy == '':null_num += 1elif iy == '520':tk.messagebox.showinfo('熠仔', '我也爱你!')pmt = E3.get()if pmt == '':null_num += 1elif pmt == '520':tk.messagebox.showinfo('熠仔', '我也爱你!')pv = E4.get()if pv == '':null_num += 1elif pv == '520':tk.messagebox.showinfo('熠仔', '我也爱你!')fv = E5.get()if fv == '':null_num += 1elif fv == '520':tk.messagebox.showinfo('熠仔', '我也爱你!')if null_num > 1:tk.messagebox.showinfo('提示', '请输入其中四位')return 0if n == '': try:iy = float(iy)pmt = float(pmt)pv = float(pv)fv = float(fv)if (iy == 520 or pmt == 520 or pv == 520 or fv == 520):tk.messagebox.showinfo('熠仔', '我也爱你!')n = np.round(npf.nper(iy / 100, pmt, pv, fv), 6)E1.insert(0, n)return 1except ValueError:tk.messagebox.showinfo('提示', '请输入正确的数字')return 0if iy == '':try:n = int(n)pmt = float(pmt)pv = float(pv)fv = float(fv)iy = IY(n, pmt, fv, pv)if (n == 520 or pmt == 520 or pv == 520 or fv == 520):tk.messagebox.showinfo('熠仔', '我也爱你!')E2.insert(0, iy)return 1except ValueError:tk.messagebox.showinfo('提示', '请输入正确的数字')return 0if pmt == '':try:n = float(n)iy = float(iy)pv = float(pv)fv = float(fv)if (n == 520 or iy == 520 or pv == 520 or fv == 520):tk.messagebox.showinfo('熠仔', '我也爱你!')pmt = round(npf.pmt(iy / 100, n, pv, fv), 6)E3.insert(0, pmt)return 1except ValueError:tk.messagebox.showinfo('提示', '请输入正确的数字')return 0if pv == '':try:n = float(n)iy = float(iy)pmt = float(pmt)fv = float(fv)if (n == 520 or iy == 520 or pmt == 520 or fv == 520):tk.messagebox.showinfo('熠仔', '我也爱你!')pv = round(npf.pv(iy / 100, n, pmt, fv), 6)E4.insert(0, pv)return 1except ValueError:tk.messagebox.showinfo('提示', '请输入正确的数字')return 0if fv == '':try:n = float(n)iy = float(iy)pmt = float(pmt)pv = float(pv)fv = round(npf.fv(iy / 100, n, pmt, pv), 6)if (n == 520 or iy == 520 or pmt == 520 or pv == 520):tk.messagebox.showinfo('熠仔', '我也爱你!')E5.insert(0, fv)return 1except ValueError:tk.messagebox.showinfo('提示', '请输入正确的数字')return 0
top = tk.Tk()
top.title('熠仔计算器')
#top.geometry('280x200')
nScreenWid, nScreenHei = top.maxsize()
nCurWid = top.winfo_reqwidth()
nCurHeight = top.winfo_reqheight()
top.geometry("{}x{}{}{}".format(nCurWid, nCurHeight, nScreenWid/2 - nCurWid/2, nScreenHei/2 - nCurHeight/2))
L1 = tk.Label(top, text = 'n:').grid(row = 0)
E1 = tk.Entry(top)
E1.grid(row=0, column=1, padx=10, pady=5)L2 = tk.Label(top, text = 'I/Y:').grid(row = 1)
E2 = tk.Entry(top)
E2.grid(row=1, column=1, padx=10, pady=5)L3 = tk.Label(top, text = 'PMT:').grid(row = 2)
E3 = tk.Entry(top)
E3.grid(row=2, column=1, padx=10, pady=5)L4 = tk.Label(top, text = 'PV:').grid(row = 3)
E4 = tk.Entry(top)
E4.grid(row = 3, column = 1, padx = 10, pady = 5)L5 = tk.Label(top, text = 'FV:').grid(row = 4)
E5 = tk.Entry(top)
E5.grid(row = 4, column = 1, padx = 10, pady = 5)n = E1.get()
iy = E2.get()
pmt = E3.get()
pv = E4.get()
fv = E5.get()bt = tk.Button(top, text = '计算', width = 10, command = calc)
bt.grid(row = 5, column = 0, sticky = 'w', padx = 10, pady = 5)top.mainloop()
金融计算器,python实现相关推荐
- Pycharm 金融Python实战二:用Python编写一个金融计算器——编写函数 调用命令 实例年金现值 利率换算 净现值法 投资回报期 内部收益率及其法则(带程序和结果)
用Python编写一个金融计算器 1.编写不需要保存的Python函数 编写简单的计算未来现金的现值的数学公式 def pv_f(fv,r,n):return fv/(1+r)**n print(pv ...
- python的金融计算器_【长期不定时更新】用Python实现金融计算器的部分功能
课上第一次教金融计算器的使用,表示真的受不了.明明按照书上一步一步科学的按键,得出的答案永远是错的.虽然目前Python学的还是半吊子,不过还是决定写一点简单的代码来模拟金融计算器的功能.突然想到随着 ...
- python的金融计算器_货币的时间价值 —— 带着Python玩金融(1)
借钱需要付利息,这似乎是常识,可你知道这是为什么吗?其实这里蕴含着一个基本的金融概念,即货币的时间价值.通俗来讲就是随着时间的流逝,钱是可以生钱的.本文将介绍与此相关的几个概念:投资的未来价值.现值和 ...
- python的金融计算器_基于python实现的计算器
1.运用到的知识点 1.python正则表达式的应用,re.search('pattern',str).group() 2.函数中递归的使用 3.python函数.基本语法.控制语句if ...els ...
- python金融计算器
前言:进行金融股票的量化分析必须要懂得更多的公式计算,特此立贴记录学到的公式知识. 1.计算未来现金的现值公式: PV代表现值,FV代表未来获取的现金值,R指折现率,n指周期 def pv_f(fv, ...
- python的金融计算器_python 计算器
--coding:utf-8-- from Tkinter import * 创建横条型框架 def frame(root, side): w = Frame(root) w.pack(side = ...
- Github配置(git+vscode+python+jupyter)
①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...
- 【实验楼】python简明教程
①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...
- 【Kaggle Learn】Python 5-8
五. Booleans and Conditionals Using booleans for branching logic x = True print(x) print(type(x))''' ...
最新文章
- WSS页面定制系列(2)---定制单个列表的表单页面
- leetcode115. 不同的子序列
- Web Worker 你知道吗?
- VS2008+Vassistx使用技巧
- ChineseBERT: Chinese Pretraining Enhanced by Glyph and Pinyin Information
- java 调用百度语音
- 计算机如何永久删除文件无法找回,怎么找回永久删除文件 找回永久删除文件方法【详细步骤】...
- 2019—2020学年第一学期高一数学教学工作计划
- 知乎:电脑长时间不关机会缩短电脑寿命吗?
- Swift游戏实战-跑酷熊猫 07 平台的移动
- ardupilot python之px_uploader.py学习
- C1认证学习一(进制学习)
- 应届生入职制造业感悟
- 【如何下载钉钉云课堂视频】
- Codeforces Round #702 (Div. 3)D. Permutation Transformation
- 第十一届蓝桥杯——JAVA组真题
- 用友NC资产管理解决方案助机场行业盘活增效
- 【常用form表单】
- 建网站需要学习的软件有哪些
- aws lambda入门之基础