python - 作业11 :计算利息
github指路 冲冲冲冲冲
----------------------------------原文–如下--------------------------------
我觉得我做作业的速度还是有待提高
(这学期都快过完了我什么时候才能在课上把博客写完5555
这节课作业名字我觉得可以叫做:
作业 - 在浙财算复利
(官方见下
结果呈现
(报错致死我觉得可以这么讲了,所以我打算先去写一下我解决这个问题的方法嘻嘻嘻
就这个错误影响了我的作业进程5555↓
Process finished with exit code -1073740791 (0xC0000409)
分析
言再归正传,先讲一下写作业的思路好了,拿到这个题,首先想的是layout这个东西
(为什么,不知道
看到老师给的示例图之后可以得到一个想法👇
(脑子里的分析,画出来大概是这样子
然后就可以确定下来我们要写的layout格式是QGridLayout()
写出来大概是这样的↓(里面的名字不用理,是我的代码里面写的
大致分布就是下面代码里面这样子= =
grid = QGridLayout()
grid.addWidget(self.principal, 0, 0)
grid.addWidget(self.pDoubleBox, 0, 1)
grid.addWidget(self.rate, 1, 0)
grid.addWidget(self.rDoubleBox, 1, 1)
grid.addWidget(self.year, 2, 0)
grid.addWidget(self.timeComboBox, 2, 1)
grid.addWidget(self.amount, 3, 0)
grid.addWidget(self.res, 3, 1)
self.setLayout(grid)
然后(前面的那些参数设置什么的……看着刘老师上课给的例子自己设置一下就能解决,跳过
updateui函数
重点讲一下那个updateui函数
(我在引用那里没出错,但是在我找到错误之前一直以为那里是错的,真绕,后来经证实错误地方在函数里面
首先这函数要做什么,就是更改了那啥本金、利息和存储年份里面的任何一项之后就要把复利算出来呈现在页面上(就是上面我手画的QLabel - 5 那里)
欧克,下面是updateui函数的代码(里面的重点部分,计算部分我略去了,我是用for循环算的感觉有点蠢所以就不丢人现眼了= =
def updateUi(self):
p = self.pDoubleBox.value()
r = self.rDoubleBox.value()/100
y = self.timeComboBox.currentText()#这里拿到的是字符串(自行处理一下就可以变成数字了
……#计算过程,答案存在ans变量里面
self.res.setText("$ {0:.2f}".format(ans))
好了
结尾的话就是官方四句话
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
白白~
氦-------------------回来更新-------------滴滴滴-------
2020/02/04 更新ccccccode
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/11/26 10:40
# @Author : ChenShan
# Function : Using PyQt5 interface to calculate compound interest
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Form(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.principal = QLabel("Principal :")
self.pDoubleBox = QDoubleSpinBox()
self.pDoubleBox.setRange(1000.00, 1000000.00)
self.pDoubleBox.setValue(10000.00)
self.pDoubleBox.setPrefix("$ ")
self.rate = QLabel("Rate :")
self.rDoubleBox = QDoubleSpinBox()
self.rDoubleBox.setRange(0.00, 60.00)
self.rDoubleBox.setValue(5.00)
self.rDoubleBox.setSuffix(" %")
self.year = QLabel("Years :")
self.timeComboBox = QComboBox()
self.timeComboBox.addItems(["1 year", "2 years", "5 years", "10 years", "20 years"])
self.amount = QLabel("Amount :")
self.res = QLabel("$ 10050")
grid = QGridLayout()
grid.addWidget(self.principal, 0, 0)
grid.addWidget(self.pDoubleBox, 0, 1)
grid.addWidget(self.rate, 1, 0)
grid.addWidget(self.rDoubleBox, 1, 1)
grid.addWidget(self.year, 2, 0)
grid.addWidget(self.timeComboBox, 2, 1)
grid.addWidget(self.amount, 3, 0)
grid.addWidget(self.res, 3, 1)
self.setLayout(grid)
self.pDoubleBox.valueChanged.connect(self.updateUi)
self.rDoubleBox.valueChanged.connect(self.updateUi)
self.timeComboBox.currentIndexChanged.connect(self.updateUi)
self.setWindowTitle("HOMEWORK-11 Interest")
def updateUi(self):
p = self.pDoubleBox.value()
r = self.rDoubleBox.value()/100
y = self.timeComboBox.currentText()
# print(p)
# print(r)
# print(y)
if y == "1 year":
y = 1
elif y == "2 years":
y = 2
elif y == "5 years":
y = 5
elif y == "10 years":
y = 10
elif y == "20 years":
y = 20
for i in range(0,y):
ans = p+p*r
p = ans
self.res.setText("$ {0:.2f}".format(ans))
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()