鱼C论坛

 找回密码
 立即注册
查看: 4030|回复: 6

[已解决]类的问题

[复制链接]
发表于 2019-6-9 10:51:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
设计一个名为Stock类表示一个公司的股票,它包括:
1)        一个名为symbol的私有字符串变量表示股票的代码。
2)        一个名为name的私有字符串变量表示股票的名字。
3)        一个名为preClosingPrice的私有浮点变量存储前一天的股票收盘价格。
4)        一个名为curPrice的私有浮点变量存储当前的股票价格。
5)        一个构造方法创建一个具有特定股票代码、名字、前一天收盘价格和当前价格的股票。
6)        一个返回股票代码的get方法。
7)        一个返回股票名字的get方法。
8)        获取/设置股票前一天收盘价格的get和set方法
9)        获取/设置股票当前价格的get和set方法
10)        一个名为getChangePercent( )的方法返回从preClosingPrice到curPrice所改变的百分比(涨幅)

    编写这个类。同时编写一个测试程序,通过Stock类的创建一个股票对象,这个股票的代码是10001、它的名字是平头哥芯片、前一天的收盘价为62.8、当前价格是70.32,并且显示这个股票的股票名字、前一天收盘价、当前价和当前的涨幅。

我写的是:
class Stock:
     def __init__(symbol,name,preClosingPrice,curPrice):
         self.symbol=symbol
         self.name=name
         self.preClosingPrice=preClosingPrice
         self.curPrice=curPrice

     def getsymbol(symbol):
         return self.symbol
     def getname(name):
         return self.name
     def getname(preClosingPrice):
         return self.preClosingPrice
     def getname(curPrice):
         return self.curPrice
     def getChangePercent(self):
         a=((self.curPrice-self.preClosingPrice)/self.preClosingPrice)*100
         return a
         
mycla = Stock(10001,"平头哥芯片",62.8,70.32)
print(mycla.getname())
print(mycla.getpreClosingPrice())
print(mycla.getcurPrice())
print("{:.2%}".format(mycla.getChangePercent))

但运行起来是错误的,错误提示是:
    mycla = Stock(10001,"平头哥芯片",62.8,70.32)
TypeError: __init__() takes 4 positional arguments but 5 were given

怎样修改呢?
最佳答案
2019-6-9 12:41:47
import math

class QE:
     def __init__(self,a,b,c):
         self.a=a
         self.b=b
         self.c=c
     def geta(self):
         return self.a
     def getb(self):
         return self.b
     def getc(self):
         return self.c
     def getD(self):
         return self.b*self.b-4*self.a*self.c
     def getRoot1(self):
         d =  self.getD()
         if d <0:
             return 0
         else:
             return (-self.b+math.sqrt(d))/2/self.a
     def getRoot2(self):
         d =  self.getD()
         if d <0:
             return 0
         else:
             return (-self.b-math.sqrt(d))/2/self.a
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-6-9 10:55:34 | 显示全部楼层
是要加上参数self吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-9 10:56:25 | 显示全部楼层
设计一个类名字为QE,QE类是用来计算一元二次方程ax2+bx+c=0的平方根。这个类包括:
1)        私有变量a、b和c表示三个系数。
2)        以a、b和c为参数的构造方法。
3)        a、b和c各自的get方法。
4)        名为getD( )的方法返回判别式,即b2-4ac
5)        名为getRoot1( )和getRoot2( )的方法分别计算方程式的两个根。这些方法只能在判别式(b2-4ac)非负时才有用,判别式为负时,则这些方法返回0。
  编写这个类。同时编写一个测试程序提示用户输入a、b和c的值,然后显示基于这个判别式的结果。如果判别式为正,显示两个根;如果判别式为0,显示一个根;否则,显示“该方程式无根”

class QE:
     def __init__(a,b,c):
         self.a=a
         self.b=b
         self.c=c
     def geta(a):
         return self.a
     def getb(b):
         return self.b
     def getc(c):
         return self.c
     def getD():
         return self.b*self.b-4*self.a*self.c
判别式非负该怎样继续往下写呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-9 11:04:10 | 显示全部楼层
class Stock:
     def __init__(self,symbol,name,preClosingPrice,curPrice):
         self.symbol=symbol
         self.name=name
         self.preClosingPrice=preClosingPrice
         self.curPrice=curPrice

     def getsymbol(self):
         return self.symbol
     def getname(self):
         return self.name
     def getpreClosingPrice(self):
         return self.preClosingPrice
     def getcurPrice(self):
         return self.curPrice
     def getChangePercent(self):
         a=((self.curPrice-self.preClosingPrice)/self.preClosingPrice)*100
         return a
         
mycla = Stock(10001,"平头哥芯片",62.8,70.32)
print(mycla.getname())
print(mycla.getpreClosingPrice())
print(mycla.getcurPrice())
print(mycla.getChangePercent())
print("{:.2%}".format(mycla.getChangePercent()))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-9 11:44:36 | 显示全部楼层
shake_a_tree@16 发表于 2019-6-9 11:04
class Stock:
     def __init__(self,symbol,name,preClosingPrice,curPrice):
         self.symbol=sy ...

哦哦 原来是这样 明白了 谢谢您
请问可以再教教我第二题吗?
class QE:
     def __init__(self,a,b,c):
         self.a=a
         self.b=b
         self.c=c
     def geta(self):
         return self.a
     def getb(self):
         return self.b
     def getc(self):
         return self.c
     def getD(self):
         return self.b*self.b-4*self.a*self.
后边求根 和判断正负就不太会写了
感谢!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-9 12:41:47 | 显示全部楼层    本楼为最佳答案   
import math

class QE:
     def __init__(self,a,b,c):
         self.a=a
         self.b=b
         self.c=c
     def geta(self):
         return self.a
     def getb(self):
         return self.b
     def getc(self):
         return self.c
     def getD(self):
         return self.b*self.b-4*self.a*self.c
     def getRoot1(self):
         d =  self.getD()
         if d <0:
             return 0
         else:
             return (-self.b+math.sqrt(d))/2/self.a
     def getRoot2(self):
         d =  self.getD()
         if d <0:
             return 0
         else:
             return (-self.b-math.sqrt(d))/2/self.a
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-9 15:40:02 | 显示全部楼层

谢谢!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-30 05:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表