鱼C论坛

 找回密码
 立即注册
查看: 2347|回复: 7

[已解决]关于票价的这个代码的问题

[复制链接]
发表于 2020-6-16 17:03:05 | 显示全部楼层 |阅读模式

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

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

x

  1. <p>class Ticket():
  2.         def __init__(self, weekend=False, child=False):
  3.                 self.exp = 100
  4.                 if weekend:
  5.                         self.inc = 1.2
  6.                 else:
  7.                         self.inc = 1
  8.                 if child:
  9.                         self.discount = 0.5
  10.                 else:
  11.                         self.discount = 1
  12.         def calcPrice(self, num):
  13.                 return self.exp * self.inc * self.discount * num

  14. >>> adult = Ticket()
  15. >>> child = Ticket(child=True)
  16. >>> print("2个成人 + 1个小孩平日票价为:%.2f" % (adult.calcPrice(2) + child.calcPrice(1)))
  17. 2个成人 + 1个小孩平日票价为:250.00</p><p>这个代码中有几个问题不太清楚</p><p>1:第15~16行赋值给变量的时候为什么后面Ticket括号里面一个什么都没有,一个要加child=True呢?这两个括号里面的内容分别是什么意思?为什么要这杨赋值啊2.在第二行的代码中用到了__int__这个函数在这里有什么作用呢?3.第二行后面定义变量的时候为什么weekend和child都赋值是false呢
  18. </p>
复制代码

最佳答案
2020-6-16 17:14:42


1:第15~16行赋值给变量的时候为什么后面Ticket括号里面一个什么都没有,一个要加child=True呢?

你看Ticket 类的 __init__方法设置的默认参数:__init__(self, weekend=False, child=False) 已经设置默认参数了,所以可以不传入参数

而这两个参数是干嘛的呢?是用来判断是否是周末 和是否是小孩的  你看 init 下面 if weekend  和 if child 就是判断这些条件

所以这里如果调用 adult = Ticket() 什么参数都不传入 那么说明你买的门票既不是儿童票,也不是周末的票

而第二个实例就是把 设置为小孩的意思,所以买的就是小孩的票价

这两个括号里面的内容分别是什么意思?为什么要这杨赋值啊
  1. def __init__(self, weekend=False, child=False):
  2.                 self.exp = 100
  3.                 if weekend:
  4.                         self.inc = 1.2
  5.                 else:
  6.                         self.inc = 1
  7.                 if child:
  8.                         self.discount = 0.5
  9.                 else:
  10.                         self.discount = 1
复制代码

你把 True 或者 False 代入 加上题意 理解代码,参数就是默认既不是小孩也不是周目的意思, 你重新赋值为 True 就说明周末或者 小孩的条件成立了,就买的是这些专门的票

而且不止可以赋值 True  你还可以赋值 任何 bool 类型值为 True 的值表示条件成立

2.在第二行的代码中用到了__int__这个函数在这里有什么作用呢?


__init__ 设置了函数可传入的参数 weekend 和 child  如果没有设置,那么这个类就无法传入参数

而且 __init__ 通过传入的参数重新初始化对应的打折折扣

3.第二行后面定义变量的时候为什么weekend和child都赋值是false呢


设置为 False 意思就是买的票 默认既不是小孩也不是周末的意思


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

使用道具 举报

 楼主| 发表于 2020-6-16 17:09:37 | 显示全部楼层
@Twilight6
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-16 17:14:42 | 显示全部楼层    本楼为最佳答案   


1:第15~16行赋值给变量的时候为什么后面Ticket括号里面一个什么都没有,一个要加child=True呢?

你看Ticket 类的 __init__方法设置的默认参数:__init__(self, weekend=False, child=False) 已经设置默认参数了,所以可以不传入参数

而这两个参数是干嘛的呢?是用来判断是否是周末 和是否是小孩的  你看 init 下面 if weekend  和 if child 就是判断这些条件

所以这里如果调用 adult = Ticket() 什么参数都不传入 那么说明你买的门票既不是儿童票,也不是周末的票

而第二个实例就是把 设置为小孩的意思,所以买的就是小孩的票价

这两个括号里面的内容分别是什么意思?为什么要这杨赋值啊
  1. def __init__(self, weekend=False, child=False):
  2.                 self.exp = 100
  3.                 if weekend:
  4.                         self.inc = 1.2
  5.                 else:
  6.                         self.inc = 1
  7.                 if child:
  8.                         self.discount = 0.5
  9.                 else:
  10.                         self.discount = 1
复制代码

你把 True 或者 False 代入 加上题意 理解代码,参数就是默认既不是小孩也不是周目的意思, 你重新赋值为 True 就说明周末或者 小孩的条件成立了,就买的是这些专门的票

而且不止可以赋值 True  你还可以赋值 任何 bool 类型值为 True 的值表示条件成立

2.在第二行的代码中用到了__int__这个函数在这里有什么作用呢?


__init__ 设置了函数可传入的参数 weekend 和 child  如果没有设置,那么这个类就无法传入参数

而且 __init__ 通过传入的参数重新初始化对应的打折折扣

3.第二行后面定义变量的时候为什么weekend和child都赋值是false呢


设置为 False 意思就是买的票 默认既不是小孩也不是周末的意思


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

使用道具 举报

 楼主| 发表于 2020-6-17 09:46:33 | 显示全部楼层
Twilight6 发表于 2020-6-16 17:14
你看Ticket 类的 __init__方法设置的默认参数:__init__(self, weekend=False, child=False) 已经设 ...

好的,还有一个问题就是你把15~16行括号后面的参数是在和__init__方法后面的参数比较的,为什么不是和下面的calcprice这个方法后面的参数作比较的呢?他们都是方法还有优先级吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-17 09:48:36 | 显示全部楼层
波大大12138 发表于 2020-6-17 09:46
好的,还有一个问题就是你把15~16行括号后面的参数是在和__init__方法后面的参数比较的,为什么不是和下 ...

__init__ 方法 函数实例化时候会自动调用,也在你实例化后就成功设置了票价问题  

下面那个方法是通过 init 初始化的数值进行计算的,没初始化数值怎么进行计算呢? 是吧~就是这个道理
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-17 09:59:36 | 显示全部楼层
Twilight6 发表于 2020-6-17 09:48
__init__ 方法 函数实例化时候会自动调用,也在你实例化后就成功设置了票价问题  

下面那个方法是通过 ...

什么叫做实例化啊,实例化是什么意思啊,代码中的哪个代码哪里体现着实例化啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-17 10:01:05 | 显示全部楼层
波大大12138 发表于 2020-6-17 09:59
什么叫做实例化啊,实例化是什么意思啊,代码中的哪个代码哪里体现着实例化啊
  1. adult = Ticket()
  2. child = Ticket(child=True)
复制代码

这两个都是实例化,将类对象 Ticket() 实例化为 adult  和 child
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-13 16:54:04 | 显示全部楼层
def calcPrice(self, num):
                return self.exp * self.inc * self.discount * num  这个不是成人的价格么,怎么还要 *  self.discount
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 08:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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