鱼C论坛

 找回密码
 立即注册
查看: 1049|回复: 3

根据小甲鱼

[复制链接]
发表于 2018-5-18 12:14:35 | 显示全部楼层 |阅读模式

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

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

x
class Ticket():
        def __init__(self,weekend=False,child=False):
                self.exp=100
                if weekend:
                        self.inc=1.2
                else:
                        self.inc=1
                if child:
                        self.discount=0.5
                        self.inc=1
                else:
                        self.discount=1
        def calc(self,n):
                return self.exp * n * self.inc * self * discount
根据原图做了修改,就是小孩不管是不是周末inc都是1,但是这样修改后面调用会报错,请问是什么原因?
c=Ticket(weekend=True,child=True)
c.calc(2)
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    c.calc(2)
  File "<pyshell#5>", line 14, in calc
    return self.exp * n * self.inc * self * discount
TypeError: unsupported operand type(s) for *: 'int' and 'Ticket'

原图

原图
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-5-18 12:33:33 | 显示全部楼层
额,你return的这个东西,明显不对嘛
  1. self.exp * n * self.inc * self * discount
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-18 12:34:08 | 显示全部楼层
最后一行笔误

return self.exp * n * self.inc * self * discount 应该是:return self.exp * n * self.inc * self.discount
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-18 16:17:05 | 显示全部楼层
本帖最后由 elang696 于 2018-5-18 16:18 编辑

首先我认为,按照这个题目的要求,初始化里不应该有child,反正票数也在方法调用里,干脆把child也放进去,这样只要实例化一次就可以计算结果了。

其次,楼主的错误就是楼上两位说的那样。报错TypeError: unsupported operand type(s) for *: 'int' and 'Ticket'的意思是,*号左边是int型,右边是你定义的Ticket,把他俩相乘是不支持的,也就是代码运行到self.inc * self时出现错误,self在类的定义中指的就是Ticket本身。

第三,通过复制代码发现,缩进是8个空格。按照我的想法修改后如下(没改缩进):
  1. class Ticket():
  2.         def __init__(self,weekend=False):
  3.                 self.exp=100
  4.                 if weekend:
  5.                         self.inc=1.2
  6.                 else:
  7.                         self.inc=1

  8.         def calc(self,n,child = False):
  9.                 if child:
  10.                         self.discount=0.5
  11.                         self.inc=1
  12.                 else:
  13.                         self.discount=1
  14.                 return self.exp * n * self.inc * self.discount
  15.                

  16. tickets = Ticket(True)
  17. price = tickets.calc(2) + tickets.calc(1,True)
  18. print(price)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-30 07:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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